Mysql sql語句整合 二

2021-10-12 10:18:51 字數 4547 閱讀 7169

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;

3、說明:跨資料庫之間表的拷貝

(具體資料使用絕對路徑)

(access可用)

insert into b

(a, b, c) select d,e,f from b in 『具體資料庫』 where 條件

例子:.

.from b in.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

)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

outjoin b on a.a = b.c

7(表名1:a )

select *

from

(select a,b,c from a)

t where t.a >1;

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

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 .....

sql: select *

from 日程安排 where datediff

('minute'

,f開始時間,

getdate()

)>

513、說明:一條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 tablename 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 vender 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

323、說明:初始化表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

MySql Sql語句總結

建表語句 create table class id int primary key,class char 255 name varchar 4000 hobby text int 和 integer 是一樣的,只是為了簡寫罷了,主鍵宣告直接跟在定義後面,char和varchar char是固定長度...

MySQL SQL語句優化

檢視表定義 show create table users 檢視表的索引 show index from users 你要獲取第乙個表的所有資訊,你說全表掃瞄快呢還是索引掃瞄快呢?所以當你查詢庫 包括left join中的臨時庫 的所有資訊時,資料庫會選擇最優方法 全表掃瞄!s表dept id na...

MySQL sql語句筆記

sql 插入insert into 表名 列名 values 值列表 關鍵字 可省略 insert into stu name,age,city values 18,1 更新 update 表名 set 列名 更新值 where 更新條件 update stu set name sdfsdf age...