DDL(数据定义语言)
- 查询- 查询所有数据库:
show databases;
- 查询当前数据库:select database();
- 查询当前数据库所有表:show tables;
- 查询表结构:desc 表名;
- 查询建表语句:show create table 表名;
- 使用- 使用数据库:
use 数据库名;
- 创建- 创建数据库:
create database [if not exists] 数据库名;
- 创建表操作createtable 表名( 字段1 字段类型 [约束][comment 字段1注释],... 字段n 字段类型 [约束][comment 字段2注释])[comment 表注释];
- 约束- 概念:约束是作用域表中字段上的规则,用于限制存储在表中的数据。- 目的:保证数据库中数据的正确性、有效性和完成性约束描述关键字非空约束限制该字段值不能nullnot null唯一约束保证字段的所有数据都是唯一、不重复的unique主键约束主键是一行数据的唯一标识,要求非空且唯一primary key(自动增长)前提:必须是主键,自动增长auto_increment默认约束保存数据时,如果未指定该字段值,采用默认值default外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key- 数据类型 - 删除- 删除数据库:
dorp database [if exists] 数据库名;
- 删除表:drop table [if exists] 表名;
- 修改- 添加字段:
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
- 修改字段类型:alter table 表名 modify 字段名 新数据类型(长度)
- 修改字段名或字段类型:alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
- 删除字段:alter table 表名 drop column 字段名;
- 修改表名:rename table 表名 to 新表名;
***注意事项:上述语句中的database,也可以替换成schema。如:
create schema db01;
(databases不可以这样)***
DML(数据操作语言)
- insert语法- 指定字段添加数据:
insert into 表名 (字段名1,字段名2) values (值1, 值2);
- 全部字段添加数据:insert into 表名 values (值1, 值2, ...);
- 批量添加数据(指定字段):insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);
- 批量添加数据(全部字段):insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);
注意事项:1. 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。2. 字符串和日期型数据应该包含在引号中。3. 插入的数据大小,应该在字段规定的范围内。 - update语法- 修改数据:
update 表名 set 字段名1 = 值1, 字段名2 = 值2, ... [where 条件];
注意事项:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。 - delete语法- 删除数据:
delete from 表名 [where 条件];
注意事项:1. DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。2. DELETE语句不能删除某一个字段的值(如果要操作,可以使用UPDATE,将该字段的值置为NULL)。
DQL(数据查询语言)
- 基本查询- 查询多个字段:
select 字段1, 字段2, 字段3 from 表名;
- 查询所有字段(通配符):select * from 表名;
- 设置别名:select 字段1 [as 别名1], 字段2 [as 别名2] from表名;
(as关键字可以省略)- 去除重复记录:select distinct 字段列表 from 表名;
- 条件查询(where)- 语法:
select 字段列表 from 表名 where 条件列表;
- 比较运算符比较运算符功能>大于>=大于等于<小于<=小于等于=等于<> 或 !=不等于between … and …在某个范围之内(含最小、最大值)in( … )在in之后的列表中的值,多选一like 占位符模糊匹配(_匹配单个字符,%匹配任意个字符)is null是null- 逻辑运算符逻辑运算符功能and 或者 &&并且(多个条件同时成立)or 或者 ||或者(多个条件任意一个成立)not 或 !非,不是 - 分组查询(group by)- 聚合函数- 介绍:将一列数据作为一个整数,进行纵向计算。- 语法:
select 聚合函数(字段列表) from 表名;
函数功能count统计数量max最大值min最小值avg平均值sum求和- 注意事项 - null值不参与所有聚合函数运算。- 统计数量可以使用:count() count(字段) count(常量),推荐使用count()- 分组查询- 语法:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤的条件];
- where与having区别 1. 执行时机不同:where是分组之前进行过滤,不满足where条件,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。2. 判断条件不同:where不能对聚合函数进行判断,而having可以。- 注意事项 - 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。- 执行顺序:where > 聚合函数 > having - 排序查询(order by)- 条件查询:
select 字段列表 from 表名 [where 条件列表] [group by 分组字段] order by 字段1 排序方式, 字段2 排序方式;
- 排序方式:- ASC:升序(默认值)- DESC:降序- 注意事项如果是多个字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。 - 分页查询(limit)- 语法:
select 字段列表 from 表名 limit 起始索引,查询记录数;
- 注意事项 - 其实索引从0开始, 起始索引 = ( 页码 − 1 ) ∗ 每页展示记录数 起始索引 = (页码 - 1) * 每页展示记录数 起始索引=(页码−1)∗每页展示记录数- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。- 如果查询的是第一页数据,起始索引可以省略,直接简写为limit n。 - 案例设计- 根据需求,完成员工性别信息的统计
select if(gender = '1' ,'男性员工', '女性员工') as 性别, count(*) from tb_emp group by gender;
- 根据需求,完成员工职位信息的统计select (case job when 1 then '班主任' when 2 then '讲师' when 3 then '学工主管' when 4 then '教研主管' else '未分配职位' end) as 职位, count(*) from tb_emp group by jog;
- 流程控制函数-if(表达式,tvalue,fvalue)
:当表达式为true时,取值tvalue;当表达式为false时,取值fvalue-case expr when value1 then result1 [when value2 then value2 ...] [else result] end
本文转载自: https://blog.csdn.net/weixin_45887097/article/details/142066868
版权归原作者 今心上 所有, 如有侵权,请联系我们删除。
版权归原作者 今心上 所有, 如有侵权,请联系我们删除。