SQL 對(duì)大小寫不敏感葫松!
DML(數(shù)據(jù)操作語言)部分:
-
select
- 從數(shù)據(jù)表中獲取數(shù)據(jù) -
update
- 更新數(shù)據(jù)表中的數(shù)據(jù) -
delete
- 從數(shù)據(jù)表中刪除數(shù)據(jù) -
inster into
- 向數(shù)據(jù)庫(kù)表中插入數(shù)據(jù)
DDL(數(shù)據(jù)定義語言)語句:
-
create database
- 創(chuàng)建新數(shù)據(jù)庫(kù) -
alter database
- 修改數(shù)據(jù)庫(kù) -
create table
- 創(chuàng)建新表 -
alter table
- 變更(改變)數(shù)據(jù)庫(kù)表 -
drop table
- 刪除表 -
create index
- 創(chuàng)建索引(搜索鍵) -
drop index
- 刪除索引
sql select語句
select
語句用于從表中選取數(shù)據(jù)
結(jié)果被存儲(chǔ)在一個(gè)結(jié)果表中(稱為結(jié)果集)-
sql select
語法1.select列名稱 from表名稱紫皇。
2.sql語句對(duì)大小寫不敏感漾岳,SELECT等效于select
。 選取
Persons
表中LastName
列的數(shù)據(jù)
select LastName from persons
從
Persons
表中選取所有的列
SELECT * FROM Persons
Tips:星號(hào)(*)是選取所有列的快捷方式
sql select distinct語句
關(guān)鍵字distinct
用于返回唯一不同的值莹桅。
表:Orders
Company | OrderNumber |
---|---|
IBM | 3532 |
W3School | 2356 |
Apple | 4698 |
W3School | 6953 |
在表中可能會(huì)包含重復(fù)值昌执。這并不成問題,不過诈泼,有時(shí)您也許希望僅僅列出不同(distinct
)的值懂拾。
- 語法:
select distinct列名稱 from 表名稱
- 從
Company
列中選取所有的值
select Company From Orders
結(jié)果:
Company |
---|
IBM |
W3School |
Apple |
W3School |
Tips:
W3School
被列出了2次。使用
select distinct
語句
select distinct Company from Orders
結(jié)果:
Company |
---|
IBM |
W3School |
Apple |
- Tips:現(xiàn)在在結(jié)果中铐达,
W3School
僅被列出了1次岖赋。
sql where 子句
表Customer
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbk?p | Christina Berglund | Berguvsv?gen 8 | Lule? | S-958 22 | Sweden |
WHERE
子句用于過濾記錄。SQL WHERE
語法
SELECT column_name,column_name FROM table_name WHERE column_name operator value;
從
Customers
表中選取國(guó)家為Mexico
的所有客戶娶桦。
SELECT * FROM Customers WHERE Country ='Mexico'
-
文本字段vs.數(shù)值字段
SQL
使用單引號(hào)來環(huán)繞文本值贾节,如果是數(shù)值字段汁汗,請(qǐng)不要使用引號(hào)衷畦。
從Customers
表中選取CustomerID 大于1
的客戶
select * from Customers where CustomerID>1:
- *數(shù)值: *
正確:SELECT * FROM Customers WHERE CustomerID>1;
錯(cuò)誤:SELECT * FROM Customers WHERE CustomerID>'1';
- *數(shù)值: *
文本:
正確:SELECT * FROM Customers WHERE Country ='Mexico'
錯(cuò)誤:SELECT * FROM Customers WHERE Country =Mexico
where 子句中的運(yùn)算符
運(yùn)算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某個(gè)范圍內(nèi) |
LIKE | 搜素某種模式 |
IN | 指定針對(duì)某個(gè)列的多個(gè)可能值 |
sql and & or運(yùn)算符
表Persons
LastName | FirstName | Address | City |
---|---|---|---|
Adams | John | Oxford Street | London |
Bush | George | Fifth Avenue | New York |
Carter | Thomas | Changan Street | Beijing |
Carter | William | Xuanwumen 10 | Beijing |
-
and
&or
運(yùn)算符用于基于一個(gè)以上的條件對(duì)記錄進(jìn)行過濾。 - 如果第一個(gè)條件和第二個(gè)條件都成立知牌,則
and
運(yùn)算符顯示一條記錄祈争。 - 如果第一個(gè)條件和第二個(gè)條件只要有一個(gè)成立,則
or
運(yùn)算符顯示一條記錄角寸。 - 使用
and
來顯示所有姓為"Carter"
并且名為"Thomas"
的人:
select * from Persons where FirstName='Thomas' and LastName='Carter';
- 結(jié)果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
使用
or
來顯示所有姓為"Carter"
或者名為"Thomas"
的人:
select * from Persons where FirstName='Thomas' or LastName='Carter'
結(jié)果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Carter | William | Xuanwumen 10 | Beijing |
- 我們也可以把
and
和or
結(jié)合起來(使用圓括號(hào)來組成復(fù)雜的表達(dá)式):
顯示姓為"Carter"
并且名為"Thomas"
或名為"William"
的人
select* from Persons where (FirstName='Thomas' or FirstName='William') and LastName='Carter'
- 結(jié)果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Carter | William | Xuanwumen 10 | Beijing |
sql order by子句
表:Orders
Company | OrderNumber |
---|---|
IBM | 3532 |
W3School | 2356 |
Apple | 4698 |
W3School | 6953 |
order by
語句用于根據(jù)指定的列對(duì)結(jié)果集進(jìn)行排序菩混。order by
語句默認(rèn)按照升序?qū)τ涗涍M(jìn)行排序。如果希望按照降序?qū)τ涗涍M(jìn)行排序扁藕,可以使用
desc
關(guān)鍵字沮峡。以字母順序顯示公司名稱:
select Company ,OrderNumber from Orders order by Company
結(jié)果:
Company | OrderNumber |
---|---|
Apple | 4698 |
IBM | 3532 |
W3School | 6953 |
W3School | 2356 |
以字母順序顯示公司名稱(
Company
),并以數(shù)字順序顯示順序號(hào)(OrderNumber
)亿柑;
select Company,OrderNumber from Orders order by Company,OrderNumber
結(jié)果:
Company | OrderNumber |
---|---|
Apple | 4698 |
IBM | 3532 |
W3School | 2356 |
W3School | 6953 |
以逆字母順序顯示公司名稱邢疙,并以數(shù)字順序顯示順序號(hào);
select Company,OrderNumber from Orders order by Company desc,OrderNumber asc
desc
降序,asc
升序疟游,排序的時(shí)候先滿足第一個(gè)條件(Company desc
)公司名稱按倒序呼畸,再滿足第二個(gè)條件(OrderNumber asc
)訂單號(hào)按升序。
結(jié)果:
Company | OrderNumber |
---|---|
W3School | 2356 |
W3School | 6953 |
IBM | 3532 |
Apple | 4698 |
insert into 語句
表Persons
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
-
insert into
語句用于向表格中插入新的行颁虐。 - 語法:
INSERT INTO table_name VALUES (value1,value2,......)
- 我們也可以指定所要插入數(shù)據(jù)的列蛮原。
INSERT INTO table_name (row1,row2,...) VALUES (value1,value2,...)
- 向
Persons
表中插入一行數(shù)據(jù)。
INSERT INTO Persons VALUES('Gates','Bill','Xuanwume 10','Beijing')
結(jié)果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwume 10 | Beijing |
- 向
Persons
表中插入指定的列另绩。
INSERT INTO Persons (LastName,Address) VALUES('Wilson','Champs-Elysees')
結(jié)果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwume 10 | Beijing |
Wilson | 空白(沒有值) | Champs-Elysees | 空白(沒有值) |
sql update 語句
表Persons
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwume 10 | Beijing |
Wilson | 空白(沒有值) | Champs-Elysees | 空白(沒有值) |
update
語句用于修改表中的數(shù)據(jù)儒陨。-
語法:
update table_name set row1 = newValue where row2 = value
- 為滿足row2=value的數(shù)據(jù)設(shè)置row1=newValue
更新某一行中的一個(gè)列,為
LastName
為"Wilson"
的人添加FirstName
update Persons set FirstName='Fred' where LastName='Wilson'
結(jié)果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwume 10 | Beijing |
Wilson | Fred | Champs-Elysees | 空白(沒有值) |
sql delete語句
Persons表
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwume 10 | Beijing |
Wilson | Fred | Zhongshan 23 | Nanjing |
-
delete
語句用于刪除表中的行 - 語法:
delete from table_name where row=value
- 刪除某行
"Fred Wilson"
會(huì)被刪除板熊。
DELETE FROM Person WHERE LastName = 'Wilson'
- 結(jié)果:
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwume 10 | Beijing |
- 刪除所有行框全,可以在不刪除表的情況下刪除所有的行。這意味著表的結(jié)構(gòu)干签,熟悉和索引都是完整的津辩。
DELETE FROM table_name
或者
DELETE *FROM table_name
sql top語句
top
子句用于規(guī)定要返回的記錄的數(shù)目。對(duì)于擁有數(shù)千條記錄的大型表來說容劳,
top
子句是非常有用的喘沿。
注釋:并非所有的數(shù)據(jù)庫(kù)系統(tǒng)都支持top
子句。sql server
的語法:
select top number|percent column_name(s) from table_name
-
MySQL
和Oracle
中的SQL SELECT TOP
是等價(jià)的-
MySQL
語法
SELECT cloumn_name(s) FROM table_name LIMIT number
- 例子:
SELECT column_name(s) FROM table_name LIMIT number
-
Oracle
語法
SELECT column_name(s) FROM table_name WHERE ROWNUM < number
- 例子
SELECT * FROM Persons WHERE ROWNUM <= 5
-
原始的Persons表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
4 | Obama | Barack | Pennsylvania Avenue | Washington |
-
SQL TOP
實(shí)例- 現(xiàn)在竭贩,我們希望從上面的
"Persons"
表中選取頭兩條記錄蚜印。
我們可以使用下面的select
語句:
SELECT TOP 2 * FROM Persons
- 現(xiàn)在竭贩,我們希望從上面的
- 結(jié)果:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |