MySQL数据库查缺补漏-基础篇

基础篇

net start mysql80[服务名]

net stop mysql80

create database pshdhx default charset utf8mb4;

为什么不使用utf8?因为其字符占用三个字节,有四个字节的字符,所有需要设置为utf8mb4;

数值类型:

mysql查看数据库总量 mysql查数据库数据量_mysql查看数据库总量

字符串类型:

mysql查看数据库总量 mysql查数据库数据量_MySQL_02

日期类型:

mysql查看数据库总量 mysql查数据库数据量_mysql_03

用户管理

use mysql;

create user ‘pshdhx’@‘localhost’ identified by ‘123456’

mysql查看数据库总量 mysql查数据库数据量_mysql_04

alter user ‘pshdhx’@‘%’ identified with mysql_native_password by ‘123456789’;

用户权限控制:

mysql查看数据库总量 mysql查数据库数据量_mysql查看数据库总量_05

查询权限:

show grants for ‘pshdhx’@‘localhost’;

授予权限

grant all on db1.* to ‘pshdhx’@‘localhost’

撤销权限:

revoke all on db1.* from ‘pshdhx’@‘localhost’

MySQL函数

字符串函数:

mysql查看数据库总量 mysql查数据库数据量_数据库_06

数值函数:

mysql查看数据库总量 mysql查数据库数据量_mysql查看数据库总量_07

日期函数:

mysql查看数据库总量 mysql查数据库数据量_数据_08

流程函数:

mysql查看数据库总量 mysql查数据库数据量_mysql_09

MySQL约束

mysql查看数据库总量 mysql查数据库数据量_mysql_10

alter table emp add constraint fk_emp_detp_id foreign key (dept_id) references dept(id);

alter table emp drop foreign key fk_emp_dept_id;

cascade:级联删除外键。

alter table emp add constraint fk_emp_detp_id foreign key (dept_id) references dept(id) on update cascasd on delete cascade;

set null:设置 null

多表查询

内连接

SELECT * FROM emp ,dept where emp.emp_id = dept.dept_id and dept.dept_id = 2;

SELECT * FROM emp INNER JOIN dept on emp.emp_id = dept.dept_id;

注意:如果emp的id为空,则该条记录不展示,取的是交集

外连接

左外连接

右外连接

通常,右外连接可以调换顺序可以改成左外连接

自连接

注意都要起别名

联合查询

union 【合并后去重】,union all 【不去重】

子查询

单行子查询:=

select * from emp where (salary,managerid) = (12500,1);

select * from emp where (salary,managerid) = (select salary,managerid from emp where name=‘pshdhx’);

多行多列子查询:in

事务

操作的集合。

查看事务的提交方式:

select @@autocommit; 为1就是自动提交。为0就是手动提交。

set @@autocommit=0; 设置手动提交。

事务操作:

开启事务:start transaction 或者是begin

提交事务:commit

回滚事务:rollback

事务四大特性:

1、原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全失败。

2、 一致性(Consistence):事务完成时,必须使所有的数据都保持一致。

3、隔离性(Isolation):数据库提供的隔离机制,保证事务不受外部并发操作影响的独立环境下运行。

4、持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变是永久的。【持久化到data目录下】

并发事务问题:

1、脏读:一个事务读取到另外一个事务没有提交的数据。

2、不可重复度【修改】:一个事务先后读取同一条记录,但是两次读取的数据不同。

3、幻读【新增】:一个事务按照条件查询数据时,没有对应的数据行。但是在插入数据时,又发现这行数据已经存在。

事务隔离级别:

脏读

不可重复度

幻读

读未提交




读已提交[Oracle默认]




可重复度[Mysql默认]




串行化【加锁】




select @@Transactoin_isolation

set [session | global] transaction isolation level {read uncommitted | read committed | repeatable read| serializable}