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 請問,如何寫這...