當前位置:首頁 » 編程語言 » 查詢sql語句語法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

查詢sql語句語法

發布時間: 2023-03-05 02:05:56

sql常用語句語法

【查找數據】
語法:select
*
from
表名
where
id=1
-----------------------------
*代表所有,如果想查找其中幾個,可以直接寫列名,中間逗號分隔。where是條件
id=1是指id列值為1的所有信息
【更新數據】
語法:update
表名
set
name='聞銘'
where
id=1
------------------------------------
set後跟表名=值
如果不加where條件,則更新所有。
這里是指符合id=1的所有的都更新name為聞名
【刪除數據】
語法:delete
表名
where
id=1
-----------------------------------
刪除id列值為1的所有數據
【插入數據】
語法:insert
into
表名(列名,列名)values(列值,列值)
-------------------------------
注意主鍵列不可設置值

❷ sql查詢語句格式是什麼

sql查詢語句格式是:

❸ sql查詢語句大全

SELECT * FROM TWS2F14CCC260D71 WHERE 地類='1999資源清查有林地'

❹ SQL的基本語法

一、基礎
1、說明:創建資料庫
CREATE DATABASE database-name
2、說明:刪除資料庫
drop database dbname
3、說明:備份sql server
--- 創建 備份數據的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始 備份
BACKUP DATABASE pubs TO testBack
4、說明:創建新表
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
5、說明:刪除新表
drop table tabname
6、說明:增加一個列
Alter table tabname add column col type
註:列增加後將不能刪除。DB2中列加上後數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:添加主鍵: Alter table tabname add primary key(col)
說明:刪除主鍵: Alter table tabname drop primary key(col)
8、說明:創建索引:create [unique] index idxname on tabname(col….)
刪除索引:drop index idxname
註:索引是不可更改的,想更改必須刪除重新建。
9、說明:創建視圖:create view viewname as select statement
刪除視圖:drop view viewname
10、說明:幾個簡單的基本的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
11、說明:幾個高級查詢運算詞
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),不消除重復行。
註:使用運算詞的幾個查詢結果行必須是一致的。
12、說明:使用外連接
A、left (outer) join:
左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right (outer) join:
右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full/cross (outer) join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
12、分組:Group by:
一張表,一旦分組 完成後,查詢後只能得到組相關的信息。
組相關的信息:(統計信息) count,sum,max,min,avg 分組的標准)
在SQLServer中分組時:不能以text,ntext,image類型的欄位作為分組依據
在selecte統計函數中的欄位,不能和普通的欄位放在一起;
13、對資料庫進行操作:
分離資料庫: sp_detach_db; 附加資料庫:sp_attach_db 後接表明,附加需要完整的路徑名
14.如何修改資料庫的名稱:
sp_renamedb 'old_name', 'new_name'

