MySQL复习day01
管理MySQL数据库的一些图形化工具
推荐Navicat、DataGrip,任选其一即可(Navicat是收费的)
SQL分类
1.DDL
– 数据定义语言 Data definition Language
show databases
select database();
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ]
可以通过create
创建数据库或者数据库,alter
修改,drop
删除
use+数据库名
切换数据库
desc+表名
查看表结构
通过alter可以修改表的结构,新增字段、修改字段或者删除字段
例如:alter table 表名 add 字段名 类型(长度)([注释]) [约束]
2.DML
– 数据操作语言 Data Manipulation Language
INSERT
UPDATE
DELETE
3.DQL
– 数据查询语言 Data Query Language
关键字 – SELECT
查询的几种类型
-
基本查询 – 可以查询多个字段 可以为表起别名 可以使用
DISTINCT
去重 -
条件查询 WHERE
模糊查询 LIKE(%匹配任意个字符,_匹配单个字符)
-
聚合函数 COUNT MAX MIN AVG SUM
SELECT 聚合函数(字段列表) FROM 表名;
-
分组查询 GROUP BY
WHERE/HAVING:where在分组前过滤,having在分组后
-
排序查询 ORDER BY
ASC/DESC 升序/降序
-
分页查询 LIMIT
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
实际开发中尽量不要使用*,会影响性能
4.DCL
– 数据控制语言 Data Controll Language 管理数据库用户、控制数据库的访问权限
通过select * from mysql.user;
可以查看当前所有用户
CREATE USER '用户名' @ '主机名' IDENTIFIED BY '密码'
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;
DROP USER '用户名'@'主机名' ;
tips:
MySQL中通过用户名@主机名的方式唯一的标识一个用户
且主机名可以使用%通配
权限 – ALL PRIVILEGES/INSERT/SELECT/UPDATE/DELETE/ALTER/DROP/CREATE
查询权限 SHOW 赋予权限GRANT 撤销权限REVOKE
SHOW GRANTS FOR '用户名'@'主机名' ;
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
函数
MySQL提供的函数 – 主要有字符串函数、数值函数、日期函数、流程函数
字符串函数
只列举关键字,具体的想不起来自行查
CONCAT(s1,s2…sn)
LOWER(str)
UPPER(str)
LPAD(str,n,pad)
RPAD(str,n,pad)
TRIM(str)
SUBSTRING(str,start,len)
数值函数
CELL(x)
FLOOR(x)
RAND()
ROUND(x,y)
MOD(x,y)
日期函数
CURDATE
CURTIME
NOW
YEAR(date)
MONTH(date)
DAY(date)
DATEADD(date,时间间隔)
DATEDIFF(date1,date2)
流程函数
IF(value,t,f)
IFNULL(value1,value2)
CASE WHEN [value1] THEN [res1] … ELSE [default] END
CASE [expr] WHEN [value1] THEN [res1] … ELSE [default] END
约束
种类:NOT NULL/PRIMARY KEY/FOREIGN KEY/CHECK/DEFAULT/UNIQUE
多表查询
连接查询
内连接
外连接
左连接
右连接
自连接
自连接查询
需要为表起别名
联合查询
union all不去重 union去重
子查询
也叫嵌套查询
事务
事务是一组操作的集合,要么同时成功,要么同时失败
提交commit 回滚 rollback 开始事务 start transaction/begin
事务四大特性
ACID
并发事务问题
1.脏读
2.不可重复读
3.幻读
事务隔离级别
1.读未提交
2.读已提交
3.可重复读(默认)
4.串行化