1: SQL Select 語句網絡
distinct: 關鍵字是查詢字段不一樣的結果集 . select distinct LanType,SongName from TableSong函數
distinct 做用於後面跟接的字段,並不是只做用於第一個字段。
eg: 當想要查詢LanType 不一樣的結果集,同時須要Songname 字段時怎麼寫 ???spa
limit : select distinct LanType,SongName from TableSong limit 5 返回結果集前5行
limit - offset : select * from TableSong limit 4 offset 5 limit4: 輸出4行結果 offset:(從第6行處開始輸出)
order by : 必須保證order by 是select 語句的最後一個子語句(不然報錯)
order by 能夠跟接多字段排序
desc (倒敘排列)
asc (升序排列 默認效果)
desc,asc 只做用於位於他前面的列,若是想做用於多列可寫
select * from TableSong order by SongName desc ,SongIndex desc
where: SQL 過濾 應當在服務端進行過濾,在應用端過濾,須要服務端發送全部數據,致使網絡寬帶浪費 = :等於 <> : 不等於 = : 不等於
< :小於
<= :小於等於
> : 大於
>= : 大於等於
!> : 不大於
between and :指定兩個值之間(包含這倆值)
is null: 爲null 值
where songName= ‘songname’ 須要單引號包裹blog
And :
操做符 跟where 語句附近條件
eg: select * from TableSong where SongIndex between 10005 and 10010 and SubFileType=4
Or :
操做符: 知足其一條件便可
eg: 查詢SongIndex >10010的 Lantype =4 或Lantype=20 的數據排序
And or 連用:rem
select * from TableSong where LanType=4 or LanType=20 and SongIndex >10010
上面該語句查詢的結果是 select * from TableSong where LanType=4 or ( LanType=20 and SongIndex >10010 )
緣由是: and 在求集 過程當中優先級 高
select * from TableSong where (LanType=4 or LanType=20) and SongIndex >10010
in :操做符合
eg: select * from TableSong where LanType in(3,20)
在有不少合法選項時,IN操做符的語法更清楚,更直觀。
在與其餘AND和OR操做符組合使用IN時,求值順序更容易管理。
IN操做符通常比一組OR操做符執行得更快
IN的最大優勢是能夠包含其餘SELECT語句,可以更動態地創建WHERE子句。
eg: select * from TableSong where LanType in(select distinct LanType from TableSongSinger )字符串
not:
eg: select * from TableSong where NOT LanType=4
not用來否認(排除)後面的判斷條件
eg: not in
select * from TableSong where LanType not in(select distinct LanType from TableSongSinger )
it
like 通配符:table
eg: select * from TableSong where SongName like '%a%'
% : 在搜索串中,%表示任何字符出現任意次數
_(下劃線): 在搜索串中, _ 表示任何字符出現一次
[] : 方括號([])通配符用來指定一個字符集,它必須匹配指定位置(通配符的位置)的一個字符
eg: where cust_contact like '[jm]%' cust_contact 以 j或m開頭
[^ ] 用來否認:
class
字段拼接 :
Access和SQL Server使用 + 號
DB二、Oracle、PostgreSQL、SQLite和OpenOffice Base使用||
eg: select SongName||SongIndex as Address from TableSong (將SongName,SongIndex拼接在一塊兒,組成新的字段Address)
TRIM 函數:
大多數DBMS都支持RTRIM()(正如剛纔所見,它去掉字符串右邊的空格)、LTRIM()(去掉字符串左邊的空格)以及TRIM()(去掉字符串左右兩邊的空格)。
select SongName||'( ' || trim(SongIndex) || ' )' as address from TableSong
操做符 + - * /:
eg: select SubFileType,LanType ,SubFileType*LanType as num from TableSong
函數使用:
upper() : 轉換值爲大寫 eg: select upper(SongName) from TableSong
left() : (或使用子字符串函數) 返回字符串左邊的字符
LENGTH(): (也使用DATALENGTH()或LEN()) 返回字符串的長度
LOWER():(Access使用LCASE()) 將字符串轉換爲小寫
LTRIM() :去掉字符串左邊的空格
RIGHT(): (或使用子字符串函數) 返回字符串右邊的字符
RTRIM() 去掉字符串右邊的空格
SOUNDEX() 返回字符串的SOUNDEX值
UPPER()(Access使用UCASE()) 將字符串轉換爲大寫
ABS() 返回一個數的絕對值
COS() 返回一個角度的餘弦
EXP() 返回一個數的指數值
PI() 返回圓周率
SIN() 返回一個角度的正弦
SQRT() 返回一個數的平方根
TAN() 返回一個角度的正切
彙集函數:
avg(LanType): 返回某一列的平均值
count() : 返回行數
select count(*) from TableSong where SongIndex>11000
max(): 返回某一列的最大值,須要指定列名
min():
sum():返回指定列的總和
group by:
分組
eg: select count(*) as num, LanType from TableSong group by LanType
having(): 用來過濾分組
eg: select count(*) as num, LanType from TableSong group by LanType having count(*)>4
聯結:
自聯結:
eg:
select c1.SongIndex, c1.LanType,c1.SongName
from TableSong as c1,TableSong as c2
where (c1.LanType=c2.LanType) and c2.[SongName]='Okean'
組合查詢:
UNION必須由兩條或兩條以上的SELECT語句組成,語句之間用關鍵字UNION分隔
UNION中的每一個查詢必須包含相同的列、表達式或彙集函數(不過,各個列不須要以相同的次序列出)。
列數據類型必須兼容:類型沒必要徹底相同,但必須是DBMS能夠隱含轉換的類型、
2:SQL Insert 語句
插入完整的行數據:
eg: insert into HotSong values('2','2','2')
該insert 語句很簡單,可是數據插入依賴表中字段的次序。
insert into HotSong (SongIndex,Score,Hots) values('4','6','8')
將表中字段明確給出,values和其對應便可。
insert into HotSong (SongIndex,Score,Hots) values('4','6','8')
eg: 若是列定義爲容許NULL值(無值或空值)
在表定義中給出默認值。這表示若是不給出值,將使用默認值能夠省略行
insert select:
INSERT通常用來給表插入具備指定列值的行。
INSERT還存在另外一種形式,能夠利用它將SELECT語句的結果插入表中,
這就是所謂的INSERT SELECT。顧名思義,它是由一條INSERT語句和一條SELECT語句組成的。
eg: insert into TableSong(LanType) select LanType from TableSong where SongIndex=1558
3:SQL delete 語句
delete from tableName where
若是想從表中刪除全部行,不要使用DELETE。可以使用TRUNCATE TABLE語句,它完成相同的工做,而速度更快
4 SQL create
create Table testTable (
name char(10) not null,
sex char(10) not null,
age char(10) not null
);
create Table if not exists testTable2 (
id integer primary key autoincrement,
name char(10) not null,
sex char(10) not null,
age char(10) not null
);
刪除表(不是刪除表數據):
DROP TABLE testTable;
建立view:
create view TestTable1 as
select TableSinger.[SingerIndex],TableSong.[SingerName],TableSong.SongName
from TableSong left join TableSinger
on TableSinger.[SingerName]=TableSong.SingerName