二、提升
1、說明:復製表(只復制結構,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1(僅用於SQlServer)
法二:select top 0 * into b from a
2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、說明:跨資料庫之間表的拷貝(具體數據使用絕對路徑) (Access可用)
insert into b(a, b, c) select d,e,f from b in 『具體資料庫』 where 條件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4、說明:子查詢(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
5、說明:顯示文章、提交人和最後回復時間
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、說明:外連接查詢(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、說明:在線視圖查詢(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
8、說明: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
9、說明:in 的使用方法
select * from table1 where a [not] in (『值1』,』值2』,』值4』,』值6』)
10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、說明:四表聯查問題:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、說明:日程安排提前五分鍾提醒
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5
13、說明:一條sql 語句搞定資料庫分頁
select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位
具體實現:
關於資料庫分頁:
declare @start int,@end int
@sql nvarchar(600)
set @sql=』select top』+str(@end-@start+1)+』+from T where rid not in(select top』+str(@str-1)+』Rid from T where Rid>-1)』
exec sp_executesql @sql

注意:在top後不能直接跟一個變數,所以在實際應用中只有這樣的進行特殊的處理。Rid為一個標識列,如果top後還有具體的欄位,這樣做是非常有好處的。因為這樣可以避免 top的欄位如果是邏輯索引的,查詢的結果後實際表中的不一致(邏輯索引中的數據有可能和數據表中的不一致,而查詢時如果處在索引則首先查詢索引)
14、說明:前10條記錄
select top 10 * form table1 where 范圍
15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重復行而派生出一個結果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、說明:隨機取出10條數據
select top 10 * from tablename order by newid()
18、說明:隨機選擇記錄
select newid()
19、說明:刪除重復記錄
1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
2),select distinct * into temp from tablename
delete from tablename
insert into tablename select * from temp
評價: 這種操作牽連大量的數據的移動,這種做法不適合大容量但數據操作
3),例如:在一個外部表中導入數據,由於某些原因第一次只導入了一部分,但很難判斷具體位置,這樣只有在下一次全部導入,這樣也就產生好多重復的欄位,怎樣刪除重復欄位
alter table tablename
--添加一個自增列
add column_b int identity(1,1)
delete from tablename where column_b not in(
select max(column_b) from tablename group by column1,column2,...)
alter table tablename drop column column_b
20、說明:列出資料庫里所有的表名
select name from sysobjects where type='U' // U代表用戶
21、說明:列出表裡的所有的列名
select name from syscolumns where id=object_id('TableName')
22、說明:列示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
顯示結果:
type vender pcs
電腦 A 1
電腦 A 1
光碟 B 2
光碟 A 2
手機 B 3
手機 C 3
23、說明:初始化表table1
TRUNCATE TABLE table1
24、說明:選擇從10到15的記錄
select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc

❺ sql 查詢 語句

SQL查詢語句使用詳解
好東東不敢獨享,貼出來大家看看,對編寫資料庫程序有所幫助.

一、簡單查詢
簡單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。它們分別說明所查詢列、查詢的
表或視圖、以及搜索條件等。
例如,下面的語句查詢testtable表中姓名為「張三」的nickname欄位和email欄位。
SELECT nickname,email
FROM testtable
WHERE name='張三'

(一)選擇列表
選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變數(包括局部變
量和全局變數)等構成。
1、選擇所有列
例如,下面語句顯示testtable表中所有列的數據:
SELECT *
FROM testtable

2、選擇部分列並指定它們的顯示次序
查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。
例如:
SELECT nickname,email
FROM testtable

3、更改列標題
在選擇列表中,可重新指定列標題。定義格式為:
列標題=列名
列名 列標題
如果指定的列標題不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列
標題:
SELECT 昵稱=nickname,電子郵件=email
FROM testtable

4、刪除重復行
SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復的數據行,默認
為ALL。使用DISTINCT選項時,對於所有重復的數據行在SELECT返回的結果集合中只保留一行。

5、限制返回的行數
使用TOP n [PERCENT]選項限制返回的數據行數,TOP n說明返回n行,而TOP n PERCENT時,說明n是
表示一百分數,指定返回的行數等於總行數的百分之幾。
例如:
SELECT TOP 2 *
FROM testtable

SELECT TOP 20 PERCENT *
FROM testtable

(二)FROM子句
FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。在FROM子句中最多可指定256個表或視圖,
它們之間用逗號分隔。
在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列
所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應
使用下面語句格式加以限定:
SELECT username,citytable.cityid
FROM usertable,citytable
WHERE usertable.cityid=citytable.cityid
在FROM子句中可用以下兩種格式為表或視圖指定別名:
表名 as 別名
表名 別名

例如上面語句可用表的別名格式表示為:
SELECT username,b.cityid
FROM usertable a,citytable b
WHERE a.cityid=b.cityid

SELECT不僅能從表或視圖中檢索數據,它還能夠從其它查詢語句所返回的結果集合中查詢數據。
例如:
SELECT a.au_fname+a.au_lname
FROM authors a,titleauthor ta
(SELECT title_id,title
FROM titles
WHERE ytd_sales>10000
) AS t
WHERE a.au_id=ta.au_id
AND ta.title_id=t.title_id
此例中,將SELECT返回的結果集合給予一別名t,然後再從中檢索數據。

(三)使用WHERE子句設置查詢條件
WHERE子句設置查詢條件,過濾掉不需要的數據行。例如下面語句查詢年齡大於20的數據:
SELECT *
FROM usertable
WHERE age>20

WHERE子句可包括各種條件運算符:
比較運算符(大小比較):>、>=、=、<、<=、<>、!>、!<
范圍運算符(表達式值是否在指定的范圍):BETWEEN…AND…
NOT BETWEEN…AND…
列表運算符(判斷表達式是否為列表中的指定項):IN (項1,項2……)
NOT IN (項1,項2……)
模式匹配符(判斷值是否與指定的字元通配格式相符):LIKE、NOT LIKE
空值判斷符(判斷表達式是否為空):IS NULL、NOT IS NULL
邏輯運算符(用於多條件的邏輯連接):NOT、AND、OR

1、范圍運算符例:age BETWEEN 10 AND 30相當於age>=10 AND age<=30
2、列表運算符例:country IN ('Germany','China')
3、模式匹配符例:常用於模糊查找,它判斷列值是否與指定的字元串格式相匹配。可用於char、
varchar、text、ntext、datetime和smalldatetime等類型查詢。
可使用以下通配字元:
百分號%:可匹配任意類型和長度的字元,如果是中文,請使用兩個百分號即%%。
下劃線_:匹配單個任意字元,它常用來限製表達式的字元長度。
方括弧[]:指定一個字元、字元串或范圍,要求所匹配對象為它們中的任一個。
[^]:其取值也[] 相同,但它要求所匹配對象為指定字元以外的任一個字元。

例如:
限制以Publishing結尾,使用LIKE '%Publishing'
限制以A開頭:LIKE '[A]%'
限制以A開頭外:LIKE '[^A]%'

4、空值判斷符例WHERE age IS NULL

5、邏輯運算符:優先順序為NOT、AND、OR

(四)查詢結果排序
使用ORDER BY子句對查詢返回的結果按一列或多列排序。ORDER BY子句的語法格式為:
ORDER BY {column_name [ASC|DESC]} [,…n]
其中ASC表示升序,為默認值,DESC為降序。ORDER BY不能按ntext、text和image數據類型進行排
序。
例如:
SELECT *
FROM usertable
ORDER BY age desc,userid ASC
另外,可以根據表達式進行排序。

二、聯合查詢
UNION運算符可以將兩個或兩個以上上SELECT語句的查詢結果集合合並成一個結果集合顯示,即執行聯
合查詢。UNION的語法格式為:
select_statement
UNION [ALL] selectstatement
[UNION [ALL] selectstatement][…n]
其中selectstatement為待聯合的SELECT查詢語句。
ALL選項表示將所有行合並到結果集合中。不指定該項時,被聯合查詢結果集合中的重復行將只保留一
行。
聯合查詢時,查詢結果的列標題為第一個查詢語句的列標題。因此,要定義列標題必須在第一個查詢語
句中定義。要對聯合查詢結果排序時,也必須使用第一查詢語句中的列名、列標題或者列序號。
在使用UNION 運算符時,應保證每個聯合查詢語句的選擇列表中有相同數量的表達式,並且每個查詢選
擇表達式應具有相同的數據類型,或是可以自動將它們轉換為相同的數據類型。在自動轉換時,對於數值類
型,系統將低精度的數據類型轉換為高精度的數據類型。
在包括多個查詢的UNION語句中,其執行順序是自左至右,使用括弧可以改變這一執行順序。例如:
查詢1 UNION (查詢2 UNION 查詢3)

三、連接查詢
通過連接運算符可以實現多個表查詢。連接是關系資料庫模型的主要特點,也是它區別於其它類型
資料庫管理系統的一個標志。
在關系資料庫管理系統中,表建立時各數據之間的關系不必確定,常把一個實體的所有信息存放在
一個表中。當檢索數據時,通過連接*作查詢出存放在多個表中的不同實體的信息。連接*作給用戶帶
來很大的靈活性,他們可以在任何時候增加新的數據類型。為不同實體創建新的表,爾後通過連接進行
查詢。
連接可以在SELECT 語句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出連接時有助於
將連接*作與WHERE子句中的搜索條件區分開來。所以,在Transact-SQL中推薦使用這種方法。
SQL-92標准所定義的FROM子句的連接語法格式為:
FROM join_table join_type join_table
[ON (join_condition)]
其中join_table指出參與連接*作的表名,連接可以對同一個表*作,也可以對多表*作,對同一
個表*作的連接又稱做自連接。
join_type 指出連接類型,可分為三種:內連接、外連接和交叉連接。內連接(INNER JOIN)使用比
較運算符進行表間某(些)列數據的比較*作,並列出這些表中與連接條件相匹配的數據行。根據所使用
的比較方式不同,內連接又分為等值連接、自然連接和不等連接三種。
外連接分為左外連接(LEFT OUTER JOIN或LEFT JOIN)、右外連接(RIGHT OUTER JOIN或RIGHT JOIN)
和全外連接(FULL OUTER JOIN或FULL JOIN)三種。與內連接不同的是,外連接不只列出與連接條件相匹
配的行,而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的
數據行。
交叉連接(CROSS JOIN)沒有WHERE 子句,它返回連接表中所有數據行的笛卡爾積,其結果集合中的
數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。
連接*作中的ON (join_condition) 子句指出連接條件,它由被連接表中的列和比較運算符、邏輯
運算符等構成。
無論哪種連接都不能對text、ntext和image數據類型列進行直接連接,但可以對這三種列進行間接
連接。例如:
SELECT p1.pub_id,p2.pub_id,p1.pr_info
FROM pub_info AS p1 INNER JOIN pub_info AS p2
ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)

(一)內連接
內連接查詢*作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。內連接分
三種:
1、等值連接:在連接條件中使用等於號(=)運算符比較被連接列的列值,其查詢結果中列出被連接
表中的所有列,包括其中的重復列。
2、不等連接: 在連接條件使用除等於運算符以外的其它比較運算符比較被連接的列的列值。這些
運算符包括>、>=、<=、<、!>、!<和<>。
3、自然連接:在連接條件中使用等於(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢
結果集合中所包括的列,並刪除連接表中的重復列。
例,下面使用等值連接列出authors和publishers表中位於同一城市的作者和出版社:
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city

又如使用自然連接,在選擇列表中刪除authors 和publishers 表中重復列(city和state):
SELECT a.*,p.pub_id,p.pub_name,p.country
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city

(二)外連接
內連接時,返回查詢結果集合中的僅是符合查詢條件( WHERE 搜索條件或 HAVING 條件)和連接條件
的行。而採用外連接時,它返回到查詢結果集合中的不僅包含符合連接條件的行,而且還包括左表(左外
連接時)、右表(右外連接時)或兩個邊接表(全外連接)中的所有數據行。
如下面使用左外連接將論壇內容和作者信息連接起來:
SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
ON a.username=b.username

下面使用全外連接將city表中的所有作者以及user表中的所有作者,以及他們所在的城市:
SELECT a.*,b.*
FROM city as a FULL OUTER JOIN user as b
ON a.username=b.username

(三)交叉連接
交叉連接不帶WHERE 子句,它返回被連接的兩個表所有數據行的笛卡爾積,返回到結果集合中的數
據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。
例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數將等
於6*8=48行。
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type

'-----------------------------------------------------------------------

時間有限,平時在工作中還有很多的查詢技巧.有時間我再搜集貼出來

上一篇:小弟總結的幾個日期時間函數
下一篇:運行時實現組件移動,改變大小

❻ SQL語句語法大全

我整理的一些比較常用的SQL語句語法 需要的朋友可以過來參考下

一 數據控制語句 (DML) 部分

INSERT (往數據表裡插入記錄的語句)

INSERT INTO 表名(欄位名 欄位名 ……) VALUES ( 值 值 ……);

INSERT INTO 表名(欄位名 欄位名 ……) SELECT 欄位名 欄位名 …… FROM 另外的表名;

字元串類型的欄位值必須用單引號括起來 例如: GOOD DAY

如果欄位值里包含單引號 需要進行字元串轉換 我們把它替換成兩個單引號

字元串類型的欄位值超過定義的長度會出錯 最好在插入前進行長度校驗

日期欄位的欄位值可以用當前資料庫的系統時間SYSDATE 精確到秒

或者用字元串轉換成日期型函數TO_DATE(『 YYYY MM DD )

TO_DATE()還有很多種日期格式 可以參看ORACLE DOC

年 月 日 小時:分鍾:秒 的格式YYYY MM DD HH :MI:SS

INSERT時最大可操作的字元串長度小於等於 個單位元組 如果要插入更長的字元串 請考慮欄位用CLOB類型

方法借用ORACLE里自帶的DBMS_LOB程序包

INSERT時如果要用到從 開始自動增長的序列號 應該先建立一個序列號

CREATE SEQUENCE 序列號的名稱 (最好是表名+序列號標記) INCREMENT BY START WITH

MAXVALUE CYCLE NOCACHE;

其中最大的值按欄位的長度來定 如果定義的自動增長的序列號 NUMBER( ) 最大值為

INSERT 語句插入這個欄位值為: 序列號的名稱 NEXTVAL

DELETE (刪除數據表裡記錄的語句)

DELETE FROM表名 WHERE 條件;

注意 刪除記錄並不能釋放ORACLE里被佔用的數據塊表空間 它只把那些被刪除的數據塊標成unused

如果確實要刪除一個大表裡的全部記錄 可以用 TRUNCATE 命令 它可以釋放佔用的數據塊表空間

TRUNCATE TABLE 表名;

此操作不可回退

UPDATE (修改數據表裡記錄的語句)

UPDATE表名 SET 欄位名 =值 欄位名 =值 …… WHERE 條件;

如果修改的值N沒有賦值或定義時 將把原來的記錄內容清為NULL 最好在修改前進行非空校驗;

值N超過定義的長度會出錯 最好在插入前進行長度校驗

注意事項:

A 以上SQL語句對表都加上了行級鎖

確認完成後 必須加上事物處理結束的命令 MIT 才能正式生效

否則改變不一定寫入資料庫里

如果想撤回這些操作 可以用命令 ROLLBACK 復原

B 在運行INSERT DELETE 和 UPDATE 語句前最好估算一下可能操作的記錄范圍

應該把它限定在較小 (一萬條記錄) 范圍內 否則ORACLE處理這個事物用到很大的回退段

程序響應慢甚至失去響應 如果記錄數上十萬以上這些操作 可以把這些SQL語句分段分次完成

其間加上MIT 確認事物處理

二 數據定義 (DDL) 部分

CREATE (創建表 索引 視圖 同義詞 過程 函數 資料庫鏈接等)

ORACLE常用的欄位類型有

CHAR 固定長度的字元串

VARCHAR 可變長度的字元串

NUMBER(M N) 數字型M是位數總長度 N是小數的長度

DATE 日期類型

創建表時要把較小的不為空的欄位放在前面 可能為空的欄位放在後面

創建表時可以用中文的欄位名 但最好還是用英文的欄位名

創建表時可以給欄位加上默認值 例如 DEFAULT SYSDATE

這樣每次插入和修改時 不用程序操作這個欄位都能得到動作的時間

創建表時可以給欄位加上約束條件

例如 不允許重復 UNIQUE 關鍵字 PRIMARY KEY

ALTER (改變表 索引 視圖等)

改變表的名稱

ALTER TABLE 表名 TO 表名 ;

在表的後面增加一個欄位

ALTER TABLE表名 ADD 欄位名 欄位名描述;

修改表裡欄位的定義描述

ALTER TABLE表名 MODIFY欄位名 欄位名描述;

給表裡的欄位加上約束條件

ALTER TABLE 表名 ADD CONSTRAINT 約束名 PRIMARY KEY (欄位名);

ALTER TABLE 表名 ADD CONSTRAINT 約束名 UNIQUE (欄位名);

把表放在或取出資料庫的內存區

ALTER TABLE 表名 CACHE;

ALTER TABLE 表名 NOCACHE;

DROP (刪除表 索引 視圖 同義詞 過程 函數 資料庫鏈接等)

刪除表和它所有的約束條件

DROP TABLE 表名 CASCADE CONSTRAINTS;

TRUNCATE (清空表裡的所有記錄 保留表的結構)

TRUNCATE 表名;

三 查詢語句 (SELECT) 部分

SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] WHERE 條件;

欄位名可以帶入函數

例如: COUNT(*) MIN(欄位名) MAX(欄位名) AVG(欄位名) DISTINCT(欄位名)

TO_CHAR(DATE欄位名 YYYY MM DD HH :MI:SS )

NVL(EXPR EXPR )函數

解釋:

IF EXPR =NULL

RETURN EXPR

ELSE

RETURN EXPR

DECODE(AA﹐V ﹐R ﹐V ﹐R )函數

解釋:

IF AA=V THEN RETURN R

IF AA=V THEN RETURN R

ELSE

RETURN NULL

LPAD(char n char )函數

解釋:

字元char 按制定的位數n顯示 不足的位數用char 字元串替換左邊的空位

欄位名之間可以進行算術運算

例如: (欄位名 *欄位名 )/

查詢語句可以嵌套

例如: SELECT …… FROM

(SELECT …… FROM表名 [表名 ……] WHERE 條件) WHERE 條件 ;

兩個查詢語句的結果可以做集合操作

例如: 並集UNION(去掉重復記錄) 並集UNION ALL(不去掉重復記錄) 差集MINUS 交集INTERSECT

分組查詢

SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] GROUP BY欄位名

