SQL 高級教程

1.SQL TOP 子句 ===> 用于規(guī)定要返回的記錄的數(shù)目

語法:
select top number | percent  column_name(s) from table_name
MySql 語法
select column_name(s) from table_name limit number
實(shí)例:
select  top 2 * from persons 
select top 30 percent * from persons
select * from persons limit 5 // MySql語句

2.SQL LIKE 操作符 ===> 用于在 WHERE 子句中搜索列中的指定模式

語法:
select column_name(s) from table_name where column_name like pattern
實(shí)例:
select * from persons where city like 'N%' // 從上面的 "Persons" 表中選取居住在以 "N" 開始的城市里的人  (%代表通配符)
select * from persons where city not like '%ion%' 

3.SQL 通配符 ===> 在搜索數(shù)據(jù)庫中的數(shù)據(jù)時(shí)涣楷,SQL 通配符可以替代一個(gè)或多個(gè)字符

通配符                          描述
%                               替代一個(gè)或多個(gè)字符
_                               僅替代一個(gè)字符
[charlist]                      字符列中的任何單一字符
[^charlist or !charlist]        不在字符列中的任何單一字符
實(shí)例:
 select * from persons where firstname like '%in%'
 select * from persons where lastname like 'S_l_r' 
 select * from persons where city like '[ALN]%'  //  "Persons" 表中選取居住的城市以 "A" 或 "L" 或 "N" 開頭的人
 select * from persons where city like '[!ALN]%' // "Persons" 表中選取居住的城市不以 "A" 或 "L" 或 "N" 開頭的人

4.SQL IN操作符 ===> 允許我們在 WHERE 子句中規(guī)定多個(gè)值

語法:
select column_name(s) from table_name where column_name in (valueA, valueB)
實(shí)例:
select * from persons where lastname in ('Silva', 'Bill')

5.SQL BETWEEN 操作符 ===> 選取介于兩個(gè)值之間的數(shù)據(jù)范圍

語法:
select column_name(s) from table_name where column_name between value1 and value2 
實(shí)例:
select * from persons where lastname between 'Andy' and 'Mike'
select * from persons where lastname not between 'Andy' and 'Mike'

6.SQL Alias( 別名) ===> 列名稱和表名稱指定別名

語法:
 select column_name(s) from table_name as alias_name // 表的SQL Alias語法
 select column_name as alias_name from table_name // 列的 SQL Alias 語法 
實(shí)例:
select po.orderId, p.name, p.age from persons as p, product_order as po where p.lastname = 'silva' and p.firstname = 'cheng'

7.SQL Join ===> 根據(jù)兩個(gè)或多個(gè)表中的列之間的關(guān)系广匙,從這些表中查詢數(shù)據(jù)

實(shí)例:
select persons.lastname, person.firstname, orders.orderNo 
from persons 
inner join orders
on persons.id_p = orders.id_p
order by persons.lastname
不同的 SQL JOIN
除了我們在上面的例子中使用的 INNER JOIN(內(nèi)連接),我們還可以使用其他幾種連接。
下面列出了您可以使用的 JOIN 類型屏鳍,以及它們之間的差異。
JOIN: 如果表中有至少一個(gè)匹配,則返回行
LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
RIGHT JOIN: 即使左表中沒有匹配灾茁,也從右表返回所有的行
FULL JOIN: 只要其中一個(gè)表中存在匹配,就返回行
7.1 SQL INNER JOIN
語法:
  select column_name(s) 
  from table_name1
  inner join table_name2
  on table_name1.column.name = table_name2.column.name
7.2 SQL LEFT JOIN ===> 左表 (table_name1) 那里返回所有的行谷炸,即使在右表 (table_name2) 中沒有匹配的行
語法:
  select column_name(s) 
  from table_name1
  left join table_name2
  on table_name1.column.name = table_name2.column.name    
7.3 SQL RIGHT JOIN ===> 關(guān)鍵字會右表 (table_name2) 那里返回所有的行北专,即使在左表 (table_name1) 中沒有匹配的行
語法:
  select column_name(s) 
  from table_name1
  right join table_name2
  on table_name1.column.name = table_name2.column.name 
7.4 SQL FULL JOIN ===> 只要其中某個(gè)表存在匹配,F(xiàn)ULL JOIN 關(guān)鍵字就會返回行
語法:
  select column_name(s) 
  from table_name1
  full join table_name2
  on table_name1.column.name = table_name2.column.name     

8.SQL UNION 和 UNION ALL 操作符 ===> UNION 操作符用于合并兩個(gè)或多個(gè) #####SELECT 語句的結(jié)果集

  請注意旬陡,UNION 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列拓颓。
  列也必須擁有相似的數(shù)據(jù)類型。同時(shí)季惩,每條 SELECT 語句中的列的順序必須相同录粱。
