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 --定义当å‰äº‹åŠ¡æ•°æ®è®¿é—®ç‰¹å¾
--程åºåŒ–SQL
DECLARE --ä¸ºæŸ¥è¯¢è®¾å®šæ¸¸æ ‡
EXPLAN --为查询æè¿°æ•°æ®è®¿é—®è®¡åˆ’
OPEN --æ£€ç´¢æŸ¥è¯¢ç»“æžœæ‰“å¼€ä¸€ä¸ªæ¸¸æ ‡
FETCH --检索一行查询结果
CLOSE --å…³é—æ¸¸æ ‡
PREPARE --为动æ€æ‰§è¡Œå‡†å¤‡SQL è¯å¥
EXECUTE --动æ€åœ°æ‰§è¡ŒSQL è¯å¥
DESCRIBE --æ述准备好的查询
---局部å˜é‡
declare @id char(10)
--set @id = '10010001'
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 CONTINUE BREAK
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
***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
***delete***
delete from table_name where Stockid = 3
truncate table_name ----------- åˆ é™¤è¡¨ä¸æ‰€æœ‰è¡Œï¼Œä»ä¿æŒè¡¨çš„完整性
drop table table_name --------------- å®Œå…¨åˆ é™¤è¡¨
***alter table*** --- 修改数æ®åº“表结构
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约æŸ
***function(/*常用函数*/)***
----统计函数----
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)
--STDEV()
--STDEV()函数返回表达å¼ä¸æ‰€æœ‰æ•°æ®çš„æ ‡å‡†å·®
--STDEVP()
--STDEVP()å‡½æ•°è¿”å›žæ€»ä½“æ ‡å‡†å·®
--VAR()
--VAR()函数返回表达å¼ä¸æ‰€æœ‰å€¼çš„统计å˜å¼‚
--VARP()
--VARP()函数返回总体å˜å¼‚æ•°
----算术函数----
/***三角函数***/
SIN(float_expression) --返回以弧度表示的角的æ£å¼¦
COS(float_expression) --返回以弧度表示的角的余弦
TAN(float_expression) --返回以弧度表示的角的æ£åˆ‡
COT(float_expression) --返回以弧度表示的角的余切
/***å三角函数***/
ASIN(float_expression) --返回æ£å¼¦æ˜¯FLOAT 值的以弧度表示的角
ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角
ATAN(float_expression) --返回æ£åˆ‡æ˜¯FLOAT 值的以弧度表示的角
ATAN2(float_expression1,float_expression2)
--返回æ£åˆ‡æ˜¯float_expression1 /float_expres-sion2的以弧度表示的角
DEGREES(numeric_expression)
--把弧度转æ¢ä¸ºè§’度返回与表达å¼ç›¸åŒçš„æ•°æ®ç±»åž‹å¯ä¸º
--INTEGER/MONEY/REAL/FLOAT 类型
RADIANS(numeric_expression) --把角度转æ¢ä¸ºå¼§åº¦è¿”回与表达å¼ç›¸åŒçš„æ•°æ®ç±»åž‹å¯ä¸º
--INTEGER/MONEY/REAL/FLOAT 类型
EXP(float_expression) --返回表达å¼çš„指数值
LOG(float_expression) --返回表达å¼çš„自然对数值
LOG10(float_expression)--返回表达å¼çš„以10 为底的对数值
SQRT(float_expression) --返回表达å¼çš„å¹³æ–¹æ ¹
/***å–近似值函数***/
CEILING(numeric_expression) --返回>=表达å¼çš„最å°æ•´æ•°è¿”回的数æ®ç±»åž‹ä¸Žè¡¨è¾¾å¼ç›¸åŒå¯ä¸º
--INTEGER/MONEY/REAL/FLOAT 类型
FLOOR(numeric_expression) --返回<=表达å¼çš„最å°æ•´æ•°è¿”回的数æ®ç±»åž‹ä¸Žè¡¨è¾¾å¼ç›¸åŒå¯ä¸º
--INTEGER/MONEY/REAL/FLOAT 类型
ROUND(numeric_expression) --返回以integer_expression 为精度的四èˆäº”入值返回的数æ®
--类型与表达å¼ç›¸åŒå¯ä¸ºINTEGER/MONEY/REAL/FLOAT 类型
ABS(numeric_expression) --返回表达å¼çš„ç»å¯¹å€¼è¿”回的数æ®ç±»åž‹ä¸Žè¡¨è¾¾å¼ç›¸åŒå¯ä¸º
--INTEGER/MONEY/REAL/FLOAT 类型
SIGN(numeric_expression) --测试å‚æ•°çš„æ£è´Ÿå·è¿”回0 零值1 æ£æ•°æˆ–-1 负数返回的数æ®ç±»åž‹
--与表达å¼ç›¸åŒå¯ä¸ºINTEGER/MONEY/REAL/FLOAT 类型
PI() --返回值为π å³3.1415926535897936
RAND([integer_expression]) --用任选的[integer_expression]åšç§å值得出0-1 é—´çš„éšæœºæµ®ç‚¹æ•°
----å—符串函数----
ASCII() --函数返回å—符表达å¼æœ€å·¦ç«¯å—符的ASCII ç 值
CHAR() --函数用于将ASCII ç 转æ¢ä¸ºå—符
--如果没有输入0 ~ 255 之间的ASCII ç 值CHAR 函数会返回一个NULL 值
LOWER() --函数把å—符串全部转æ¢ä¸ºå°å†™
UPPER() --函数把å—符串全部转æ¢ä¸ºå¤§å†™
STR() --函数把数值型数æ®è½¬æ¢ä¸ºå—符型数æ®
LTRIM() --函数把å—ç¬¦ä¸²å¤´éƒ¨çš„ç©ºæ ¼åŽ»æŽ‰
RTRIM() --函数把å—ç¬¦ä¸²å°¾éƒ¨çš„ç©ºæ ¼åŽ»æŽ‰
LEFT(),RIGHT(),SUBSTRING() --函数返回部分å—符串
CHARINDEX(),PATINDEX() --函数返回å—符串ä¸æŸä¸ªæŒ‡å®šçš„å串出现的开始ä½ç½®
SOUNDEX() --函数返回一个四ä½å—符ç
--SOUNDEX函数å¯ç”¨æ¥æŸ¥æ‰¾å£°éŸ³ç›¸ä¼¼çš„å—符串但SOUNDEX函数对数å—和汉å—å‡åªè¿”回0 值
DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个å—符表达å¼çš„值的差异
--0 两个SOUNDEX 函数返回值的第一个å—符ä¸åŒ
--1 两个SOUNDEX 函数返回值的第一个å—符相åŒ
--2 两个SOUNDEX 函数返回值的第一二个å—符相åŒ
--3 两个SOUNDEX 函数返回值的第一二三个å—符相åŒ
--4 两个SOUNDEX 函数返回值完全相åŒ
QUOTENAME() --函数返回被特定å—符括起æ¥çš„å—符串
/*select quotename('abc', '{') quotename('abc')
è¿è¡Œç»“果如下
----------------------------------{
{abc} [abc]*/
REPLICATE() --函数返回一个é‡å¤character_expression 指定次数的å—符串
/*select replicate('abc', 3) replicate( 'abc', -2)
è¿è¡Œç»“果如下
----------- -----------
abcabcabc NULL*/
REVERSE() --函数将指定的å—符串的å—符排列顺åºé¢ 倒
REPLACE() --函数返回被替æ¢äº†æŒ‡å®šå串的å—符串
/*select replace('abc123g', '123', 'def')
è¿è¡Œç»“果如下
----------- -----------
abcdefg*/
SPACE() --函数返回一个有指定长度的空白å—符串
STUFF() --函数用å¦ä¸€å串替æ¢å—符串指定ä½ç½®é•¿åº¦çš„å串
----æ•°æ®ç±»åž‹è½¬æ¢å‡½æ•°----
CAST() 函数è¯æ³•å¦‚下
CAST() (<expression> AS <data_ type>[ length ])
CONVERT() 函数è¯æ³•å¦‚下
CONVERT() (<data_ type>[ length ], <expression> [, style])
select cast(100+99 as char) convert(varchar(12), getdate())