数据库 第一章 MySQL(3)
目录
SQL
DQL
语法:
实例
基础查询
单行函数
字符函数
实例
逻辑处理
实例
数学函数
实例
日期函数
日期格式编辑
实例
SQL
DQL
DQL(Data Query Language)数据查询语言,查询是使用频率最高的一个操作, 可以从一个表中查询数据,也可以从多个表中查询数据。
语法:
- 特点: select 查询结果 from 表名 where 条件;
- 查询结果可以是: 表中的字段、函数 查询的结果是一个虚拟的表格
- 查询结果处理:
查询特定列: select column1,column2 from table
全部列查询: select * from table 处理函数:select 函数 from table;
- 查询结果处理( 函数分类):
单行函数:如concat、length、ifnull等,会对查询的每行进行处理
分组函数:做统计使用,又称为统计函数、分组函数,会将多行处理为一行
实例
-- dql 查询语法
-- selet 基本语法结构 selet 查询结果 from 表名 where 条件
-- 查询语句是不会影响数据库中的数据的,查询的结果是临时备份
select name,birthday from basketballplayer
-- 查询所有列的数据
select * from basketballplayer position = '中锋'
-- 查询结果中使用函数, as 别名
select id,name,char_length(name)as name_length from basketballplayer
-- 查询结果处理
-- 查询指定列,查询所有的列
-- 查询结果使用函数进行处理
-- 函数又分为 单行函数: 函数会对每行查询的数据进行查询 分组函数
基础查询
单行函数
字符函数
- length(): 获取参数值的字节个数
- char_length()获取参数值的字符个数
- concat(str1,str2,.....):拼接字符串
- upper()/lower():将字符串变成大写/小写
- substring(str,pos,length):截取字符串 位置从1开始
- trim(str):去掉字符串前后的空格或子串,trim(指定子串 from 字符串)
- replace(str,old,new):替换,替换所有的子串
实例
-- length() 返回字节长度, 一个中文长度,一个中文占3个字节,英文字符占一个字节
select name,length(name)as nl,char_length(name) as nll from basketballplayer
-- sql + - * / 只能用作算术运算
-- concat(...)
select concat(id,':',name)as name from basketballplayer
-- UPPer(name)转大写,lower(name)转小写
select upper(name),lower(name) from basketballplayer
-- substring(列,开始的位置,截取长度) 注意开始的位置从1开始
select substring(name,1,1) from basketballplayer
-- trim() 默认是去除前后空格
select name,char_length(trim(name)) from basketballplayer
-- trim('#' from name) 去掉前后指定的字串
select trim('丹' from name)from basketballplayer
-- replace()复制并粘贴
select id,replace(name,'-','·')from basketballplayer
逻辑处理
- case when 条件 then 结果1 else 结果2 end;
注:可以有多个when ifnull(被检测值,默认值)函数检测是否为null,如果为null,则返回指定的值,否则返回 原本的值
- if函数:if else的 效果 if(条件,结果1,结果2)
实例
-- 逻辑处理
-- case when 条件 then else
select id,name,
(case when height>=190 then '高个子'
when height>=180 then '正常' else '非高个子' end)as height
from basketballplayer
-- ifnu11(列,默认值")检测指定列的值是否为空,如果为空显示默认值
select id,name, ifnull(position,'暂未录入信息')as position from basketballplayer
-- if(条件,结果1,结果2)
select id,name,if(height>=200,'高个子','非高个子')as height from basketballplayer
数学函数
- round(数值):四舍五入
- ceil(数值):向上取整,返回>=该参数的最小整数
- floor(数值):向下取整,返回<=该参数的最大整数
- truncate(数值,保留小数的位数):截断,小数点后截断到几位
- mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负
实例
-- 数学函数
select id,name,round(height),truncate(height,1) from basketballplayer
日期函数
- now():返回当前系统时间(年月日时分秒)
- curdate():返回当前系统日期(年月日)
- date_format(日期列,格式):将日期转换为指定格式
- datediff(big,small):返回两个日期相差的天数
日期格式
实例
select id,name,now(),curdate() from basketballplayer
select id,name,date_format(birthday,'%Y') from basketballplayer
select id,name from basketballplayer where date_format(birthday,'%Y') = '1978'
select id,name,datediff(curdate(),birthday)from basketballplayer