数据库学习(二)----基本函数

来源:互联网 发布:淘宝店铺上架宝贝数量 编辑:程序博客网 时间:2024/06/05 20:30

快速入门SELECT

SELECT句后面跟的是要查询的字段,可以包括表中的具体字段,函数或表达式
FROM句用来指定数据来源的表
WHERE句用来添加过滤条件,这样讲满足条件的记录查询出来
例如:

SELECT *(全列查找)FROM table_name

查找某几列

SELECT id,name,sal(指定查询表中的某几列)
FROM emp

SELECT * FROM emp_dongzhixiao;

//只查询三列的值
SELECT empno,ename,job
FROM emp_dongzhixiao

SELECT ‘hello’||’world’
FROM DUAL(虚表)

字符串小知识补充:

“||”在数据库中是连接字符串,相当于java中的”+”
注意和java中的”||”区分。
例如:
java中 “hello”+”world” ==> “helloworld”
DB中 ‘hello’||’world’ ==> ‘helloworld’
oracle中 CONCAT(‘hello’,’world’) ==>’helloworld’
‘think’||’in’||’java’
也可以使用字符串连接函数CONCAT(str1,str2)函数
CONCAT(CONCAT(‘think’,’in’),’java’)
例如:

SELECT ename||':'||salaryFROM emp_dongzhixiaoSELECT CONCAT(CONCAT(ename,':'),salary)FROM emp_dongzhixiaoSELECT ename,LENGTH(ename)FROM emp_dongzhixiao

一些其他函数:

LENGTH(str)函数:查看字符串长度
UPPER(str)/LOWER(str)/INITCAP(str)函数:将字符串转换为
全大写/全小写/首字母大写(可空格隔开多个单词使得每个单词首字母都大写,Oracle有,MySQL没有这个函数)
例如:

SELECT   UPPER(name),   LOWER(name), FROM emp_dongzhixiao;

DUAL:虚表,没有这么一个表,只为了满足SELECT的语法要求。

我们常用虚表来测试表达式的结果。
在数据库中,我们想测试某个表达式的结果只能
使用SELECT语句来实现。

什么时候使用虚表:当SELECT语句中没有任何表中的字段参与时

去除空白或相同字符的函数

TRIM([remstr FROM] str)/LTRIM(str)/RTRIM(str): 分别代表
去除字符串两边指定重复字符/仅仅去除左边空格/仅仅去除右边空格
参数中from前面只能是单一字符
若没有from以及前面的字符,则是去除空白
例如:

SELECT TRIM('e' from 'eeeeeliteeeeee')FROM DUAL;SELECT LTRIM('   liteeeee')FROM DUAL;SELECT RTRIM('eeeelit    ' FROM 'e')FROM DUAL;

补位函数

SELECT LPAD(salary,20,’)FROMempdongzhixiao:20sal’,以达到20个字符
例如:

SELECT RPAD('aaaaAAAAAA',5,'$')FROM DUAL

截取字符串

数据库下标从一开始
例如:

SELECT    SUBSTR('thinking in mysql' FROM -5 FOR 5)FROM DUAL最后的5不写着则默认截取到尾部

查找指定字符串在某一个字段的内容中的位置

INSTR(字段名, 字符串)
这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始)
例如;

SELECT   INSTR('Doctor Who Who Who', 'Who') FROM DUAL;

用于数据的四舍五入的函数

round函数用于数据的四舍五入,它有两种形式:
- 1、round(x,d) ,x指要处理的数,d是指保留几位小数
这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;
- 2、round(x) ,其实就是round(x,0),也就是默认d为0;
例如:

1、查询: select round(1123.26723,2);     结果:1123.272、查询: select round(1123.26723,1);     结果: 1123.33、查询: select round(1123.26723,0);     结果:11234、查询: select round(1123.26723,-1);     结果: 11205、查询: select round(1123.26723,-2);     结果:11005、查询: select round(1123.26723);     结果:1123

求余数函数

MOD(x,y)
返回x除以y以后的余数  
例如:SELECT MOD(5,2) -- 1

上下取整数的函数

CEIL(x)/FLOOR(x)
返回大于或等于x的最小整数/返回小于或等于x的最大整数  
例如:

SELECT CEIL(1.5) -- 返回2SELECT FLOOR(1.5) -- 返回1

获得当前日期

CURDATE(),CURRENT_DATE()
返回当前日期
例如:

SELECT CURDATE()->2014-12-17

两个日期可以进行减法操作,差为相差的天数。

SELECT CURDATE()-str_to_date(‘1989-11-08’,’%Y-%m-%d’)

查看月底

SELECT LAST_DAY(SYSDATE())->2017-07-31

查找最大最小值函数

greatest(parm1,parm2,…)
一条记录中取几个字段的最大值
least(parm1,parm2,…)
一条记录中取几个字段的最小值

提取时间分量函数

XTRACT(type FROM d)
从日期d中获取指定的值,type指定返回的值
type可取值为:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
  • SECOND_MICROSECOND
  • MINUTE_MICROSECOND
  • MINUTE_SECOND
  • HOUR_MICROSECOND
  • HOUR_SECOND
  • HOUR_MINUTE
  • DAY_MICROSECOND
  • DAY_SECOND
  • DAY_MINUTE
  • DAY_HOUR
  • YEAR_MONTH

例如:

SELECT EXTRACT(MINUTE FROM '2011-11-11 11:11:11') ->11

判断是否为NULL

必须使用:IS NOT NULL/IS NULL
例如:

SELECT * FROM studentWHERE gender IS NOT NULL任何值都不能等于null

空值函数

IFNULL(v1,v2)函数
如果v1的值不为NULL,则返回v1,否则返回v2。
例如:

SELECT IFNULL(null,'Hello Word')->Hello Word
原创粉丝点击