[HAVING 條件] ;

兩個以上表之間的連接查詢

SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] WHERE

表名 欄位名 = 表名 欄位名 [ AND ……] ;

SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] WHERE

表名 欄位名 = 表名 欄位名(+) [ AND ……] ;

有(+)號的欄位位置自動補空值

查詢結果集的排序操作 默認的排序是升序ASC 降序是DESC

SELECT欄位名 欄位名 …… FROM 表名 [表名 ……]

ORDER BY欄位名 欄位名 DESC;

字元串模糊比較的方法

INSTR(欄位名 『字元串 )>

欄位名 LIKE 『字元串% [『%字元串% ]

每個表都有一個隱含的欄位ROWID 它標記著記錄的唯一性

四 ORACLE里常用的數據對象 (SCHEMA)

索引 (INDEX)

CREATE INDEX 索引名ON 表名 ( 欄位 [欄位 ……] );

ALTER INDEX 索引名 REBUILD;

一個表的索引最好不要超過三個 (特殊的大表除外) 最好用單欄位索引 結合SQL語句的分析執行情況

也可以建立多欄位的組合索引和基於函數的索引

ORACLE 字元串可以索引的最大長度為 單位元組

ORACLE 字元串可以索引的最大長度為 單位元組

ORACLE DOC上說字元串最大可以建索引的長度約是:數據塊的大小(db_block_size)* %

