當前位置:首頁 » 編程語言 » sql沒主鍵查詢數據
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql沒主鍵查詢數據

發布時間: 2022-08-12 13:27:43

A. sql資料庫表可以沒有主鍵嗎

可以沒有。
但是不推薦,因為那樣會使查詢效率低下
如果數據量不大的話可以不加

B. sql 我select一個表,沒有主鍵,id有重復的(多個不同id都有重復),我想取出同id但是date列值最大的數據

問得不太清楚,你看看

列出不同ID的最大date列值的數據:select [id],max(date) from table_temp group by [id]

取最大date值那條:select * from table_temp where [id]=(select top 1[id] from table_temp order by date desc)

C. 在sql查詢分析器建表不用設主鍵

char(10)表示會佔10個字元,如果輸入的字元不到十個,它也還是會佔用10個字元,只要不超過指定長度就可以了。樓主出現的問題不可能是因為這個。不建立主鍵創建的表插入數據是不存在什麼問題的。但是如果插入了重復的數據,在修改的時候系統就會因為無法識別修改的是哪條記錄而報錯了。

D. MSSQL查詢所有沒有主鍵的表

說一下大概語句,具體你自己該,假設10個資料庫的名稱是db1,db2,...,db10,這里可以根據你資料庫名稱改,下面的語句也要改。
創建一個表存放資料庫名,表名
create table tb1
(
id [int] IDENTITY (1, 1),
dbname varchar(100),
tbname varchar(100)
)

--- 把資料庫db1的所有表名插入tb1表
insert tb1 (dbname,tbname)
select 'db1',name from db1.dbo,sysobjects where xtype='u'

insert tb1 (dbname,tbname)
select 'db2',name from db2.dbo,sysobjects where xtype='u'

insert tb1 (dbname,tbname)
select 'db3',name from db3.dbo,sysobjects where xtype='u'

insert tb1 (dbname,tbname)
select 'db4',name from db4.dbo,sysobjects where xtype='u'

insert tb1 (dbname,tbname)
select 'db5',name from db5.dbo,sysobjects where xtype='u'

insert tb1 (dbname,tbname)
select 'db6',name from db6.dbo,sysobjects where xtype='u'

insert tb1 (dbname,tbname)
select 'db7',name from db7.dbo,sysobjects where xtype='u'

insert tb1 (dbname,tbname)
select 'db8',name from db8.dbo,sysobjects where xtype='u'

insert tb1 (dbname,tbname)
select 'db9',name from db9.dbo,sysobjects where xtype='u'

insert tb1 (dbname,tbname)
select 'db10',name from db10.dbo,sysobjects where xtype='u'

這樣tb1表裡面就有資料庫名,列名。創建一個存儲過程,循環搜索:
create PROCEDURE TESTPERCUDURE
as
declare @col integer
declare @colmax integer
declare @tablename varchar(100)
declare @sql as VARCHAR(200)
BEGIN
set @col=1
set @colmax = (select max(id) from tb1)
set @tablename= ''
while @col<=@colmax
begin
set @tablename= (select dbname+'.dbo.'+tbname from tb1 where id = @col)
set @sql='select * FROM '+@tablename+' where xname = 'aaa' --通過循環獲取你的表名和資料庫名,之後組裝成sql語句,然後執行.
EXECUTE sp_executesql @sql
SET @col=@col+1
end
end

E. sql資料庫的表不設主鍵會怎麼樣

主鍵可以唯一標識某一行記錄,所以可以確保執行數據更新、刪除的時候不會出現張冠李戴的錯誤。主鍵除了上述作用外,常常與外鍵構成參照完整性約束,防止出現數據不一致。

查詢的時候 肯定要建立一個聚集索引 資料庫如果有欄位保證不一樣 就可以不用主鍵做聚集索引, 但如果欄位不能保證每行的唯一性, 那麼就無法建立聚集索引, 搜索資料庫是件痛苦的事情...

建立主鍵和索引 是設計數據表的 一個規范

F. SQL多表查詢 無外鍵、主鍵

這個要看具體的查詢條件而定。去冗餘有很多種方法,視具體情況而定,你可以把你的查詢條件描述清晰點

G. SQL查詢語句:資料庫中兩個表,沒有主鍵,要用 where 表1.班別=表2.班別 and 表1.姓名=表2.姓名 來查詢

select * from 表1
union
select * from 表2

如果兩個表中名字一樣的同學成績一樣的話,就只會出一條;如果成績不一樣,就會出兩條。你可以試試,應該是沒問題

H. 資料庫的表如果沒有主鍵查詢速度會慢嗎

我們搭建一個 MySQL 5.7 的環境,此處省略搭建步驟。

寫個簡單的腳本,製造一批帶主鍵和不帶主鍵的表:

可以看到執行時間變成了 0.67s。

整理

我們診斷的關鍵點如下:

1. 對於 information_schema 中的元數據表,執行計劃不能提供有效信息。

2. 通過查看 MySQL 改寫後的 SQL,我們猜測了優化器發生了誤判。

3. 我們增加了 hint,指導 MySQL 正確進行優化判斷。

但目前我們的實驗僅限於猜測,猜中了萬事大吉,猜不中就無法做出好的診斷。

I. sql中查詢兩個欄位,但兩個欄位分別來源不同表中的數據和,且兩個表沒有主鍵關聯。

日期不相等的話,就找第3張表,或者做一張整合表來關聯類似編碼,ID之類的