文章出處

  • SQL SELECT 語句

SELECT 語句用于從表中選取數據。

結果被存儲在一個結果表中(稱為結果集)。

SQL SELECT 語法

SELECT 列名稱 FROM 表名稱

以及:

SELECT * FROM 表名稱

注釋:SQL 語句對大小寫不敏感。SELECT 等效于 select。

SQL SELECT 實例

如需獲取名為 "LastName" 和 "FirstName" 的列的內容(從名為 "Persons" 的數據庫表),請使用類似這樣的 SELECT 語句:

SELECT LastName,FirstName FROM Persons

"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

結果:

LastName

FirstName

Adams

John

Bush

George

Carter

Thomas

SQL SELECT * 實例

現在我們希望從 "Persons" 表中選取所有的列。

請使用符號 * 取代列的名稱,就像這樣:

SELECT * FROM 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

  • SQL SELECT DISTINCT 語句

在表中,可能會包含重復值。這并不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。

關鍵詞 DISTINCT 用于返回唯一不同的值。

語法:

SELECT DISTINCT 列名稱 FROM 表名稱

使用 DISTINCT 關鍵詞

如果要從 "Company" 列中選取所有的值,我們需要使用 SELECT 語句:

SELECT Company FROM Orders

"Orders"表:

Company

OrderNumber

IBM

3532

W3School

2356

Apple

4698

W3School

6953

結果:

Company

IBM

W3School

Apple

W3School

請注意,在結果集中,W3School 被列出了兩次。

如需從 Company" 列中僅選取唯一不同的值,我們需要使用 SELECT DISTINCT 語句:

SELECT DISTINCT Company FROM Orders

結果:

Company

IBM

W3School

Apple

  • WHERE 子句

如需有條件地從表中選取數據,可將 WHERE 子句添加到 SELECT 語句。

語法

SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值

下面的運算符可在 WHERE 子句中使用:

操作符

描述

=

等于

<>

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

BETWEEN

在某個范圍內

LIKE

搜索某種模式

注釋:在某些版本的 SQL 中,操作符 <> 可以寫為 !=。

使用 WHERE 子句

如果只希望選取居住在城市 "Beijing" 中的人,我們需要向 SELECT 語句添加 WHERE 子句:

SELECT * FROM Persons WHERE City='Beijing'

"Persons" 表

LastName

FirstName

Address

City

Year

Adams

John

Oxford Street

London

1970

Bush

George

Fifth Avenue

New York

1975

Carter

Thomas

Changan Street

Beijing

1980

Gates

Bill

Xuanwumen 10

Beijing

1985

結果:

LastName

FirstName

Address

City

Year

Carter

Thomas

Changan Street

Beijing

1980

Gates

Bill

Xuanwumen 10

Beijing

1985

引號的使用

請注意,我們在例子中的條件值周圍使用的是單引號。

SQL 使用單引號來環繞文本值(大部分數據庫系統也接受雙引號)。如果是數值,請不要使用引號。

文本值:

這是正確的:

SELECT * FROM Persons WHERE FirstName='Bush'

 

這是錯誤的:

SELECT * FROM Persons WHERE FirstName=Bush

數值:

這是正確的:

SELECT * FROM Persons WHERE Year>1965

 

這是錯誤的:

SELECT * FROM Persons WHERE Year>'1965'

  • ORDER BY 語句

ORDER BY 語句用于根據指定的列對結果集進行排序。

ORDER BY 語句默認按照升序對記錄進行排序。

如果您希望按照降序對記錄進行排序,可以使用 DESC 關鍵字。

原始的表 (用在例子中的):

Orders 表:

Company

OrderNumber

IBM

3532

W3School

2356

Apple

4698

W3School

6953

實例 1

以字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company

結果:

Company

OrderNumber

Apple

4698

IBM

3532

W3School

6953

W3School

2356

實例 2

