常用的sql函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用的sql函数相关的知识,希望对你有一定的参考价值。

请写出10常用的sql函数。谢谢!!!!!!!!!!!!!!!!!

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

参考资料:http://hi.baidu.com/37116566/blog/item/078a073bdcdb6be815cecbe6.html

参考技术A

SQL 拥有很多可用于计数和计算的内建函数。

SQL Aggregate 函数

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

有用的 Aggregate 函数:

    AVG() – 返回平均值

    COUNT() – 返回行数

    FIRST() – 返回第一个记录的值

    LAST() – 返回最后一个记录的值

    MAX() – 返回最大值

    MIN() – 返回最小值

    SUM() – 返回总和

SQL Scalar 函数

SQL Scalar 函数基于输入值,返回一个单一的值。

有用的 Scalar 函数:

    UCASE() – 将某个字段转换为大写

    LCASE() – 将某个字段转换为小写

    MID() – 从某个文本字段提取字符,mysql 中使用

    SubString(字段,1,end) – 从某个文本字段提取字符

    LEN() – 返回某个文本字段的长度

    ROUND() – 对某个数值字段进行指定小数位数的四舍五入

    NOW() – 返回当前的系统日期和时间

    FORMAT() – 格式化某个字段的显示方式

-from shulanxt

参考技术B 1.isnull() 空记录操作
2.getdate() 获取当前时间
3.convert() 类型转换
4.dateadd() 日期增加
5.datediff() 日期差
6.substring() 取字符串
7.replace() 字符串替换
8.left(),right() 取左右子字符串
9.LTrim(),RTrim() 去字符串左右空格
10.STR(),int() 类型转换

My sql 常用函数

一、数学函数
  数学函数主要用于处理数字,包括整型、浮点数等。

ABS(x)    
返回x的绝对值  

SELECT ABS(-1) -- 返回1

CEIL(x),CEILING(x)    
返回大于或等于x的最小整数  

SELECT CEIL(1.5) -- 返回2

FLOOR(x)    
返回小于或等于x的最大整数  

SELECT FLOOR(1.5) -- 返回1

RAND()    
返回0->1的随机数  

SELECT RAND() --0.93099315644334

RAND(x)    
返回0->1的随机数,x值相同时返回的随机数相同  

SELECT RAND(2) --1.5865798029924

PI()    
返回圆周率(3.141593)  

SELECT PI() --3.141593

TRUNCATE(x,y)    
返回数值x保留到小数点后y位的值(与ROUND最大的区别是不会进行四舍五入)  

SELECT TRUNCATE(1.23456,3) -- 1.234

ROUND(x,y)    
保留x小数点后y位的值,但截断时要进行四舍五入  

SELECT ROUND(1.23456,3) -- 1.235

POW(x,y).POWER(x,y)    
返回x的y次方  

SELECT POW(2,3) -- 8

SQRT(x)    
返回x的平方根  

SELECT SQRT(25) -- 5

EXP(x)    
返回e的x次方  

SELECT EXP(3) -- 20.085536923188

MOD(x,y)    
返回x除以y以后的余数  

SELECT MOD(5,2) -- 1

 

二、字符串函数
  字符串函数是MySQL中最常用的一类函数,字符串函数主要用于处理表中的字符串。

函数    说明

CHAR_LENGTH(s)    
返回字符串s的字符数

SELECT CHAR_LENGTH(你好123) -- 5

CONCAT(s1,s2,...)    
将字符串s1,s2等多个字符串合并为一个字符串

SELECT CONCAT(12,34) -- 1234

CONCAT_WS(x,s1,s2,...)    
同CONCAT(s1,s2,...)函数,但是每个字符串直接要加上x

SELECT CONCAT_WS(@,12,34) -- [email protected]

INSERT(s1,x,len,s2)    
将字符串s2替换s1的x位置开始长度为len的字符串

SELECT INSERT(12345,1,3,abc) -- abc45

UPPER(s),UCAASE(S)    
将字符串s的所有字母变成大写字母

SELECT UPPER(abc) -- ABC

LOWER(s),LCASE(s)    
将字符串s的所有字母变成小写字母

SELECT LOWER(ABC) -- abc

LEFT(s,n)    
返回字符串s的前n个字符

SELECT LEFT(abcde,2) -- ab

RIGHT(s,n)    
返回字符串s的后n个字符

SELECT RIGHT(abcde,2) -- de

LTRIM(s)    去掉字符串s开始处的空格
RTRIM(s)    去掉字符串s结尾处的空格
TRIM(s)    去掉字符串s开始和结尾处的空格
SELECT TRIM(@ FROM @@[email protected]@) -- abc