視圖 (VIEW)

CREATE VIEW 視圖名AS SELECT … FROM … ;

ALTER VIEW視圖名 PILE;

視圖僅是一個SQL查詢語句 它可以把表之間復雜的關系簡潔化

同義詞 (SYNONMY)

CREATE SYNONYM同義詞名FOR 表名;

CREATE SYNONYM同義詞名FOR 表名@資料庫鏈接名;

資料庫鏈接 (DATABASE LINK)

CREATE DATABASE LINK資料庫鏈接名CONNECT TO 用戶名 IDENTIFIED BY 密碼 USING 『資料庫連接字元串 ;

資料庫連接字元串可以用NET EASY CONFIG或者直接修改TNSNAMES ORA里定義

資料庫參數global_name=true時要求資料庫鏈接名稱跟遠端資料庫名稱一樣

資料庫全局名稱可以用以下命令查出

SELECT * FROM GLOBAL_NAME;

查詢遠端資料庫里的表

SELECT …… FROM 表名@資料庫鏈接名;

五 許可權管理 (DCL) 語句

GRANT 賦於許可權

常用的系統許可權集合有以下三個:

CONNECT(基本的連接) RESOURCE(程序開發) DBA(資料庫管理)

常用的數據對象許可權有以下五個:

ALL ON 數據對象名 SELECT ON 數據對象名 UPDATE ON 數據對象名

