mysql数据库学习笔记,来源:bilibili,尚硅谷mysql入门到精通。
MySQL的语法规范
1.不区分大小写,但建议关键字大写,表名、列名小写;
2.每条命令最好用分号结尾;
3.每条命令根据需要,可以进行缩进或换行;
4.注释
单行注释:#注释文字
单行注释:-- 注释文字
多行注释:/* 注释文字 */
SQL的语言分类
1.DQL(Data Query Language):数据查询语言
2.DML(Data Manipulate Language):数据操作语言
3.DDL(Data Define Languge):数据定义语言
4.TCL(Transaction Control Language):事务控制语言
DQL语言的学习
基础查询
语法:
SELECT 要查询的东西 FROM 表名;
特点:
1.通过select查询完的结果 ,是一个虚拟的表格,不是真实存在;
2.要查询的东西:常量值、表达式、字段、函数等。
查询单个字段:
SELECT 要查询的东西 FROM 表名;
查询多个字段:
SELECT 第一个,第二个 FROM 表名;
查询表中所有字段:
SELECT 要查询的东西 FROM 表名;
查询的东西可以直接点击名称就出来啦!
F12可以进行格式化
SELECT * FROM 表名;
查询常量值:
SELECT 常量、“字符串”;
查询表达式:
SELECT 表达式;
SELECT 100*100;
查询函数:
SELECT 函数名;
SELECT VERSION();
起别名:
SELECT xxx (AS) 名字1,xxx (AS) 名字2 FROM 库;
建议名字加上双引号或者单引号。
好处:
1、便于理解;
2、查询的字段如果有重名,可以起别名区分
去重:
SELECT DISTINCT xxx FROM 库;
+号的作用:
mysql中的+只有运算符;
SELECT 100+90; #两个操作数都是数值型,则做加法运算
SELECT '123'+90; #字符串转化成数值运算
SELECT 'yep'+90; #字符串转化失败,将字符型数值变为0
SELECT NULL+90; #其中一方为NULL,结果也是NULL
mysql中字符连接:
SELECT
CONCAT(XXX,XXX,XXX) AS 别名
FROM
库;
条件查询
SELECT
查询列表
FROM
表名
where
筛选条件;
1、按条件表达式筛选
条件运算符:> < = != <> >= <=
2、按逻辑表达式筛选
用于连接表达式
and(&&):两个条件如果同时成立,结果为true,否则为false
or(||):两个条件只要有一个成立,结果为true,否则为false
not(!):如果条件成立,则not后为false,否则为true
3、模糊查询
like、between and、in、is null
like:一般与通配度符使用
SELECT
查询列表
FROM
表名
where
xxx LIKE '%a%';
#查询表中含有a的信息
SELECT
查询列表
FROM
表名
where
xxx LIKE '%__a_b%';
#查询第一个字符为a,第五个字符为b的信息
between and:
①提高语句的简洁度;
②包含临界值;
③两个临界值不要调节顺序。
SELECT
查询列表
FROM
表名
where
xxx >=100 AND xxx<=500;
SELECT
查询列表
FROM
表名
where
xxx BETWEEN 100 AND 500;
in:
①提高语句的简洁度;
②in列表的值类型必须一致或者兼容;
③不支持部分查询。
SELECT
查询列表
FROM
表名
where
xxx = 'xxx'OR 'XXX';
SELECT
查询列表
FROM
表名
where
xxx IN('XXX','XXX');
#表示查询含有这个名称的信息
is null:
SELECT
查询列表
FROM
表名
where
xxx IS (NOT) NULL;
安全等于<=>
SELECT
查询列表
FROM
表名
where
xxx <=> 100;
#查询数值为100的信息,也可以用于判断是否空值
排序查询
SELECT
查询列表
FROM
表名
#where
order by 排序列表 DESC;
普通排序:
DESC降序,ASC降序,不写默认升序。
多重排序:
SELECT
查询列表
FROM
表名
#where
order by 排序列表1 DESC/ASC,排序列表2 DESC/ASC;
常见函数
好处:
1、隐藏了实现细节;
2、提高了代码的重用性。
特点:
1、叫什么(函数名);
2、干什么(函数功能)。
分类:
1、单行函数
2、分组函数(统计函数、聚合函数),用于统计
单行函数
字符函数
1、length:获取参数的字节个数
2、contact:拼接字符串
3、upper、lower:变换大小写
4、substr:截取从指令索引处指定长度的字符
SELECT SUBSTR('字符串。。。。',1,3)
#从第一个字符开始显示,一共显示三个字符。
5、instr:返回子串出现的第一次索引,如果找不到,返回0
SELECT INSTR('字符串。。。。','字符串')
6、trim:
SELECT TRIM('X' FROM 'XXXXXXXAAAAAXXXXX');
#去除串前后的指定的字符
SELECT TRIM(' AAAAA ');
#去除串前后的空格
7、LPAD:用指定的字符实现左填充指定长度
8、RPAD:用指定的字符实现右填充指定长度
SELECT LPAD('子串',长度,'填充内容');
9、replace:替换
SELECT REPLACE('子串','需要替换的内容','替换后的内容');
数学函数
1、round:四舍五入
SELECT ROUND(1.266,2);
#四舍五入,保留两位数
2、ceil:向上取整,返回>=该参数的最小整数
3、floor:向下取整,返回<=该参数的最大整数
4、truncate:截断
5、mod:取余,a-a/b*b
日期函数
1、now:返回当前系统时间+日期
2、curdate:返回系统日期
3、curtime:返回系统时间
4、year:返回年
month:返回年
day\hour等
5、str_to_date,date_format
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YpdNdu50-1596466318573)(C:\Users\pp\AppData\Roaming\Typora\typora-user-images\image-20200802221224624.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8iDZaziR-1596466318575)(C:\Users\pp\AppData\Roaming\Typora\typora-user-images\image-20200802221251971.png)]
其他函数
1、version:查看当前的版本
2、database:当前数据库
3、user:当前用户
流程控制函数
1、if函数
SELECT IF(10>5,'大','小');
SELECT IF(条件,'条件满足','条件不满足');
2、case函数
SELECT 查询列表 FROM 表名
CASE 要判断的字段或者边大师
when 常量1 then 要显示的值;
when 常量2 then 要显示的值;
。。。。。
else 要显示的值n或者语句n;
end;
SELECT 查询列表 FROM 表名
CASE
when 条件1 then 要显示的值;
when 条件2 then 要显示的值;
。。。。。
else 要显示的值n或者语句n;
end;
分组函数
常见分类:
sum:求和函数,avg:平均值,max:最大值,min:最小值,count:统计个数
简单用法:
SELECT SUM(查询列表) FROM 表名;
SELECT SUM(查询列表),MAX(查询列表) FROM 表名;
特点:
1、sum,avg一般可以用于处理数值型
max,min一般可以处理任何类型
2、是否忽略null:
都忽略null值
3、可以和distinct搭配:
SELECT SUM(DISTINCT 查询列表) FROM 表名;
#求和不重复的值
4、count():
SELECT COUNT(查询列表) FROM 表名;
SELECT COUNT(*) FROM 表名;
SELECT COUNT(1) FROM 表名;
#统计行数
效率:
MYISAM存储引擎下,COUNT(*)效率最高;
INNODB存储引擎下,COUNT(*)、COUNT(1)差不多,都比 COUNT(查询列表)高点。
6、和分组函数一起查询的字段有限制:一般要求group by后面的字段。
奇奇怪怪的格式,还没弄懂typora怎么写博客~~