SQL經常使用語句總結

 

 

  


 

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

相關文章
相關標籤/搜索