REPEAT(s,n)    
将字符串s重复n次

SELECT REPEAT(ab,3) -- ababab

SPACE(n)    返回n个空格

REPLACE(s,s1,s2)    
将字符串s2替代字符串s中的字符串s1

SELECT REPLACE(abca,a,x) --xbcx

STRCMP(s1,s2)    比较字符串s1和s2

SUBSTRING(s,n,len)    获取从字符串s中的第n个位置开始长度为len的字符串

LOCATE(s1,s),POSITION(s1 IN s)    
从字符串s中获取s1的开始位置

SELECT LOCATE(b, abc) -- 2

REVERSE(s)    
将字符串s的顺序反过来

SELECT REVERSE(abc) -- cba

FIELD(s,s1,s2...)    
返回第一个与字符串s匹配的字符串位置

SELECT FIELD(c,a,b,c) -- 3

 

三、日期时间函数
  MySQL的日期和时间函数主要用于处理日期时间。

函数    说明

CURDATE(),CURRENT_DATE()    
返回当前日期

SELECT CURDATE()
->2014-12-17

CURTIME(),CURRENT_TIME    
返回当前时间

SELECT CURTIME()
->15:59:02


NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),

SYSDATE(),LOCALTIMESTAMP()

返回当前日期和时间

SELECT NOW()
->2014-12-17 15:59:02

YEAR(d),
MONTH(d)
DAY(d)
返回日期d中的月份值,1->12

SELECT MONTH(2011-11-11 11:11:11)
->11

MONTHNAME(d)    
返回日期当中的月份名称,如Janyary

SELECT MONTHNAME(2011-11-11 11:11:11)
->November

DAYNAME(d)    
返回日期d是星期几,如Monday,Tuesday

SELECT DAYNAME(2011-11-11 11:11:11)
->Friday

DAYOFWEEK(d)    
日期d今天是星期几,1星期日,2星期一

SELECT DAYOFWEEK(2011-11-11 11:11:11)
->6

WEEKDAY(d)    
日期d今天是星期几,

 0表示星期一,1表示星期二

WEEK(d),WEEKOFYEAR(d)    
计算日期d是本年的第几个星期,范围是0->53

SELECT WEEK(2011-11-11 11:11:11)
->45

DAYOFYEAR(d)    
计算日期d是本年的第几天

SELECT DAYOFYEAR(2011-11-11 11:11:11)
->315

DAYOFMONTH(d)    
计算日期d是本月的第几天

SELECT DAYOFMONTH(2011-11-11 11:11:11)
->11

QUARTER(d)    
返回日期d是第几季节,返回1->4

SELECT QUARTER(2011-11-11 11:11:11)
->4

HOUR(t)    
返回t中的小时值

SELECT HOUR(1:2:3)
->1

MINUTE(t)    
返回t中的分钟值

SELECT MINUTE(1:2:3)
->2

SECOND(t)    
返回t中的秒钟值

SELECT SECOND(1:2:3)
->3




四、系统信息函数
  系统信息函数用来查询MySQL数据库的系统信息。

函数    作用
VERSION()    
返回数据库的版本号

SELECT VERSION()
->5.0.67-community-nt

CONNECTION_ID()     返回服务器的连接数
DATABASE()、SCHEMA    返回当前数据库名
USER()、SYSTEM_USER()
返回当前用户

五、加密函数
  加密函数是MySQL用来对数据进行加密的函数。

  1、PASSWORD(str)

  该函数可以对字符串str进行加密,一般情况下,PASSWORD(str)用于给用户的密码加密。

SELECT PASSWORD(123)
    ->*23AE809DDACAF96AF0FD78ED04B6A265E05AA257
  2、MD5

  MD5(str)函数可以对字符串str进行散列,可以用于一些普通的不需要解密的数据加密。

SELECT md5(123)
    ->202cb962ac59075b964b07152d234b70

  3、ENCODE(str,pswd_str)与DECODE(crypt_str,pswd_str)

  ENCODE函数可以使用加密密码pswd_str来加密字符串str,加密结果是二进制数,需要使用BLOB类型的字段保存。该函数与DECODE是一对,需要同样的密码才能够解密。

SELECT ENCODE(123,xxoo)
    ->;vx
SELECT DECODE(;vx,xxoo)
    ->123


insert into login values(lch,alvin,encode(123,xxoo),50)


select Name,decode(Password,xxoo) from login where username=lch

 

以上是关于常用的sql函数的主要内容,如果未能解决你的问题,请参考以下文章

常用SQL函数

My sql 常用函数

SQL常用函数总结

[SQL] 常用函数整理(T-SQL 版)

Oracle SQL*plus常用的命令和函数

sql常用的日期函数与应用