標準SQL語句總結標準SQL語句總結,標準SQL語言基本上適用於下麵所列出的資料庫軟體 ----------------------------------------------------------------------------- 資料庫軟體清單 A商業資料庫軟體如下 1.微軟的MS S...
標準SQL語句總結
標準SQL語句總結,標準SQL語言基本上適用於下麵所列出的資料庫軟體
-----------------------------------------------------------------------------
資料庫軟體清單
A商業資料庫軟體如下
1.微軟的MS SQL Server和Access
2.IBM的DB2,informax
3.Sybase的大型資料庫ASE,中小型資料庫ASA
4.甲骨文公司的Oracle8.0,oracle9i系列
5.Borland公司的InterBase
B多種開源免費資料庫
Mysql,PostgreSQL,SQLite、SimpleSQL、Berkely DB、Minosse、Firebird
(Mysql,PostgreSQL是目前使用最廣泛)
-----------------------------------------------------------------------------
最精簡短小的SQL語句
SQL分類:
DDL—數據定義語言(CREATE,ALTER,DROP,DECLARE)
DML—數據操縱語言(SELECT,DELETE,UPDATE,INSERT)
DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)
1、說明:創建資料庫CREATE DATABASE database-name
2、說明:刪除資料庫drop database dbname
3、說明:
備份sql server
USE master
EXEC sp_addumpdevice '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
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
-----------------------------------------------------------------------------
--數據常用操作
SELECT --從資料庫表中檢索數據
INSERT --向資料庫表添加新數據
UPDATE --更新資料庫表中的數據
DELETE --從資料庫表中刪除數據
-----------------------------------------------------------------------------
--資料庫對象操作語句
CREATE TABLE --創建一個資料庫表
ALTER TABLE --修改資料庫表結構
DROP TABLE --從資料庫中刪除表
CREATE VIEW --創建一個視圖
ALTER VIEW --修改一個視圖
DROP VIEW --刪除一個視圖
CREATE INDEX --為表創建一個索引
DROP INDEX --從表中刪除索引
CREATE PROCEDURE--創建一個存儲過程
DROP PROCEDURE --刪除存儲過程
CREATE TRIGGER --創建一個觸發器
DROP TRIGGER --從刪除觸發器
-----------------------------------------------------------------------------
--數據許可權控制
GRANT --授予用戶訪問許可權
DENY --拒絕用戶訪問
REVOKE --解除用戶訪問許可權
-----------------------------------------------------------------------------
--事務控制
COMMIT --結束當前事務
ROLLBACK --中止當前事務
SET TRANSACTION --定義當前事務數據訪問特征
-----------------------------------------------------------------------------
--資料庫函數,過程,觸發器腳本的SQL
DECLARE --為查詢設定游標
EXPLAN --為查詢描述數據訪問計劃
OPEN --檢索查詢結果打開一個游標
FETCH --檢索一行查詢結果
CLOSE --關閉游標
PREPARE --為動態執行準備SQL 語句
EXECUTE --動態地執行SQL 語句
DESCRIBE --描述準備好的查詢
-----------------------------------------------------------------------------
SELECT --從資料庫表中檢索數據
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 stock*** = '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 --向資料庫表添加新數據
insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")
value (select Stockname , Stocknumber from Stock_table2)---value為select語句
-----------------------------------------------------------------------------
UPDATE --更新資料庫表中的數據
update table_name set
Stockname = "xxx" [where Stockid = 3]
Stockname = default
Stockname = null
Stocknumber = Stockname + 4
where ***
-----------------------------------------------------------------------------
DELETE --從資料庫表中刪除數據
delete from table_name where Stockid = 3
truncate table_name ----------- 刪除表中所有行,仍保持表的完整性
drop table table_name --------------- 完全刪除表
-----------------------------------------------------------------------------
標準SQL統計函數
AVG --求平均值
COUNT --統計數目
MAX --求最大值
MIN --求最小值
SUM --求和
AVG代碼例子
use pangu
select avg(e_wage) as dept_avgWage from employee group by dept_id
MAX代碼例子--求工資最高的員工姓名
use pangu
select e_name from employee where e_wage =(select max(e_wage) from employee)
-----------------------------------------------------------------------------
標準SQL字元串函數
ASCII() --函數返回字元表達式最左端字元的ASCII 碼值
CHAR() --函數用於將ASCII 碼轉換為字元--如果沒有輸入0 ~ 255 之間的ASCII 碼值CHAR 函數會返回一個NULL
LOWER() --函數把字元串全部轉換為小寫
UPPER() --函數把字元串全部轉換為大寫
STR() --函數把數值型數據轉換為字元型數據
LTRIM() --函數把字元串頭部的空格去掉
RTRIM() --函數把字元串尾部的空格去掉
LEFT(),RIGHT(),SUBSTRING() --函數返回部分字元串
CHARINDEX(),PATINDEX() --函數返回字元串中某個指定的子串出現的開始位置
REPLICATE() --函數返回一個重覆character_expression 指定次數的字元串
select replicate('abc', 3) replicate( 'abc', -2)運行結果如下abcabcabc NULL
REVERSE() --函數將指定的字元串的字元排列順序顛倒
REPLACE() --函數返回被替換了指定子串的字元串
select replace('abc123g', '123', 'def')運行結果如下abcdefg
SPACE() --函數返回一個有指定長度的空白字元串
STUFF() --函數用另一子串替換字元串指定位置長度的子串
-----------------------------------------------------------------------------
標準SQL語法
局部變數和局變數
---局部變數 (以@開頭)
格式:declare @變數名 類型
--set @id = '10010001'
select @id = '10010001'
---全局變數 (必須以@@開頭)
格式:declare @@變數名 類型
代碼:select @@id = '10010001'
--IF ELSE
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'
--CASE
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
--WHILE
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
--WAITFOR
--例 等待1 小時2 分零3 秒後才執行SELECT 語句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 點零8 分後才執行SELECT 語句
waitfor time ’23:08:00’
select * from employee