DELETE ON 數據對象名 INSERT ON 數據對象名 ALTER ON 數據對象名

GRANT CONNECT RESOURCE TO 用戶名;

GRANT SELECT ON 表名 TO 用戶名;

GRANT SELECT INSERT DELETE ON表名 TO 用戶名 用戶名 ;

REVOKE 回收許可權

REVOKE CONNECT RESOURCE FROM 用戶名;

REVOKE SELECT ON 表名 FROM 用戶名;

lishixin/Article/program/MySQL/201311/29570

❼ sql查詢語句

SQL查詢就是用的select相關的語句,根據不用的需求,設置關鍵屬性值和查詢區間即可完成一條查詢語句

❽ SQL查詢語句大全(一)

Select --從資料庫表中檢索數據行和列

Insert --向資料庫表添加新數據行

Delete --從資料庫表中刪除數據行

Update --更新資料庫表中的數據

Create TABLE --創建一個資料庫表

Drop TABLE --從資料庫中刪除表

Alter TABLE --修改資料庫表結構

Create VIEW --創建一個視圖

Drop VIEW --從資料庫中刪除視圖

Create INDEX --為資料庫表創建一個索引

Drop INDEX --從資料庫中刪除索引

Create PROCEDURE --創建一個存儲過程

Drop PROCEDURE --從資料庫中刪除存儲過程

