数据库操作语句梳理
目录
- DDL语句
Ddl: database defined language 数据定义语句
-
- 数据库创建|修改|删除|查看
1.1.1. 创建 CREATE DATABASE语法
1.1.2. 修改 ALTER DATABASE语法
-
-
- 删除 DROP DATABASE语法
-
-
-
- 查看 show databases 语法
-
使用 use 数据库名称
创建数据库语法: create database [if not exists]数据库名称 [default charset’utf8’]; # 中括号中的内容可以不写 |
描述: 创建一个数据库 default charset’utf8’创建数据库时指定的编码方式 if not exists 创建一个不存在的数据库,如果存在,不创建 |
案例: |
|
删除数据库语法: Drop database 数据库名称; |
描述: 删除一个指定的数据库 |
案例: |
|
查看数据库语法: Show databases; |
描述: 展示所有的数据库 |
案例:
|
-
- 创建表格
- 创建表 create table
- 修改表 alter table
- 删除表 drop table
- 创建表格
创建表语法: Create table 表名( 字段名称 类型 comment’注释’, 字段名称 类型 comment’注释’, ); |
描述: 创建一个数据表 |
案例: |
|
表重命名语法: Alter table 旧表名 Rename to 新表名; |
案例: |
|
表格中修改列名称语法: alter table 表名 change column 旧列名 新列名 char(8); # 设置类型 |
案例 : |
|
表格中增加列语法: alter table 表名 add column phone char(11); # 增加一列 |
|
|
表格中删除一列语法: Alter table 表名 Drop column 列名; |
|
|
删除表语法: Drop table 表名; Drop table if exists 表名; |
描述: 删除数据库中的某个表 |
案例: |
-
- 数据库查询:单表查询操作
- 全表查询
- 数据库查询:单表查询操作
语法: Select *from 表名称; |
描述: 查询表中的所有数据 不同的工具会考虑到性能问题,展示部分数据,如sqlyog中全表查询默认展示1000条数据 |
案例: |
-
-
- 单条件查询
-
语法: Select *from 表名称 where 条件; |
描述: 当进行全表数据查询时,测试指定的条件是否为True,将条件为True的所有数据进行查询展示,其他数据,不予展示。 |
案例: |
-
-
- 多条件查询:并且|或者
-
语法: Select *from 表名称 where 条件1 and 条件2 and条件n; |
描述: 并且:与查询 同时满足多个条件才能展示 |
案例: |
语法: Select *from 表名称 where 条件1 or 条件2 or 条件n; |
描述: 或者:或查询 满足其中的一个条件即可展示 |
案例: |
-
-
- 比较查询
-
语法: Select *from 表名称 where id>25; |
描述: 当id列的数据大于25时才展示; |
案例: |
-
-
- 模糊查询 like:
-
语法: Select *from 表名称 where name like’员%’ 查询表中name属性以员开头的数据 Select *from 表名称 where name like’_员’ 查询表中 name属性中_员的数据_表示一个字符 |
描述: 模糊查询一数据 |
案例: |
-
-
- 空值查询
-
语法: Select *from 表名称 where 列名称 is null; Select *from 表名称 where 列名称 is not null; |
描述: 查询当某个列表中的数据为空时展示 数据 查询当某个列表中的数据为非空时展示数据 |
案例: |
-
-
- 范围查询
-
语法: Select *from 表名称 where 字段 in(值1,值2,值3,…值n); Select *form 表名称 where 字段=值1 or 字段=值2; |
描述: 手工指定满足条件的数据通过范围查询操作符号in,来指定条件取值范围 |
案例: |
-
-
- 范围查询:区间查询
-
语法: Select *from 表名称 where id between 1 and 10; |
描述: 手工指定一个区间范围,包含起始数据和结束数据:between.. and .. |
案例: |
-
-
- 排序查询
-
语法: Select *from 表名称 order by 列名称 [asc|desc]; Select *from 表名称 order by 列1 asc 列2 desc 列3desc; |
描述: 按照指定的列进行顺序或者降序的数据整理展示过程 ORDER BY 默认不写为升序排序 asc 升序排列 desc 降序排列 排序查询时,可以一次指定多列进行升序/降序的指定 |
案例: |
-
-
- 分页查询
-
语法: Select *from 表名称 limit m,n; |
描述: 从第几行开始 一次展示几行数据 |
案例: |
-
-
- 聚合函数
-
语法: Select avg(列名称) from 表名称 # 平均值 Select count(1)from 表名称 # 指定列的数据总数量 Max:最大值 min:最小值 sum:求和 |
描述: 将数据进行运算 |
案例: |
-
-
- 指定列查询
-
语法: Select 列名,列名from 表名; |
描述: 在查询过程中我们也可以通过列名称,指定查询的具体列 |
案例: |
-
-
- 查询数据剔重
-
语法: Select distinct 列名 from 表名称; |
描述: 查询数据表中指定列~所有不重复的数据,每个不重复的数据只会出现一次 |
案例: |
-
-
- 分组查询
-
语法: Select count(1),列名 from 表名 group by 列名; Select count(1),列名 from 表名 group by 列名 having 列名 is not null; # 数据中不能出现空数据 |
描述: 通过GROUP BY 关键字,将数据表中,指定的列按照组的形式查询分别展示 |
案例: |
-
-
- 关于查询的疑问:
-
描述: 出现的大量的关键词,什么关键词应该写在前面,什么关键词应该写在后面! |
案例: SELECT 指定查询列 [FROM 表名称 (1)[WHERE 条件] (2)[GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] (3)[HAVING 分组条件] (4)[ORDER BY {col_name | expr | position} [ASC | DESC] , ...] (5)[LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [FOR UPDATE | LOCK IN SHARE MODE]] |
-
- 数据库:多表关联查询
- 直接查询
- 数据库:多表关联查询
语法: Select *from 表名,表名; |
描述: 直接查询两张表 |
案例: |
-
-
- 关联查询
-
语法: Select *from 表名,表名 where 表名.列名 = 表名.列名; |
描述: 通过两张表的关联数据,进行条件关联 |
案例: |
-
-
- 子查询
-
语法: Select *from 表名 替代表名,表名 替代表名 where 替代表名.列名 = 替代表名.列名; |
描述: 通过替代表名来替代表名以简化表名称的书写 |
案例: |
-
-
- 连接查询
-
语法: Select *from 表名1; Select *from 表名2 where 表名1_id in(2,3)’; |
描述: 查询表二中和表一相同属性的数据 |
案例:
|
-
-
- 多行子查询
-
语法: Select *from 表名1 Where 列名in (select 列名 from 表名2 where 列名 in(‘班委’,’常委’) ); |
描述: 查询表一的一列中满足表二中的班委,常委的数据 |
|
-
-
- 单行子查询
-
语法: Select *from 表名 Where 列名=(select 列名 from 表名 where 列名 =’常委’); |
描述 |
|
-
-
- 查询每个部门下的所有员工
-
左外连接:left outer join -> left join Select * from 表名 替代表名 left join 表名 替代表名 on 替代表名.列名=替代表名.列名
|
右外连接: right outer join -> right join Select * from 表名 替代表名 right join 表名 替代表名 on 替代表名.列名=替代表名.列名
|
全外连接查询 |
内连接查询 |
哈希查询 减少数据之间的运算次数 |