MySQL day1 学习日记
SQL语言
- DQL(Data query Language) 数据库查询语言,用于查询
- DML(Data Manipulation Language) 数据库管理语言,用于增删改
- DDL(Data Definition Language)数据定义语言
用于定义数据库的结构 创建、修改、删除数据库对象 - DCL(Data Control Language) 数据控制语言 用于定义用户访问权限和安全级别
- TCL(T事务 Control Language) 事务控制语言
DQL 数据库查询语言
基础查询
语法: select 查询列表 from 表名;
特点:
- 查询列表可以是单个字段、多个字段、函数、常量
- 查询结果是个虚拟的表格
别名
①便于理解
② 如果要查询的字段有重名的现象,可以用别名来区分
-
as
select last_name as 姓名 from employees;
-
空格
select last_name 姓名 from employees;
如果别名中存在特殊字符(空格、#等) 或者想要区分大小写 可以用单引号引起来
去重 distinct
select distinct department_id from employees;
SQL中+ 的作用
SQL中+只有一个功能 那就是运算
如果两个数都是数值型 那就直接做加法运算
如果其中一个是字符型 那就先尝试将字符型转化为数值型再进行运算
转化成功 则继续做加法运算
转化失败 将字符型当做是0进行运算
只要有一方是null,结果永远是null
补充函数 ifnull(str,数)
意思是如果是null值, 那么返回一个指定的数
条件查询
语法: select 查询列表 from 表名 where 条件;
执行顺序
条件运算符 = < > <= >= <>(不等于)
逻辑运算符 and or not
模糊查询
like
between and
in
is null/is not null
模糊查询
like
通常和通配符’_’’%'搭配使用
%多个字符 包括0个字符
_单个字符
SQL中 转义符</font>
between and
- 包括边界值
- 2个边界值顺序不能颠倒
in
in(str1,str2,…)
用于判断某字段的值是否属于in列表中的某一项
- in列表的值类型必须一致或兼容
- 不能和通配符搭配
is null/ is not null
用于判断是否为null值
<=> 安全等于
安全等于与is null 比较
排序
语法: select 查询列表 from 表名 [where 条件] order by 排序条件 asc|desc;
order by字段放在最后 除了limit字段更后之外
- 如果不写asc|desc 默认升序
- 可以支持单个字段、多个字段、表达式、函数
- 可以按照别名排序(函数不可以用别名)
常见函数
单行函数
字符函数
- concat 拼接
- length 参数的字节个数
utf8中汉字占3个字节 - upper lower
upper变大写 lower 变小写 - substr 截断
两种重载: substr(字符,索引) 意思是把索引所在往后的字段截取下来
(SQL中索引从1开始)
substr(字符,开始索引,长度) 意思是从开始索引处开始,截取指定长度的一截字段 - instr(str, substr)
substr在str中第一次出现的索引位置 没有则返回0 - lpad 左填充
lpad(字符,填充字符,总长度) 意思是在被操作字符的左边填充指定字符至指定长度 - rpad 右填充
- replease 替换
replease(字符,原先,要替换为的) 把字符中的原先的符号 替换成指定字符 - trim() 去掉前后空格
trim(‘a’,‘aaaaaqaqaaaa’) 结果是qaq
数学函数
- round 四舍五入
两种重载形式
round(x) 四舍五入
round(x,数字) 小数点后保留几位小数 round(1.579,2) 结果是1.58 - ceil 向上取整
- flour 向下取整
- truncate截断
- mod 取余
日期函数
- now() 目前系统时间 带日期带时间
- curdate() 目前系统时间,只带日期 不带时间
- curtime() 目前系统时间,只带时间 不带日期
- year()
- month()
- monthname()
- date()
- hour()
- minute()
- second()
- str_to_date(‘9-22 1998’,’%m-%d %Y’)
- date_formate() 将日期转换为字符
date_formate(‘2008-6-9’, %Y年%m月%d日);
其他函数
select version();
select database();
select user();
流程控制函数
- if(条件,为真时返回,为假是返回) 类似三元运算符
- case
方式1 类似switch
switch {
case 常量值1; 语句1; break;
case 常量值2; 语句2; break;
……
default;
}
case 字段
when 常量值1 then 要显示的值1或者语句1;(语句1的话要加分号 常量就不用分号)
when 常量值2 then 要显示的值2或者语句2;
……
else 要显示的值n或语句n; end
方式2 类似多重if
case
when 条件1 then 要显示的值1或者语句1;
when 条件2 then 要显示的值2或者语句2;
……
else 要显示的值n或者语句n; end