Create TRIGGER --創建一個觸發器

Drop TRIGGER --從資料庫中刪除觸發器

Create SCHEMA --向資料庫添加一個新模式

Drop SCHEMA --從資料庫中刪除一個模式

Create DOMAIN --創建一個數據值域

Alter DOMAIN --改變域定義

Drop DOMAIN --從資料庫中刪除一個域

GRANT --授予用戶訪問許可權

DENY --拒絕用戶訪問

REVOKE --解除用戶訪問許可權

COMMIT --結束當前事務

ROLLBACK --中止當前事務

SET TRANSACTION --定義當前事務數據訪問特徵

DECLARE --為查詢設定游標

EXPLAN --為查詢描述數據訪問計劃

OPEN --檢索查詢結果打開一個游標

FETCH --檢索一行查詢結果

CLOSE --關閉游標

PREPARE --為動態執行准備 SQL 語句

EXECUTE --動態地執行 SQL 語句

DESCRIBE --描述准備好的查詢

declare @id char(10)

--set @id = '10010001'

select @id = '10010001'

---必須以@@開頭

declare @x int @y int @z int

select @x = 1 @y = 2 @z=3

if @x > @y

print 'x > y' --列印字元串'x > y'

else if @y > @z

print 'y > z'

else print 'z > y'