以字母順序顯示公司名稱(Company),并以數字順序顯示順序號(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

結果:

Company

OrderNumber

Apple

4698

IBM

3532

W3School

2356

W3School

6953

實例 3

以逆字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

結果:

Company

OrderNumber

W3School

6953

W3School

2356

IBM

3532

Apple

4698

實例 4

以逆字母順序顯示公司名稱,并以數字順序顯示順序號:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

結果:

Company

OrderNumber

W3School

2356

W3School

6953

IBM

3532

Apple

4698

注意:在以上的結果中有兩個相等的公司名稱 (W3School)。只有這一次,在第一列中有相同的值時,第二列是以升序排列的。如果第一列中有些值為 nulls 時,情況也是這樣的

  • LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SQL LIKE 操作符語法

SELECT column_name(s)

FROM table_name

WHERE column_name LIKE pattern

原始的表 (用在例子中的):

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

LIKE 操作符實例

例子 1

現在,我們希望從上面的 "Persons" 表中選取居住在以 "N" 開始的城市里的人:

我們可以使用下面的 SELECT 語句:

SELECT * FROM Persons

WHERE City LIKE 'N%'

提示:"%" 可用于定義通配符(模式中缺少的字母)。

結果集:

Id

LastName

FirstName

Address

City

2

Bush

George

Fifth Avenue

New York

例子 2

接下來,我們希望從 "Persons" 表中選取居住在以 "g" 結尾的城市里的人:

我們可以使用下面的 SELECT 語句:

SELECT * FROM Persons

WHERE City LIKE '%g'

結果集:

Id

LastName

FirstName

Address

City

3

Carter

Thomas

Changan Street

Beijing

例子 3

接下來,我們希望從 "Persons" 表中選取居住在包含 "lon" 的城市里的人:

我們可以使用下面的 SELECT 語句:

SELECT * FROM Persons

WHERE City LIKE '%lon%'

結果集:

Id

LastName

FirstName

Address

City

1

Adams

John

Oxford Street

London

例子 4

通過使用 NOT 關鍵字,我們可以從 "Persons" 表中選取居住在不包含 "lon" 的城市里的人:

我們可以使用下面的 SELECT 語句:

SELECT * FROM Persons

WHERE City NOT LIKE '%lon%'

結果集:

Id

LastName

FirstName

Address

City

2

Bush

George

Fifth Avenue

New York

3

Carter

Thomas

Changan Street

Beijing

 

  • INSERT INTO 語句

INSERT INTO 語句用于向表格中插入新的行。

語法

INSERT INTO 表名稱 VALUES (值1, 值2,....)

我們也可以指定所要插入數據的列:

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

插入新的行

"Persons" 表:

LastName

FirstName

Address

City

Carter

Thomas

Changan Street

Beijing

SQL 語句:

INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

結果:

LastName

FirstName

Address

City

Carter

Thomas

Changan Street

Beijing

Gates

Bill

Xuanwumen 10

Beijing

在指定的列中插入數據

"Persons" 表:

LastName

FirstName

Address

City

Carter

Thomas

Changan Street

Beijing

Gates

Bill

Xuanwumen 10

Beijing

SQL 語句:

INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

結果:

LastName

FirstName

Address

City

Carter

Thomas

Changan Street

Beijing

Gates

Bill

Xuanwumen 10

Beijing

Wilson

  

Champs-Elysees

  

  • Update 語句

Update 語句用于修改表中的數據。

語法:

UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

Person:

LastName

FirstName

Address

City

Gates

Bill

Xuanwumen 10

Beijing

Wilson

  

Champs-Elysees

  

更新某一行中的一個列

我們為 lastname 是 "Wilson" 的人添加 firstname:

UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'

結果:

LastName

FirstName

Address

City

Gates

Bill

Xuanwumen 10

Beijing

Wilson

Fred

Champs-Elysees

  

更新某一行中的若干列

我們會修改地址(address),并添加城市名稱(city):

UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'

WHERE LastName = 'Wilson'

結果:

LastName

FirstName

Address

City

Gates

Bill

Xuanwumen 10

Beijing

Wilson

Fred

Zhongshan 23

Nanjing

  • DELETE 語句

DELETE 語句用于刪除表中的行。

語法

DELETE FROM 表名稱 WHERE 列名稱 = 值

Person:

LastName

FirstName

Address

City

Gates

Bill

Xuanwumen 10

Beijing

Wilson

Fred

Zhongshan 23

Nanjing

刪除某行

"Fred Wilson" 會被刪除:

DELETE FROM Person WHERE LastName = 'Wilson'

結果:

LastName

FirstName

Address

City

Gates

Bill

Xuanwumen 10

Beijing

刪除所有行

可以在不刪除表的情況下刪除所有的行。這意味著表的結構、屬性和索引都是完整的:

DELETE FROM table_name

或者:

DELETE * FROM table_name

用SQL語句添加刪除修改字段
1.增加字段
alter table docdsp add dspcode
char(200)
2.刪除字段
ALTER TABLE table_NAME DROP COLUMN
column_NAME
3.修改字段類型
ALTER TABLE table_name ALTER COLUMN
column_name new_data_type
4.sp_rename 改名

更改當前數據庫中用戶創建對象(如表、列或用戶定義數據類型)的名稱。
語法
sp_rename [ @objname = ]
'object_name' ,
[ @newname = ] 'new_name'
[ , [ @objtype =
] 'object_type' ]
如:EXEC sp_rename
'newname','PartStock'
5.sp_help 顯示表的一些基本情況
sp_help 'object_name'
如:EXEC sp_help 'PartStock'
6.判斷某一表PartStock中字段PartVelocity是否存在
if
exists (select * from syscolumns where
id=object_id('PartStock') and name='PartVelocity')
print
'PartVelocity exists'
else print 'PartVelocity not
exists'
另法:
判斷表的存在性:
select count(*) from sysobjects where type='U'
and name='你的表名'
判斷字段的存在性:
select count(*) from syscolumns
where
id = (select id from sysobjects where type='U' and name='你的表名')

and name = '你要判斷的字段名'

一個小例子
--假設要處理的表名為:
tb
--判斷要添加列的表中是否有主鍵
if exists(select 1 from sysobjects where
parent_obj=object_id('tb') and xtype='PK')
begin
print
'表中已經有主鍵,列只能做為普通列添加'
--添加int類型的列,默認值為0
alter table tb add 列名 int default
0
end
else
begin
print '表中無主鍵,添加主鍵列'
--添加int類型的列,默認值為0
alter
table tb add 列名 int primary key default 0
end
7.隨機讀取若干條記錄
Access語法:SELECT top 10 * From 表名 ORDER BY
Rnd(id)
Sql server:select top n * from 表名 order by newid()

mysql select * From 表名 Order By rand() Limit n
8.說明:日程安排提前五分鐘提醒
SQL:
select * from 日程安排 where datediff(minute,f開始時間,getdate())>5
9.前10條記錄
select top 10 * form table1 where 范圍
10.包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重復行而派生出一個結果表
(select a
from tableA ) except (select a from tableB) except (select a from tableC)
11.說明:隨機取出10條數據
select top 10 * from tablename order by newid()
12.列出數據庫里所有的表名
select name from sysobjects where type=U
13.列出表里的所有的字段名
select name from syscolumns where
id=object_id(TableName)
14.說明:列示type、vender、pcs字段,以type字段排列,case可以方便地實現多重選擇,類似select
中的case。
select type,sum(case vender when A then pcs else 0
end),sum(case vender when C then pcs else 0 end),sum(case vender when B then pcs
else 0 end) FROM tablename group by type
15.說明:初始化表table1
TRUNCATE
TABLE table1
16.說明:幾個高級查詢運算詞
  A: UNION 運算符
  UNION 運算符通過組合其他兩個結果表(例如
TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION
ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
  B: EXCEPT 運算符
  EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2
中的行并消除所有重復行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。
  C: INTERSECT 運算符
  INTERSECT 運算符通過只包括 TABLE1 和 TABLE2
中都有的行并消除所有重復行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT
ALL),不消除重復行。
  注:使用運算詞的幾個查詢結果行必須是一致的。

17.說明:在線視圖查詢(表名1:a )
select * from (SELECT a,b,c FROM a) T where
t.a > 1;
18.說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括
select * from
table1 where time between time1 and time2
select a,b,c, from table1
where a not between 數值1 and 數值2
19.說明:in 的使用方法
select * from table1 where a [not] in
('值1','值2','值4','值6')
20.說明:兩張關聯表,刪除主表中已經在副表中沒有的信息
delete from table1 where not exists (
select * from table2 where table1.field1=table2.field1
)
21. 說明:復制表(只復制結構,源表名:a 新表名:b) (Access可用)
  法一:select * into b from a
where 1<>1
  法二:select top 0 * into b from a
22.說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用)
insert into b(a, b, c)
select d,e,f from b;
23.說明:跨數據庫之間表的拷貝(具體數據使用絕對路徑) (Access可用)
insert into b(a, b, c)
select d,e,f from b in '具體數據庫' where 條件
  例子:..from b in
