一. MySQL概述
安装使用
MySQL安装完成之后,在系统启动时,会自动启动MySQL服务,无需手动启动。
也可以手动的通过指令启动停止,以管理员身份运行cmd,进入命令行执行如下指令:
1 、 net start mysql80 启动
2、 net stop mysql80 关闭
二、SQL
1、SQL通用语法
1). SQL语句可以单行或多行书写,以分号结尾。
2). SQL语句可以使用空格/缩进来增强语句的可读性。
4). 注释:
单行注释:-- 注释内容 或 # 注释内容
多行注释:/* 注释内容 */
2、SQL分类
三、DDL(对数据库和表的操作)
1、数据库操作
1). 查询所有数据库
show databases ;
2). 查询当前数据库
select database() ;
3). 创建数据库
create database [ if not exists(当不存在数据库进行创建,存在不进行任何操作) ] 数据库名
[ default charset 字符集 {指定字符集}] [ collate 排序规则 (指定排序规则)]
4). 删除数据库
drop database [ if exists {存在进行操作不存在则不进行}] 数据库名 ;
5.) 切换数据库
use 数据库名 ;//需要使用时要进行使用数据库定义use
2、表操作
1、表操作-查询
1、 查询当前数据库所有表
show tables;
2、 查看指定表结构
desc 表名;#查看当前表有那些字段
3、查询指定表的建表语句
show create table 表名 ;
2、表操作-创建
CREATE TABLE 表名(
字段1 字段1类型 [ COMMENT 字段1注释 ],
字段2 字段2类型 [COMMENT 字段2注释 ],
字段3 字段3类型 [COMMENT 字段3注释 ], #注释的话需要带着comment再写注释
......
字段n 字段n类型 [COMMENT 字段n注释 ] #最后一个不用带逗号
) [ COMMENT 表注释 ]
例如:
create table tb_user(
id int comment '编号',
name varchar(50) comment '姓名',
age int comment '年龄',
gender varchar(1) comment '性别'
) comment '用户表';
3、表操作-数据类型
1、数值类型
2、字符串类型
3、 日期时间类型
4、表操作-修改
1、添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释]
2、修改数据类型
alter table 表名 modify 字段名 新数据类型 (长度);
3、修改字段名和字段类型
alert table 表名 change 旧字段名 新字段名 类型 (长度) [ comment 注释 ] [ 约束 ]
4、删除字段
alert table 表名 drop 字段名
5、修改表名
alert table 表名 rename to 新表名
5、 表操作-删除
1、删除表
drop table [ if exists ] 表名
可选项 if exists 代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作
2、 删除指定表, 并重新创建表
truncate table 表名
四、DML
1、添加数据
# 查看数据表
select * from user
1). 给指定字段添加数据
法一: INSERT INTO 表名 (字段名1, 字段名2, ...)VALUES (值1, 值2, ...);
法二:INSERT INTO 表名 set 字段名 =值
2). 给全部字段添加数据
INSERT INTO 表名 VALUES (值1, 值2, ...);
3). 批量添加数据
给指定的字段添加: INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...)
给全部添加:INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;
2、修改数据
语法:
UPDATE 表名 SET 字段名1=值1,字段名2=值2.… [WHERE 条件];
注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
3、 删除数据
语法:
DELETE FROM 表名[WHEKE 条件]
注意:
DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。
五、 DQL
1、基础查询
1). 查询多个字段
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
2).查询全部字段
SELECT * FROM 表名 ;
3). 字段设置别名
SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名; #也可以直接不带as
4). 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
2、条件查询
语法:
SELECT 字段列表 FROM 表名 WHERE 条件列表 ;
3、 聚合函数
4、分组查询
语法:
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组
后过滤条件 ];
where与having区别
-
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组 之后对结果进行过滤。
-
判断条件不同:where不能对聚合函数进行判断,而having可以。
注意事项:
-
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
-
执行顺序: where > 聚合函数 > having 。
-
支持多字段分组, 具体语法为 : group by columnA , columnB
5、排序查询
语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;
排序方式:
-
ASC:升序(默认值)
-
DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
6、分页查询
语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数
注意事项:
-
起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。(如查询2,每页有10条记录数的话,那起始索引就是10)
-
分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
-
如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。