use pangu

update employee

set e_wage =

case

when job_level = 』1』 then e_wage*1.08

when job_level = 』2』 then e_wage*1.07

when job_level = 』3』 then e_wage*1.06

else e_wage*1.05

end

declare @x int @y int @c int

select @x = 1 @y=1

while @x < 3

begin

print @x --列印變數 x 的值

while @y < 3

begin

select @c =100*@x+ @y

print @c --列印變數 c 的值

select @y = @y + 1

end

select @x = @x + 1

select @y = 1

end

--例 等待 1 小時 2 分零 3 秒後才執行 Select 語句

waitfor delay 』01:02:03』

select * from employee

--例 等到晚上 11 點零 8 分後才執行 Select 語句

waitfor time 』23:08:00』

select * from employee

select *(列名) from table_name(表名) where column_name operator value

ex:(宿主)

select * from stock_information where stockid = str(nid)

stockname = 'str_name'

stockname like '% find this %'

stockname like '[a-zA-Z]%' --------- ([]指定值的范圍)

stockname like '[^F-M]%' --------- (^排除指定范圍)

--------- 只能在使用 like 關鍵字的 where 子句中使用通配符)

or stockpath = 'stock_path'

or stocknumber < 1000

and stockindex = 24

not stocksex = 'man'

stocknumber between 20 and 100

stocknumber in(10,20,30)

order by stockid desc(asc) --------- 排序,desc-降序,asc-升序

order by 1,2 --------- by 列號 stockname = (select stockname from stock_information where stockid = 4)

--------- 子查詢

--------- 除非能確保內層 select 只返回一個行的值,

--------- 否則應在外層 where 子句中用一個 in 限定符

select distinct column_name form table_name --------- distinct 指定檢索獨有的列值,不重復

select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name

select stockname , "stocknumber" = count(*) from table_name group by stockname

--------- group by 將表按行分組,指定列中有相同的值

having count(*) = 2 --------- having 選定指定的組

select *

from table1, table2

where table1.id *= table2.id -------- 左外部連接,table1 中有的而 table2 中沒有得以 null 表示

table1.id =* table2.id -------- 右外部連接

select stockname from table1

union [all] ----- union 合並查詢結果集,all-保留重復行

select stockname from table2

insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")

value (select Stockname , Stocknumber from Stock_table2)---value 為 select 語句

update table_name set Stockname = "xxx" [where Stockid = 3]

Stockname = default

Stockname = null

Stocknumber = Stockname + 4

delete from table_name where Stockid = 3

truncate table_name ----------- 刪除表中所有行,仍保持表的完整性

drop table table_name --------------- 完全刪除表

alter table database.owner.table_name add column_name char(2) null .....

sp_help table_name ---- 顯示表已有特徵

create table table_name (name char(20), age smallint, lname varchar(30))

insert into table_name select ......... ----- 實現刪除列的方法(創建新表)

alter table table_name drop constraint Stockname_default ---- 刪除 Stockname 的 default 約束

❾ Sql 常用的查詢語句

SELECT
從資料庫中檢索行,並允許從一個或多個表中選擇一個或多個行或列。雖然 SELECT 語句的完整語法較復雜,但是其主要的子句可歸納如下:

SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]

可以在查詢之間使用 UNION 運算符,以將查詢的結果組合成單個結果集。