1、DDL语句 -- 操作数据库以及表的create,drop,alter等
2、DML语句 -- 对表数据进行insert,delete,update
3、DQL语句 -- 对表数据进行各种维度select查询(简单查询、条件查询、模糊查询、分组查询)
4、DCL语句 -- 关于数据库权限设置,这里不介绍
主键约束,唯一约束,非空约束
1、打开电脑服务窗口,关闭MySQL服务器并且卸载一切与MySQL相关的服务
window+r -> 输入services.msc -> 找到并停止MySQL相关服务
2、卸载MySQL所有功能模块
3、查找MySQL安装目录(一般在C盘Program File 或x86两个文件夹),删除可能的残余文件夹。C盘的隐藏文件中有一个ProgramData文件夹,里面MySQL的相关文件也需卸载
到官网下载安装包 ,开始点击安装,在之前未安装或完全卸载的情况下一直下一步(注意用户名、密码就行),可在cmd窗口输入mysql -V检测安装是否成功
方法一,在服务器窗口找到MySQL80停止或启动
方法二,以管理员身份运行cmd,输入net start mysql80启动服务,
DDL语句(关键词:create,drop,alter)
创建数据库
查找数据库
修改数据库
修改数据库字符集格式 -- ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
删除数据库
使用数据库
创建表
MySQL中的我们常使用的数据类型如下:
类型 |
描述 |
int |
整型 |
double |
浮点型 |
varchar |
字符串型 |
data |
日期类型:yyyy-MM-dd |
查看表
删除表
修改表结构
DML语句 -- 用来对数据库中表的数据进行增删改。关键字:insert, delete, update等
关键字说明
注意
插入全部字段
插入部分数据
蠕虫复制
- 什么是蠕虫复制:在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中
- 语法格式:INSERT INTO 表名1 SELECT * FROM 表名2;
- 作用:将表名2中的数据复制到表名1中
关键字说明
删除表记录
DQL语句
- 用来查询数据库中表的记录(数据)。关键字:select, where等
- >注意:查询不会对数据库中的数据进行修改.只是一种显示数据的方式
查询表所有数据
查询指定列
别名查询 -- 使用别名的好处是方便观看和处理查询到的数据
清除重复值
查询结果参与运算
比较运算符
>大于(转义运算符 >)-- SELECT * FROM 表名 WHERE 字段>数值;
<小于(转义运算符 <)-- SELECT * FROM 表名 WHERE 字段<数值;
<=小于等于
>=大于等于
=等于
<>、!=不等于
逻辑运算符
and 与,or 或 ,not 非
in关键字
语法格式:SELECT 字段名 FROM 表名 WHERE 字段 in (数据1, 数据2...);
in里面的每个数据都会作为一次条件,只要满足条件的就会显示
范围
BETWEEN 值1 AND 值2 表示从值1到值2范围,包头又包尾
比如:age BETWEEN 35 AND 70
相当于: age>=35 && age<=70
SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';
满足通配符字符串规则的数据就会显示出来
MySQL通配符有两个:
%: 表示0个或多个字符(任意个字符)
_: 表示一个字符
例如
通过ORDER BY子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据的顺序)
语法:SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC];
ASC: 升序, 默认是升序
DESC: 降序
单列排序
SELECT * FROM 表名 WHERE age<=35 ORDER BY age ASC;
组合排序
组合排序就是先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序,依次类推。
SELECT * FROM 表名 WHERE age<=35 ORDER BY age ASC,life desc;
之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值。另外聚合函数会忽略空值
五个聚合函数:
count: 统计指定列记录数,记录为NULL的不统计
sum: 计算指定列的数值和,如果不是数值类型,那么计算结果为0
max: 计算指定列的最大值
min: 计算指定列的最小值
avg: 计算指定列的平均值,如果不是数值类型,那么计算结果为0
聚合函数的使用:写在 SQL语句SELECT后 字段名的地方
SELECT 字段名... FROM 表名;
SELECT COUNT(age) FROM 表名;
分组查询是指使用 GROUP BY语句对查询信息进行分组,相同数据作为一组
SELECT 字段1,字段2... FROM 表名 GROUP BY 分组字段 [HAVING 条件];
例如:
SELECT * FROM 表名 GROUP BY sex;
这句话会将sex相同的数据作为一组,但是会返回每组的第一条,没有任何意义
分组的目的就是为了统计,一般分组会跟聚合函数一起使用。
分组后聚合函数的作用?不是操作所有数据,而是操作一组数据。
注意事项:当我们使用某个字段分组,在查询的时候也需要将这个字段查询出来,否则看不到数据属于哪组的
例如:SELECT SUM(life) , sex FROM hero GROUP BY sex
效果如下:
having与where的区别
LIMIT是限制的意思,所以LIMIT的作用就是限制查询记录的条数。
SELECT *|字段列表 [as 别名] FROM 表名 [WHERE子句] [GROUP BY子句][HAVING子句][ORDER BY子句][LIMIT子句];
LIMIT语法格式:
LIMIT offset,length; 或者limit length;
offset是指偏移量,可以认为是跳过的记录数量,默认为0(如果是0,可以省略)
length是指需要显示的总记录数
查询hero表中数据,从第三条开始显示,显示6条
我们可以认为跳过前面2条,取6条数据
SELECT * FROM student3 LIMIT 2,6;
对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。
约束种类:
用来唯一标识一条记录,每个表都应该有一个主键,并且每个表只能有一个主键。
哪个字段应该作为表的主键?
通常不用业务字段作为主键,单独给每张表设计一个id的字段,把id作为主键。主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复,非空就行。
在创建表的时候给字段添加主键
字段名 字段类型 PRIMARY KEY
删除主键
ALTER TABLE 表名 DROP PRIMARY KEY
主键自增:主键如果让我们自己添加很有可能重复,我们通常希望在每次插入新记录时,数据库自动生成主键字段的值
AUTO_INCREMENT 表示自动增长(字段类型必须是整数类型)
扩展
默认地AUTO_INCREMENT 的开始值是1,如果希望修改起始值,请使用下列SQL语法
ALTER TABLE 表名 AUTO_INCREMENT=起始值;
唯一约束的基本格式 -- 字段名 字段类型 UNIQUE
非空约束的基本语法格式 -- 字段名 字段类型 NOT NULL
默认值格式 -- 字段名 字段类型 DEFAULT 默认值