Mysql 篇
一、Window
安装
配置环境变量,例如:D:\mysql-8.0.27-winx64\bin
创建 mysql.ini 配置文件
1 | [mysqld] |
打开bin文件夹,执行下面命令
1 | > mysql --initialize --console |
接下来基础输出的最后一行信息,包含账号和密码
1 | 2021-11-08T16:02:37.113703Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead. |
1 | root@localhost: <+woA1sid<y! |
如果不记得也没关系,删掉
data文件夹,重新执行命令可以重新重置数据库
安装 mysql 服务
1 | > mysqld --install |
启动服务
1 | > net start mysql |
1 | The MySQL service is starting.. |
停止服务
1 | > net stop mysql |
连接数据库,输入密码回车
1 | > mysql -u root -p |
修改密码
1 | alter user 'root'@'localhost' identified with mysql_native_password BY '密码'; |
例如:
1 | alter user 'root'@'localhost' identified with mysql_native_password BY '123123'; |
卸载
停止服务
1 | net stop mysql |
删除mysql的服务
1 | sc delete mysql |
删除mysql的数据文件
二、Mac
三、Docker
安装镜像
1 | > docker pull mysql:8.0.27 |
运行
1 | > docker run -itd --name test_server -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123123 mysql:8.0.27 |
四、常见命令
操作数据库
1、创建数据库
编码方式
- gb2312
- utf-8
- gbk
- iso-8859-1
1 | create database 数据库名; |
2、查看所有数据库
1 | show databases; |
3、修改数据库
1 | alter databse 数据库名 character set 编码方式; |
4、删除数据库
1 | drop database 数据库名; |
5、其他操作
查看当前使用的数据库
1 | select database(); |
切换数据库
1 | use 数据库名; |
操作数据表
1、创建表
1 | create table student( |
2、查看所有表
1 | show tabals; |
3、查看表字段信息
1 | desc student; |
4、删除表
1 | drop table student; |
5、添加列
1 | # alter table 表名 add 列名 数据类型; |
6、修改列
1 | # alter table 表名 change 旧列名 新列名 新数据类型; |
7、删除列
1 | alter table 表名 drop 列名; |
8、修改表名
1 | alter table 旧表名 rename 新表名; |
9、查看表定义
1 | show create table 表名; |
10、修改表字符集
1 | alter table 表名 character set 编码方式; |
DML操作
插入数据
1 | insert into studnet(stuname, stuage, stusex, birthday) values('avan', 21, 'g', '2000-1-1'); |
查询数据
1 | select * from student; |
更新数据
1 | update student set stuname="lyw", stuage=30 where stuname="layouwen"; |
删除数据
1 | # 删除所有数据 |
DCL操作
创建用户
1 | create user 用户名@指定ip identified by 密码; |
% 表示任何人都可以访问
权限授权
1 | grant 权限1, 权限2 on 数据库.表名 to 用户名@ip; |
查询权限
1 | show grants for 用户名@ip; |
撤销用户权限
1 | revoke 权限1, 权限2 on *.* from 用户名@ip; |
删除用户
1 | drop user 用户名@ip; |
DQL操作
1 | select 列名 |
测试数据
1 | # 创建表stu |
查询所有列
1 | select * from stu; |
查询指定列
1 | select sid, sname, age from stu; |
条件查询
=、!=、<>、<、<=、>、>=、between…and、in(set)、is null、and、or、not
1、查询性别为女,并且年龄50以内的记录
1 | SELECT * FROM stu WHERE gender='female' AND age<50; |
2、查询学号为S_1001,或者姓名为liSi的记录
1 | SELECT * FROM stu WHERE sid ='S_1001' OR sname='liSi'; |
3、查询学号为S_1001,S_1002,S_1003的记录
列名 in (列值1,列值2)
1 | SELECT * FROM stu WHERE sid IN ('S_1001','S_1002','S_1003'); |
4、查询学号不是S_1001,S_1002,S_1003的记录
1 | SELECT * FROM tab_student WHERE sid NOT IN('S1001','S1002','S_1003'); |
5、查询年龄为null的记录
1 | SELECT * FROM stu WHERE age IS NULL; |
6、查询年龄在20到40之间的学生记录
1 | SELECT * FROM stu WHERE age>=20 AND age<=40; |
7、查询性别非男的学生记录
1 | SELECT * FROM stu WHERE gender!='male'; |
8、查询姓名不为null的学生记录
1 | SELECT * FROM stu WHERE NOT sname IS NULL; |
模糊查询
列名 like ‘表达式’
通配符
_: 任意一个字符
%:任意0~n个字符
1、查询姓名由3个字构成的学生记录
1 | SELECT * FROM stu WHERE sname LIKE '___'; |
2、查询姓名由5个字母构成,并且第5个字母为“i”的学生记录
1 | SELECT * FROM stu WHERE sname LIKE '____i'; |
3、查询姓名以“z”开头的学生记录
1 | SELECT * FROM stu WHERE sname LIKE 'z%'; |
4、查询姓名中第2个字母为“i”的学生记录
1 | SELECT * FROM stu WHERE sname LIKE '_i%'; |
5、查询姓名中包含“a”字母的学生记录
1 | SELECT * FROM stu WHERE sname LIKE '%a%'; |
字段控制查询
排序
聚合函数
分组查询
limit
数据完整性
引用完整性
- primary key
- unique [key]
- not null
- default
- auto_increment
- foregin key