1 1 SQL语句集锦 2 2 --语 句 功 能 3 3 --数据操作 4 4 SELECT --从数据库表中检索数据行和列 5 5 INSERT --向数据库表添加新数据行 6 6 DELETE --从数据库表中删除数据行 7 7 UPDATE --更新数据库表中的数据 8 truncate table 表 --//删除表中数据 9 10 8 --数据定义 11 9 CREATE TABLE --创建一个数据库表 12 10 DROP TABLE --从数据库中删除表 13 11 ALTER TABLE --修改数据库表结构 14 12 CREATE VIEW --创建一个视图 15 13 DROP VIEW --从数据库中删除视图 16 14 CREATE INDEX --为数据库表创建一个索引 17 15 DROP INDEX --从数据库中删除索引 18 16 CREATE PROCEDURE --创建一个存储过程 19 17 DROP PROCEDURE --从数据库中删除存储过程 20 18 CREATE TRIGGER --创建一个触发器 21 19 DROP TRIGGER --从数据库中删除触发器 22 20 CREATE SCHEMA --向数据库添加一个新模式 23 21 DROP SCHEMA --从数据库中删除一个模式 24 22 CREATE DOMAIN --创建一个数据值域 25 23 ALTER DOMAIN --改变域定义 26 24 DROP DOMAIN --从数据库中删除一个域 27 25 --数据控制 28 26 GRANT --授予用户访问权限 29 27 DENY --拒绝用户访问 30 28 REVOKE --解除用户访问权限 31 29 --事务控制 32 30 COMMIT --结束当前事务 33 31 ROLLBACK --中止当前事务 34 32 SET TRANSACTION --定义当前事务数据访问特征 35 33 --程序化SQL 36 34 DECLARE --为查询设定游标 37 35 EXPLAN --为查询描述数据访问计划 38 36 OPEN --检索查询结果打开一个游标 39 37 FETCH --检索一行查询结果 40 38 CLOSE --关闭游标 41 39 PREPARE --为动态执行准备SQL 语句 42 40 EXECUTE --动态地执行SQL 语句 43 41 DESCRIBE --描述准备好的查询 44 42 45 43 46 44 ---局部变量 47 45 declare @id char(10) 48 46 --set @id = '10010001' 49 47 select @id = '10010001' 50 48 51 49 ---全局变量 52 50 ---必须以@@开头 53 51 54 52 --IF ELSE 55 53 declare @x int @y int @z int 56 54 select @x = 1 @y = 2 @z=3 57 55 if @x > @y 58 56 print 'x > y' --打印字符串'x > y' 59 57 else if @y > @z 60 58 print 'y > z' 61 59 else print 'z > y' 62 60 63 61 --CASE 64 62 use pangu 65 63 update employee 66 64 set e_wage = 67 65 case 68 66 when job_level = ’1’ then e_wage*1.08 69 67 when job_level = ’2’ then e_wage*1.07 70 68 when job_level = ’3’ then e_wage*1.06 71 69 else e_wage*1.05 72 70 end 73 71 74 72 --WHILE CONTINUE BREAK 75 73 declare @x int @y int @c int 76 74 select @x = 1 @y=1 77 75 while @x < 3 78 76 begin 79 77 print @x --打印变量x 的值 80 78 while @y < 3 81 79 begin 82 80 select @c = 100*@x + @y 83 81 print @c --打印变量c 的值 84 82 select @y = @y + 1 85 83 end 86 84 select @x = @x + 1 87 85 select @y = 1 88 86 end 89 87 90 88 --WAITFOR 91 89 --例 等待1 小时2 分零3 秒后才执行SELECT 语句 92 90 waitfor delay ’01:02:03’ 93 91 select * from employee 94 92 --例 等到晚上11 点零8 分后才执行SELECT 语句 95 93 waitfor time ’23:08:00’ 96 94 select * from employee 97 95 98 96 99 97 100 98 ***SELECT***101 99 102 100 select *(列名) from table_name(表名) where column_name operator value103 101 ex:(宿主)104 102 select * from stock_information where stockid = str(nid)105 103 stockname = 'str_name' 106 104 stockname like '% find this %' 107 105 stockname like '[a-zA-Z]%' --------- ([]指定值的范围)108 106 stockname like '[^F-M]%' --------- (^排除指定范围)109 107 --------- 只能在使用like关键字的where子句中使用通配符)110 108 or stockpath = 'stock_path'111 109 or stocknumber < 1000112 110 and stockindex = 24113 111 not stocksex = 'man'114 112 stocknumber between 20 and 100115 113 stocknumber in(10,20,30)116 114 order by stockid desc(asc) --------- 排序,desc-降序,asc-升序117 115 order by 1,2 --------- by列号118 116 stockname = (select stockname from stock_information where stockid = 4)119 117 --------- 子查询120 118 --------- 除非能确保内层select只返回一个行的值,121 119 --------- 否则应在外层where子句中用一个in限定符122 120 select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复123 121 select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name124 122 select stockname , "stocknumber" = count(*) from table_name group by stockname125 123 --------- group by 将表按行分组,指定列中有相同的值126 124 having count(*) = 2 --------- having选定指定的组127 125 128 126 select * 129 127 from table1, table2 130 128 where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示131 129 table1.id =* table2.id -------- 右外部连接 132 130 133 131 134 132 select stockname from table1135 133 union [all] ----- union合并查询结果集,all-保留重复行136 134 select stockname from table2137 135 138 136 ***insert***139 137 140 138 insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")141 139 value (select Stockname , Stocknumber from Stock_table2)---value为select语句142 140 143 141 ***update***144 142 145 143 update table_name set Stockname = "xxx" [where Stockid = 3]146 144 Stockname = default147 145 Stockname = null148 146 Stocknumber = Stockname + 4149 147 150 148 ***delete***151 149 152 150 delete from table_name where Stockid = 3153 151 truncate table_name ----------- 删除表中所有行,仍保持表的完整性154 152 drop table table_name --------------- 完全删除表155 153 156 154 ***alter table*** --- 修改数据库表结构157 155 158 156 alter table database.owner.table_name add column_name char(2) null .....159 157 sp_help table_name ---- 显示表已有特征160 158 create table table_name (name char(20), age smallint, lname varchar(30))161 159 insert into table_name select ......... ----- 实现删除列的方法(创建新表)162 160 alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束163 161 164 162 ***function(/*常用函数*/)***165 163 166 164 ----统计函数----167 165 AVG --求平均值168 166 COUNT --统计数目169 167 MAX --求最大值170 168 MIN --求最小值171 169 SUM --求和172 170 173 171 174 172 175 173 --AVG176 174 use pangu177 175 select avg(e_wage) as dept_avgWage178 176 from employee179 177 group by dept_id180 178 181 179 --MAX182 180 --求工资最高的员工姓名183 181 use pangu184 182 select e_name185 183 from employee186 184 where e_wage =187 185 (select max(e_wage)188 186 from employee)189 187 190 188 --STDEV()191 189 --STDEV()函数返回表达式中所有数据的标准差192 190 193 191 --STDEVP()194 192 --STDEVP()函数返回总体标准差195 193 196 194 --VAR()197 195 --VAR()函数返回表达式中所有值的统计变异数198 196 199 197 --VARP()200 198 --VARP()函数返回总体变异数201 199 202 200 ----算术函数----203 201 204 202 /***三角函数***/205 203 SIN(float_expression) --返回以弧度表示的角的正弦206 204 COS(float_expression) --返回以弧度表示的角的余弦207 205 TAN(float_expression) --返回以弧度表示的角的正切208 206 COT(float_expression) --返回以弧度表示的角的余切209 207 /***反三角函数***/210 208 ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角211 209 ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角212 210 ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角213 211 ATAN2(float_expression1,float_expression2) 214 212 --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角215 213 DEGREES(numeric_expression)216 214 --把弧度转换为角度返回与表达式相同的数据类型可为217 215 --INTEGER/MONEY/REAL/FLOAT 类型218 216 RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为219 217 --INTEGER/MONEY/REAL/FLOAT 类型220 218 EXP(float_expression) --返回表达式的指数值221 219 LOG(float_expression) --返回表达式的自然对数值222 220 LOG10(float_expression)--返回表达式的以10 为底的对数值223 221 SQRT(float_expression) --返回表达式的平方根224 222 /***取近似值函数***/225 223 CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为226 224 --INTEGER/MONEY/REAL/FLOAT 类型227 225 FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为228 226 --INTEGER/MONEY/REAL/FLOAT 类型229 227 ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据230 228 --类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型231 229 ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为232 230 --INTEGER/MONEY/REAL/FLOAT 类型233 231 SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型234 232 --与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型235 233 PI() --返回值为π 即3.1415926535897936236 234 RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数237 235 238 236 239 237 240 238 ----字符串函数----241 239 ASCII() --函数返回字符表达式最左端字符的ASCII 码值242 240 CHAR() --函数用于将ASCII 码转换为字符243 241 --如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值244 242 LOWER() --函数把字符串全部转换为小写245 243 UPPER() --函数把字符串全部转换为大写246 244 STR() --函数把数值型数据转换为字符型数据247 245 LTRIM() --函数把字符串头部的空格去掉248 246 RTRIM() --函数把字符串尾部的空格去掉249 247 LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串250 248 CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置251 249 SOUNDEX() --函数返回一个四位字符码 252 250 --SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值 253 251 DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异254 252 --0 两个SOUNDEX 函数返回值的第一个字符不同255 253 --1 两个SOUNDEX 函数返回值的第一个字符相同256 254 --2 两个SOUNDEX 函数返回值的第一二个字符相同257 255 --3 两个SOUNDEX 函数返回值的第一二三个字符相同258 256 --4 两个SOUNDEX 函数返回值完全相同259 257 260 258 261 259 QUOTENAME() --函数返回被特定字符括起来的字符串262 260 /*select quotename('abc', '{') quotename('abc')263 261 运行结果如下264 262 ----------------------------------{265 263 {abc} [abc]*/266 264 267 265 REPLICATE() --函数返回一个重复character_expression 指定次数的字符串268 266 /*select replicate('abc', 3) replicate( 'abc', -2)269 267 运行结果如下270 268 ----------- -----------271 269 abcabcabc NULL*/272 270 273 271 REVERSE() --函数将指定的字符串的字符排列顺序颠倒274 272 REPLACE() --函数返回被替换了指定子串的字符串275 273 /*select replace('abc123g', '123', 'def')276 274 运行结果如下277 275 ----------- -----------278 276 abcdefg*/279 277 280 278 281 279 SPACE() --函数返回一个有指定长度的空白字符串282 280 STUFF() --函数用另一子串替换字符串指定位置长度的子串283 281 284 282 285 283 ----数据类型转换函数----286 284 CAST() 函数语法如下287 285 CAST() (AS [ length ])288 286 CONVERT() 函数语法如下289 287 CONVERT() ( [ length ], [, style])290 288 291 289 select cast(100+99 as char) convert(varchar(12), getdate())292 290 运行结果如下293 291 ------------------------------ ------------294 292 199 Jan 15 2000295 293 296 294 ----日期函数----297 295 DAY() --函数返回date_expression 中的日期值298 296 MONTH() --函数返回date_expression 中的月份值299 297 YEAR() --函数返回date_expression 中的年份值300 298 DATEADD( , , ) 301 299 --函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期302 300 DATEDIFF( , , )303 301 --函数返回两个指定日期在datepart 方面的不同之处304 302 DATENAME( , ) --函数以字符串的形式返回日期的指定部分305 303 DATEPART( , ) --函数以整数值的形式返回日期的指定部分306 304 GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间307 305 308 306 ----系统函数----309 307 APP_NAME() --函数返回当前执行的应用程序的名称310 308 COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值311 309 COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值312 310 COL_NAME( , ) --函数返回表中指定字段的名称即列名313 311 DATALENGTH() --函数返回数据表达式的数据的实际长度314 312 DB_ID(['database_name']) --函数返回数据库的编号315 313 DB_NAME(database_id) --函数返回数据库的名称316 314 HOST_ID() --函数返回服务器端计算机的名称317 315 HOST_NAME() --函数返回服务器端计算机的名称318 316 IDENTITY( [, seed increment]) [AS column_name])319 317 --IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中320 318 /*select identity(int, 1, 1) as column_name321 319 into newtable322 320 from oldtable*/323 321 ISDATE() --函数判断所给定的表达式是否为合理日期324 322 ISNULL( , ) --函数将表达式中的NULL 值用指定值替换325 323 ISNUMERIC() --函数判断所给定的表达式是否为合理的数值326 324 NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值327 325 NULLIF( , )328 326 --NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值