MySQL
数据库
数据库是存储数据库的仓库,而数据库管理系统(Database management system)和数据库并不相同。Mysql和MongoDB等都是管理系统,而不是数据库。==SQL==是数据库管理系统用来操作关系型数据库的编程语言。
关系型数据库管理系统(RDBMS):建立在关系模型基础上,由多张相互连接的二维表组成的数据库
SQL语句分类
SQL可以分为四类语句,它们分别是DDL(data definition language)、DML(data manipulation language)、DQL(data query language)、DCL(data control language)
这四类语句的作用分别是:
DDL:定义数据库对象(即数据库,表,字段)
DML:数据增删改等操作
DQL:数据查找操作
DCL:控制数据库用户,以及对数据库的访问权限等
使用Mysql
- 启动/停止MySQL服务(设置了自启动,就不需要执行了)
1 | net stop MySQL80 |
- 登录MySQL
1 | mysql -uroot -p19980527 # 这是显式用户、密码的登录方式,可能不安全,-uroot:表示user是root |
- 退出MySQL
1 | exit; |
- 注释
单行注释既可以用 # 也可以用双中横 – ;多行注释符号和C语言一样 /**注释内容**/
1 | /* |
DDL
DDL:操作数据库
- 展示数据库的信息
1 | # 使用此命令可以查看当前mysql中有多少的数据库 |
- ==创建==、进入、删除数据库
1 | # 创建一个叫做studentDatabase的数据库 |
一个database有多张table,所以如果想处理某张table的数据内容需要先进入该数据库,再进入该table
注意:SQL命令应该以分号结尾
DDL:操作表
Description:这里对表的操作并不是操作具体的数据内容,而是对字段,也就是具体数据的索引进行修改
1. 查询当前数据库中的表信息
1 | show tables; |
2.查询表的详细信息
1 | desc tableName; |


3.==创建表==
创建表的指令可以记为,
1.做什么操作:创建表 – create table,
2.创建表的名字是什么:tableName
3.表的字段是什么:(字段1 字段1的类型[comment ‘字段1的描述’], 字段2 字段2的类型[comment ‘字段2的描述’], … )
1 | # 这里说的创建表其实是创建一个初始化的表,也就是先声明表的列索引,姓名,学号,年龄等这些 |
Example:
1 | create table studentInfo( |

1.1 数据类型
下面只列举了一部分的类型,还有很多没有列举,更详细的可以访问菜鸟教程
| 类型 | 大小 | 有符号类型数值范围 | 无符号数值范围 | 描述 |
|---|---|---|---|---|
| TINYINT | 1 byte字节 | (-128,127) | (0,255) | 小整数,各整数的差别在于数值的范围不同 |
| SMALLINT | 2 byte | (-32768,32767) | (0,65535) | 整数 |
| MEDIUMINT | 3 byte | (-8388608,8388607) | (0,16777215) | 整数 |
| INT 或 INTEGER | 4 byte | (-2^16^, 2^16^-1) | (0,2^32^-1) | 整数 |
| FLOAT | 4 byte | 0和(-3.402 823 466 E+38,-1.175 494 351 E-38), 0 ,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 浮点数值 |
| DOUBLE(len,保留几位小数) | 8 byte | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 浮点数值 |
4.修改表
需要注意的是,这里说的修改表,并不是修改表中的具体内容,而是修改表的字段内容
4.1 为表增加字段
增加操作可以记为:
1.做什么操作:修改表 – ALTER TABLE
2.修改哪个表呢: studentInfo
3.修改的具体操作是增加、删除、还是修改呢:ADD
4.增加字段的具体内容是:gender int COMMENT ‘性别’
1 | ALTER TABLE studentInfo ADD gender int COMMENT '性别'; |
4.2 修改表的字段
4.2.1 修改字段的数据类型
1 | ALTER TABLE studentInfo MODIFY gender char COMMENT 'gender'; |
4.2.2 修改字段
1 | ALTER TABLE studentInfo CHANGE gender xingbie int COMMENT '性别'; |
5.删除表
1 | DROP TABLE table_name; |
DML
增
INSERT INTO 表名(字段1名,字段2名,…) VALUES(值1,值2,…)
字段名和值应该一一对应
1 | # 1.给自定字段添加数据 注意不要忘了单引号,字符串和日期型数据应该包含在引号内 |
改
UPDATE 表名 SET 字段1名=值1, 字段2名=值2,…….. [WHERE 条件]
修改表数据,这里的重点是条件,可能你会修改多条语句,那么where就变的重要了, 这个where是个可选的参数,可有可无
1 | update tablename set number=1,name='ha ha' where id=2; |
删
DELETE FROM 表的名字 where 条件
这里的条件可以有,也可以不设置条件,但是如果没有条件,那么就是删除整张表的值
DELETE语句并不能删除某一个字段的值,这句话的意思是说DELETE删除是以行为基本对象,只能按行删除,而不能删除某一列的值
1 | delete from tablename where id=1; |
DQL
SELECT 字段1, 字段2, 字段3… from 表名 where 查找判断条件
1 | SELECT 后面可以接很多的可选参数,包括where,group by , having , order by , limit |
这个命令的解释就是从某个表中查找字段1,2,3的数据,但是这些有限定条件,比如说number<10的数据
1.基本查询
1 | # 查询所有的字段数据 |
2.条件查询
1 | select id,username from tablename where id!=3; |
条件:
| 比较运算符 | 功能 |
|---|---|
| like 占位符 其中_占一个字符,%占 |
模糊匹配,用于检测字段或字符串是否包含某些指定的字符串 |
| != 或者 <> | 不等于 |
| >= | 大于等于 |
| between….and… | 值在某个区间 |
| is null | 值为NULL |
| in(….) | 在in之后的列表中的值,多选一 |
| 逻辑运算符 | 功能 |
| AND 或者 && | 逻辑与 |
| OR 或者 || | 逻辑或 |
| NOT 或者 ! | 逻辑非 |
EX:
1 | # 查询身份证号最后一位是X的员工的信息 |
3.去重查询
1 | select distinct id,username from tablename; |
4.查询结果排序
order支持多字段排序,如果是多字段排序的话,命令会先对所有的数据按照第一个字段进行排序,排好序后,如果存在排序字段值相同的情况下,接着按照下一个排序字段进行排序
1 | select * from tablename order by username asc|desc; |
5.联合查询
联合查询就是使用多个select指令进行查询,相当于一次执行多个查询指令
使用联合查询的时候,每个select查询的字段必须一致,条件可以不一样
1 | select id,username from tablename where id=3 union select id,username from tablename where id=5; |
6.聚合查询
null值不参与所有聚合函数运算,也就是说如果某列中有一个值是null,那么当你使用count的时候,并不会把该null统计进去
1 | select count(*) from studentinfo; # 统计学生的数量,如果存在 |
| 函数 | 功能 |
|---|---|
| count | 统计数量 |
| max | 最大值 |
| min | 最小值 |
| avg | 平均值 |
| sum | 求和 |
7.分组查询
分组查询的意思是
执行顺序:where>聚合函数>having
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义,就是说如果查询语句以性别为分组的话,那么select查询的字段只能是函数以及性别
1 | select gender,count(*) from studentinfo group by gender; |

DQL的执行顺序
代码顺序
1 | select / from / where / group by / having / order by / limit |
代码执行顺序
1 | from / where / group by / having / select / order by / limit |
DCL
InnoDB引擎
MySQL5.5,
原子一致隔离持久ACID
- 本文标题:Mysql
- 本文作者:Luo zerone
- 创建时间:2023-09-12 15:06:42
- 本文链接:http://zer-one.github.io/2023/09/12/Mysql/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!