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 value 103 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 < 1000 112 110 and stockindex = 24 113 111 not stocksex = 'man' 114 112 stocknumber between 20 and 100 115 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_name 124 122 select stockname , "stocknumber" = count(*) from table_name group by stockname 125 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 table1 135 133 union [all] ----- union合并查询结果集,all-保留重复行 136 134 select stockname from table2 137 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 = default 147 145 Stockname = null 148 146 Stocknumber = Stockname + 4 149 147 150 148 ***delete*** 151 149 152 150 delete from table_name where Stockid = 3 153 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 --AVG 176 174 use pangu 177 175 select avg(e_wage) as dept_avgWage 178 176 from employee 179 177 group by dept_id 180 178 181 179 --MAX 182 180 --求工资最高的员工姓名 183 181 use pangu 184 182 select e_name 185 183 from employee 186 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.1415926535897936 236 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() (<expression> AS <data_ type>[ length ]) 288 286 CONVERT() 函数语法如下 289 287 CONVERT() (<data_ type>[ length ], <expression> [, style]) 290 288 291 289 select cast(100+99 as char) convert(varchar(12), getdate()) 292 290 运行结果如下 293 291 ------------------------------ ------------ 294 292 199 Jan 15 2000 295 293 296 294 ----日期函数---- 297 295 DAY() --函数返回date_expression 中的日期值 298 296 MONTH() --函数返回date_expression 中的月份值 299 297 YEAR() --函数返回date_expression 中的年份值 300 298 DATEADD(<datepart> ,<number> ,<date>) 301 299 --函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期 302 300 DATEDIFF(<datepart> ,<number> ,<date>) 303 301 --函数返回两个指定日期在datepart 方面的不同之处 304 302 DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分 305 303 DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部分 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(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名 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(<data_type>[, seed increment]) [AS column_name]) 319 317 --IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中 320 318 /*select identity(int, 1, 1) as column_name 321 319 into newtable 322 320 from oldtable*/ 323 321 ISDATE() --函数判断所给定的表达式是否为合理日期 324 322 ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换 325 323 ISNUMERIC() --函数判断所给定的表达式是否为合理的数值 326 324 NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值 327 325 NULLIF(<expression1>, <expression2>) 328 326 --NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值