SQL UNION 語法:
  select column_name(s) fromtable_name1
  union
  select column_name(s) from table_name2
  // 注釋:默認(rèn)地腻格,UNION 操作符選取不同的值画拾。如果允許重復(fù)的值,請使用 UNION ALL
SQL UNION ALL語法:
select column_name(s) fromtable_name1
union all
select column_name(s) from table_name2

9.SQL SELECT INTO語句 ===> 可用于創(chuàng)建表的備份復(fù)件

語法:
select * (or column_names)
into new_table_name[IN externaldatabase]
from old_table_name 
實(shí)例:
  select  * 
  into persons in 'Backup.mdb'
  from persons 
  // 在新的backup庫里備份persons

  select lastname, firstname 
  into persons_backup
  from persons
  where city = 'shenzhen'
  // 帶有 where 子句

  select persons.firstname, persons.lastname 
  into persons_order_backup 
  from persons
  inner join orders
  on persons.id_p = orders.id_p

10.SQL CREATE DATABASE語句 ===> 用于創(chuàng)建數(shù)據(jù)庫

#####語法: 

    create database database_name

11.SQL CREATE TABLE 語句 ===>用于創(chuàng)建數(shù)據(jù)庫中的表

語法:
  CREATE TABLE 表名稱
  (
    列名稱1 數(shù)據(jù)類型,
    列名稱2 數(shù)據(jù)類型,
    列名稱3 數(shù)據(jù)類型,
    ....
  )
數(shù)據(jù)類型.png
實(shí)例:
create table persons 
(
  id_p int,
  lastname varchar(255),
  firstname varchar(255),
  address varchar(255),
  city varchar(255) 
 )

12.SQL 約束 (Constraints) ===>用于限制加入表的數(shù)據(jù)的類型

主要有以下幾種約束:
NOT NULL  // 強(qiáng)制列不接受 NULL 值
UNIQUE // 唯一標(biāo)識數(shù)據(jù)庫表中的每條記錄
PRIMARY KEY // 唯一標(biāo)識數(shù)據(jù)庫表中的每條記錄
// 每個(gè)表可以有多個(gè) UNIQUE 約束菜职,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束
FOREIGN KEY // 用于預(yù)防破壞表之間連接的動作
CHECK // 用于限制列中的值的范圍
DEFAULT // 用于向列中插入默認(rèn)值

13.SQL DROP 語句 ===> 可以輕松地刪除索引青抛、表和數(shù)據(jù)庫

語法:
  MySql: 
      alter table table_name drop index index_name // 刪除表格中的索引
      drop table table_name // 刪除表
      drop database database_name // 刪除數(shù)據(jù)庫

14.SQL ALTER TABLE 語句 ===> 用于在已有的表中添加、修改或刪除列

語法:
  表中添加列: 
    alter table table_name 
    add column_name datatype
  刪除表中的列: 
    alter table table_name
    drop column column_name

15.SQL 數(shù)據(jù)類型

  在 MySQL 中酬核,有三種主要的類型:文本蜜另、數(shù)字和日期/時(shí)間類型
  具體參考以下鏈接:

http://www.w3school.com.cn/sql/sql_datatypes.asp

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末适室,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子举瑰,更是在濱河造成了極大的恐慌捣辆,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件此迅,死亡現(xiàn)場離奇詭異汽畴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)耸序,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門忍些,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坎怪,你說我怎么就攤上這事罢坝。” “怎么了搅窿?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵嘁酿,是天一觀的道長。 經(jīng)常有香客問我男应,道長痹仙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任殉了,我火速辦了婚禮开仰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘薪铜。我一直安慰自己众弓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布隔箍。 她就那樣靜靜地躺著谓娃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜒滩。 梳的紋絲不亂的頭發(fā)上滨达,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音俯艰,去河邊找鬼捡遍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛竹握,可吹牛的內(nèi)容都是我干的画株。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谓传!你這毒婦竟也來了蜈项?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤续挟,失蹤者是張志新(化名)和其女友劉穎紧卒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诗祸,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡常侦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贬媒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聋亡。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖际乘,靈堂內(nèi)的尸體忽然破棺而出坡倔,到底是詐尸還是另有隱情,我是刑警寧澤脖含,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布罪塔,位于F島的核電站,受9級特大地震影響养葵,放射性物質(zhì)發(fā)生泄漏征堪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一关拒、第九天 我趴在偏房一處隱蔽的房頂上張望佃蚜。 院中可真熱鬧,春花似錦着绊、人聲如沸谐算。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洲脂。三九已至,卻和暖如春剧包,著一層夾襖步出監(jiān)牢的瞬間恐锦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工疆液, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留一铅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓枚粘,卻偏偏與公主長得像馅闽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子馍迄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容