"&Server.MapPath(".")&"/data.mdb" &" where..
24.創建數據庫

CREATE DATABASE database-name
25.說明:刪除數據庫
drop database dbname
26.說明:備份sql server
  --- 創建
備份數據的 device
USE master
EXEC sp_addumpdevice disk, testBack,
c:/mssql7backup/MyNwind_1.dat
  --- 開始備份
BACKUP DATABASE pubs TO testBack
27.說明:創建新表
create table tabname(col1 type1 [not null] [primary
key],col2 type2 [not null],..)
  根據已有的表創建新表:
A:create table tab_new
like tab_old (使用舊表創建新表)
B:create table tab_new as select col1,col2…
from tab_old definition only
28.說明:
  刪除新表:drop table tabname
29.說明:
  增加一個列:Alter table tabname add column col
type
  注:列增加后將不能刪除。DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
30.說明:
  添加主鍵:Alter table tabname add primary key(col)
  說明:
  刪除主鍵:Alter table tabname drop primary key(col)
31.說明:
  創建索引:create [unique] index idxname on tabname(col….)
  刪除索引:drop index idxname
  注:索引是不可更改的,想更改必須刪除重新建。
32.說明:
  創建視圖:create view viewname as select statement
  刪除視圖:drop view
viewname
33.說明:幾個簡單的基本的sql語句
  選擇:select * from table1 where 范圍
  插入:insert into
table1(field1,field2) values(value1,value2)
  刪除:delete from table1 where
范圍
  更新:update table1 set field1=value1 where 條件
  查找:select * from table1
where field1 like '%value1%' ---like的語法很精妙,查資料!
  排序:select * from table1
order by field1,field2 [desc]
  總數:select count * as totalcount from
table1
  求和:select sum(field1) as sumvalue from table1
  平均:select
avg(field1) as avgvalue from table1
  最大:select max(field1) as maxvalue from
table1
  最小:select min(field1) as minvalue from table1


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()