MySQL是一个非关系型数据库
SQL分类
DDL数据库定义语言
用来定义数据库对象,创建/修改/删除:数据库,表,列等
关键字:create,alter,drop,truncate
- create database 数据库名 创建数据库
- show databases 展示SQL服务下的数据库
- use 数据库名 切换到指定的数据库
- drop database 数据库名称 删除数据库
- 创建表
create table 表名(
字段名 类型(长度) [约束],
字段名 类型(长度) [约束],
) - show table 查看数据库下的所有表
- drop table 表名; 删除表
- 修改表结构/格式
DML数据库操作语言
用来对数据库中的表的记录进行更新
关键字:insert,update,delete
-
插入表记录
insert into 表名 (字段1,字段2) values (值1,值2)
insert into 表名 values(值1,值2) -
update 表名 set 字段名=值,字段名=值; 更新指定字段值
update 表名 set 字段名=值…where 条件; 更新符合调点指定字 段值 -
删除记录
delete frmo 表名 [where 条件];
truncate table 表名;
delete 一条一条删除,不清空auto_increment记录数
truncate 直接将表删除,重新建表,auto_increment清空
DQL数据库查询语言
用来查询数据库中表的记录 -
select * from 表名;
-
select 列名1,列名2,… from 表名; 查询指定字段
-
别名查询
-
select distinct 列名 from 表; 去重
-
select 列名 运算符号 值 from 表; 运算查询
-
条件查询
单表查询
-
排序
select * from 表名 order by 排序字段 asc/desc
Asc 升序(默认) DESC 降序 -
聚合
-
分组
SELECT 字段1,字段2… FROM 表名GROUP BY分组字段 HAVING 分组条件; 分组之后只能通过having添加查询条件 -
分页查询
SELECT 字段1,字段2… FROM 表明 LIMIT M,N
M:从哪个索引开始
N:整数,表示查询多少条数据
SQL约束
主键约束
非空约束
唯一约束
外键约束
having与where区别
where是在分组前对数据进行过滤,主要是针对行
having是在分组后对数据进行过滤,主要是针对列
delete和truncate区别
delete删除表中的数据,不重置自增值
truncate 删除整张表,重新创建表,重置自增值
子查询 将其它select查询结果作为select条件进行查询
子查询中select出现次数越多,查询效率越低
连接查询
- 内连接
SELECT a.id,a.name,b.name from demo a inner JOIN demo2 b on a.id=b.id 返回匹配条件的数据,没有条件就会产生笛卡尔积 - 外连接:
左连接 SELECT * from demo a LEFT JOIN demo2 b on a.name=b.name 左表的记录全显示,右表满足条件的显示,不满足条件的显示null
右连接 SELECT * from demo2 a RIGHT JOIN demo b on a.name=b.name 右表的记录全显示,左表满足条件的显示,不满足条件的显示null