数据库概念
数据库(BD):存储数据的仓库
数据库管理系统(DBMS):操作和管理数据库的大型软件
SQL:操作关系型数据库的编程语言
SQL分类
DDL(Data Definition Language):数据定义语言,用来定义数据库对象(数据库,表,字段)
DML(Data Manipulation Language):数据操作语言,用来对数据库表中的数据进行增删改
DQL(Data Query Language):数据查询语言,用来查询数据库中表的记录
DCL(Data Control Language):数据控制语言,用来创建数据库用户、控制数据库的访问权限
一、DDL 数据定义语言
1 数据库操作
1.1 查询所有数据库
show databases ;
1.2 创建数据库
create database [if not exists] 数据库名 [default charset 字符集 ] [ collate 排序 规则 ] ;
1.3 删除数据库
drop database [if exists] 数据库名 ;
1.4 切换数据库
use 数据库名 ;
1.5 查询当前数据库
select database() ;
2 表操作
2.1 查询当前数据库所有表
show tables ;
2.2 创建表结构
create table 表名(
字段1 字段1类型 [comment 字段1注释],
字段2 字段2类型 [comment 字段2注释],
…
字段n 字段n类型 [comment 字段n注释]
)[comment 表注释] ;
这里我们创建一个tb_user表,表中有id、name、age、gender字段
2.3 查看指定表结构
desc 表名 ;
2.4查询指定表的建表语句
show create table 表名 ;
3 表操作-修改
3.1 添加字段
alter table 表名 add 字段名 类型 [comment 注释] [约束] ;
3.2 修改数据类型
alter table 表名 modify 字段名 新数据类型 ;
3.3 修改字段名和字段类型
altar table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释] [约束] ;
3.4 删除字段
alter table 表名 drop 字段名 ;
3.5 修改表名
alter table 表名 rename to 新表名 ;
4 表操作-删除
4.1 删除表
drop table [if exists] 表名 ;
4.1 删除表,并重新创建表
truncate table 表名;
在删除表的时候,表的全部数据也会被删除
二、DML数据库操作语言
添加数据(insert)
修改数据(update)
删除数据(delete)
1 添加数据
insert into 表名 (字段名1,字段名2,…) values (值1,值2,…) ;
2 修改数据
update 表名 set 字段名1=值1,字段名2=值2,… [where 条件];
如果没有条件,会修改整张表的所有数据
3 删除数据
delete from 表名 [where 条件];
如果没有条件,会删除整张表的所有数据
三、DQL数据库查询语言
在此之前我们建立如下表:
1 基本语法
select 字段列表
from 表名列表
where 条件列表
group by 分组字段列表
having 分组后条件列表
order by 排序字段列表
limit 分页参数
2 基础查询
select 字段1,字段2,字段3,… from 表名 ;
如果查询所有字段也可以用*,即select * from 表名
查询的时候可以设置别名,这样方便查看
select 字段1[as 别名1] … from 表名 ;
去除重复记录
select distinct 字段列表 from 表名 ;
3 条件查询
3.1 语法
select 字段列表 from 表名 where 条件列表 ;
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN … AND … | 在某个范围之内(含最小、最大值) |
IN(…) | 在in之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配(_匹配单个字符, %匹配任意个字符) |
IS NULL | 是NULL |
逻辑运算符 | 功能 |
---|---|
AND 或 && | 并且 (多个条件同时成立) |
OR或|| | 或者 (多个条件任意一个成立) |
NOT 或 ! | 非 , 不是 |
3.2 案例
查询年龄等于20的员工
查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息
查询年龄等于18 或 20 的员工信息
查询姓名为两个字的员工信息
查询身份证号最后一位是X的员工信息
4 聚合函数
4.1 语法
select 聚合函数(字段列表) from 表名 ;
注意null不参与所有聚合函数的运算
4.2 聚合函数分类
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
4.3 案例
统计该企业员工数量
统计该企业员工的平均年龄
统计该企业员工的最大年龄
5 分组查询
5.1 语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
注意:where和having的区别
1.where是分组之前进行过滤,having是分组之后对结果进行过滤
2.where不能对聚合函数进行判断,having可以
5.2 案例
根据性别分组,统计男性员工 和 女性员工的平均年龄
查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址
6 排序查询
6.1 语法
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
ASC:升序(默认)
DESC:降序
6.2 案例
根据入职时间, 对员工进行降序排序
7 分页查询
7.1 语法
select 字段列表 from 表名 limit 起始索引,查询记录数;
注意:1.起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
2.如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10
7.2案例
查询第1页员工数据, 每页展示10条记录
执行顺序【重要】
我们编写顺序必须遵守
select->from->where->group by->having->order by->limit