SQL常用語句

2021-10-05 14:26:45 字數 3606 閱讀 7725

1、join on 內連線、左右連線、外連線(union)

(1)inner join:如果表中有至少乙個匹配,則返回行。

inner join 與 join 是相同的。

select a.name, a.count, b.date

from inner join b

on a.id=b.id

order by a.count ;

(2)left join:即使右表中沒有匹配,也從左表返回所有的行。

select a.name, a.count, b.date

from a

left join b

on a.id=b.id

order by a.count desc ;

(3)right join:即使左表中沒有匹配,也從右表返回所有的行。

select a.name, a.count, b.date

from a

right join b

on a.id=b.id

order by a.count desc ;

(4)full join:只要其中乙個表中存在匹配,則返回行。

mysql 已經沒有全連線了但是實現不了,不過可以換union種方式來查詢。

(select * from a left join b on a.id=b.id)

union

(select * from a right join b on a.id=b.id ) ;

2、where 的各種運算
(1)條件查詢:=、>=、<=、>、<、<>(不等於)。

select * from table where a = 1; 或者 where a = '1' ;

(2)邏輯運算:

優先順序:() > not > and > or

and:與 同時滿足條件。

select * from table where a > 100 and a < 200 ;

or:或 滿足其中乙個。

select * from table where a > 100 or a < 200 ;

not:非 不滿足這個條件的值。

select * from table where not a > 100 ;

(3)特殊條件:

is bull:為空。

select * from table where a is null;

between and:在範圍之間,包含邊界值。

select * from table where a between 100 and 200 ;

in:給定等於的值。

select * from table where a in (100,200,300) ;

like:模糊查詢。

%:表示多個值,_下劃線表示乙個字元單位;

a%:正規表示式,查詢以a開頭的所有內容;

%a%:查詢包含a的所有內容;

%a_:查詢倒數第二位為a的所有內容;

select * from table where a like 'a%' ;

3、order by asc公升序(預設公升序) | desc降序
select * from a order by a.id,a.name;

先按照 a . id 進行排序,在排序後的基礎上再對a.name進行排序。

4、insert into 兩種編寫形式和select into 的區別
第一種:無需指定插入資料的列名,提供插入的值即可。

insert into table values (value1,value2,value3...);

第二種:提供列名。

insert into table (column1,column2,column3...) values (value1,value2,value3...);

insert into 和 select into 的區別:

insert into table1 select * from table2 where a = 1; //加入一行資料到table1,需要table1必須存在。

select * into table1 from table2 where a = 1; //加入一行資料到table1,table1不存在。

5、update 的語法和注意事項
update table set column1 = value1,column2 = value2  where a = 1;

如果不加where語句,則會更新set列的全部對應資料值。

在mysql中,可以設定sql_safe_updates = 1;來開啟必須加入where語句設定,若不加where,則會報錯。

6、delete 語法
delete from table where a = 1;  //刪除a=1的列。

delete from table; //刪除表中所有的資料,但表結構、屬性、索引將保持不變。

7、limit 選取指定的條數資料(mysql、sql server 、ms access和oracle各不同)
mysql 環境:

select * from table limit 10 ;

oracle 環境:

select * from table where rownum <=5 ;

sql server / ms access 環境:

select top 50 percent * from table ;

8、delete和truncate區別

(1)delete 刪除內容但是不釋放空間,例如:自動增長的 id 被刪除後,新增資料後,id 不連續。

而truncate刪除會釋放空間,id 增長重新開始。

(2)truncate 刪除的速度更快,是資料定義語言(ddl),不會觸發事務。而delete 屬於資料操作語言dml,操作屬於事務,提交之後才會生效,效率慢。

(3)delete 可以使用 where 進行指定列刪除,而truncate只能一次性刪除全部資料。

(4)執行速度:drop > truncate > delete ;

9、drop 刪除語法(mysql、sql server 、ms access和oracle不同之處)

區別:

mysql:

alter table a drop index b ; //刪除表 a 的索引 b

db2 / oracle:

drop index b ; //刪除索引 b

ms access:

drop index a.b ; //刪除 a 表的索引 b

ms access:

drop index b on a ; //刪除 a 表的索引 b

共同之處:

truncate table a ; // 情況表 a

drop table a ; //刪除表a

drop database a ; //刪除資料庫a

sql常用語句

use myoa select from delete from department where departmentid 1 insert department departmentid,departmentname values 1,技術部 update department set depa...

sql常用語句

在sqlserver,簡單的組合sp spaceused和sp msforeachtable這兩個儲存過程,可以方便的統計出使用者 資料表的大小,包括記錄總數和空間占用情況,非常實用,在sqlserver2k和sqlserver2005中都測試通過。1.exec sp spaceused 表名 sq...

sql常用語句

第一種 行列互換思想,外層group by,使用case when then 我有乙個表,有兩個字段 收費專案 唯一值 收費金額。我想用sql按收費專案不同生成不同的字段,對應值是金額。如 房租 100 水電費 50 雜費 50 生成後的格式是 房租 水電費 雜費 100 50 50 請問,如何寫這...