Sql的基礎知識提公升(二)

2022-09-03 07:15:10 字數 3925 閱讀 7393

二、提公升

1、說明:複製表(只複製結構,源表名:a 新錶名:b) (access 可用)

法一:select * into b from a where 1<>1(僅用於 sqlserver)

法二:select top 0 * into b from a

2、說明:拷貝表(拷貝資料,源表名:a 目標表名:b) (access 可用) insert into b(a, b, c) select d,e,f from b;

4、說明:子查詢(表名 1:a 表名 2:b)

select a,b,c from a where a in (select d from b )

或者: select a,b,c from a where a in (1,2,3)

5、說明:顯示文章、提交人和最後回覆時間

select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、說明:外連線查詢(表名 1:a 表名 2:b)

select a.a, a.b, a.c, b.c, b.d, b.f from a left out join b on a.a = b. c

8、說明:between 的用法,between 限制查詢資料範圍時包括了邊界值,not bet ween 不包括

select * from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 數值 1 and 數值 2

9、說明:in 的使用方法

select * from table1 where a [not] in (『值 1』,』值 2』,』值 4』,』值 6』)

10、說明:兩張關聯表,刪除主表中已經在副表中沒有的資訊

delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、說明:四表聯查問題:

select * from a left inner join b on a.a=b.b right inner join c on

a. a=c.c inner join d on a.a=d.d where .....

12、說明:日程安排提前五分鐘提醒

sql: select * from 日程安排 where datediff('minute',f 開始時間,getdat e())>5

13、說明:一條 sql 語句搞定資料庫分頁

select top 10 b.* from (select top 20 主鍵字段,排序字段 from 表名 order by 排序 字段 desc) a,表名 b where b.主鍵字段 = a.主鍵字段 order by a.排序字段

具體實現:

關於資料庫分頁:

declare @start int,@end int

@sql nvarchar(600)

set @sql=』select top』+str(@end-@start+1)+』+from t where rid not

in(select top』+str(@str-1)+』rid from t where rid>-1)』

exec sp_executesql @sql

注意:在 top 後不能直接跟乙個變數,所以在實際應用中只有這樣的進行特殊 的處理。rid 為乙個標識列,如果 top 後還有具體的字段,這樣做是非常有好處 的。因為這樣可以避免 top 的字段如果是邏輯索引的,查詢的結果後實際表中 的不一致(邏輯索引中的資料有可能和資料表中的不一致,而查詢時如果處在 索引則首先查詢索引)

14、說明:前 10 條記錄 select top 10 * form table1 where 範圍

15、說明:選擇在每一組 b 值相同的資料中對應的 a 最大的記錄的所有資訊(類 似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名, 等等.)

select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

16、說明:包括所有在 tablea 中但不在 tableb 和 tablec 中的行並消除所有 重複行而派生出乙個結果表

(select a from tablea ) except (select a from tableb) except (select a from tablec)

17、說明:隨機取出 10 條資料 select top 10 * from tablename order by newid()

18、說明:隨機選擇記錄 select newid()

19、說明:刪除重覆記錄

1),delete from tablename where id not in (select max(id) from tablena me group by col1,col2,...)

2),select distinct * into temp from tablename

delete from tablename

insert into tablename select * from temp

評價: 這種操作牽連大量的資料的移動,這種做法不適合大容量但資料操作

3),例如:在乙個外部表中匯入資料,由於某些原因第一次只匯入了一部分,但 很難判斷具體位置,這樣只有在下一次全部匯入,這樣也就產生好多重複的字 段,怎樣刪除重複字段

alter table tablename

--新增乙個自增列

add column_b int identity(1,1)

delete from tablename where column_b not in( select max(column_b)

from tablename group by column1,column2,...)

alter table tablename drop column column_b

20、說明:列出資料庫裡所有的表名

select name from sysobjects where type='u' -- u 代表使用者

21、說明:列出表裡的所有的列名

select name from syscolumns where id=object_id('tablename')

22、說明:列示 type、vender、pcs 字段,以 type 字段排列,case 可以方便地 實現多重選擇,類似 select 中的 case。

select type,sum(case vender when 'a' then pcs else 0 end),

sum(case ve nder when 'c' then pcs else 0 end),

sum(case vender when 'b' then pcs else 0 end)

from tablename group by type

顯示結果:

type vender pcs

電腦 a 1

電腦 a 1

光碟 b 2

光碟 a 2

手機 b 3

手機 c 3

23、說明:初始化表 table1

truncate table table1

24、說明:選擇從 10 到 15 的記錄

select top 5 * from (select top 15 * from table order by id asc)

table_別名 order by id desc

python 基礎知識提公升

1.乙個資料乙個字段 2.只要有主鍵的 3.減少重複叫什麼 全域性直譯器鎖cpython 有什麼用 單核的情況下實現多工nb 怎麼解決 換直譯器鎖jpython 程序加協程 個人建議 執行緒用其他語言實現,python呼叫 遞迴拷貝每一層的資料淺拷貝 拷貝第一層的資料跟引用的區別 引用 多個變數指向...

SQL基礎知識

本篇文章是講解sql的基礎知識,但也講得不全面,我只記錄了自己不懂的或者不熟悉的東西。一 在sql中簡單的查詢 1.重複的記錄 distinct 可以通過在選擇列表前的select語句中插入關鍵字distinct來消除重複的查詢結果記錄。比如 select distinct city from ci...

SQL基礎知識

sql作用 1.面向資料庫執行查詢 2.可從資料庫取回資料 3.可在資料庫中插入新的記錄 4.可更新資料庫中的資料 5.可從資料庫刪除記錄 6.可建立新資料庫 7.可在資料庫中建立新錶 8.可在資料庫中建立儲存過程 9.可在資料庫中建立檢視 10.可以設定表 儲存過程和檢視的許可權。資料庫操作語句 ...