一、DDL
(1)DDL-------数据库操作
1、查询所有数据库
show databases;
2、查询当前数据库
select database();
3、使用/切换数据库
use 数据库名;
4、创建数据库
[]中的可以省略
create database [if not exists] 数据库名 [default charset utf8mb4];
5、删除数据库
drop database [if exists] 数据库名;
6、创建表
[]中的可以省略
crate table 表名(
字段1 字段类型 约束 【comment 字段1注释】,
字段2 字段类型 约束 【comment 字段2注释】
)[comment 表注释];
create table user(
id int primary key auto_increment comment '用户ID 唯一标识',
username varchar(50) not null unique comment '用户名',
name varchar(50) not null comment '用户姓名',
age int comment '用户年龄',
gender char(1) default '男' comment '用户性别'
)comment '用户信息表'
约束:约束是作用于表中字段上的规则,用于限制存储在表中的数据
目的:保证数据库中数据的正确性、有效性和完整性
| 约束 | 关键字 | 描述 |
|---|---|---|
| 非空约束 | not null | 限制该字段值不能为null |
| 唯一约束 | unique | 保证该字段所有数据都是唯一的,不重复的 |
| 主键约束 | primary key | 主键是一行数据的唯一标识,要求非空且唯一 |
| 默认约束 | default | 保存数据时,如果未制定该字段值,则采用默认值 |
| 外键约束 | foreign key | 让两张表的数据建立连接,保证数据的一致性和完整性 |
auto_increment 让主键的值自增,如果是1,2,3,10,那么下一位自增就是从11开始
7、常用数据类型
数值类型
| 类型 | 有符号(signed)范围 |
无符号(unsigned)范围 |
|---|---|---|
| tinyint | (-128,127) | (0,255) |
|
int | -2,147,483,648 到 2,147,483,647 | 0 到 4,294,967,295 |
| bigint | -2^63 到 2^63 - 1 | 0 到 2^64 - 1 |
字符串类型
| 类型 | 大小 | 描述 |
|---|---|---|
| char | 0-255 bytes | 定长字符串 |
| varchar | 0-65535 bytes | 变长字符串 |
char的性能略高于varchar,因为char是固定的长度
日期格式
| 类型 | 格式 | 描述 |
|---|---|---|
| data | YYYY-MM-DD | 日期值 |
| datatime | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
注意点:
char于varchar的区别
char是定长字符串,varchar是变长字符串
如果一个字段是固定的,比如手机号,身份证号,建议使用char
如果一个字段不是固定的,比如用户名,姓名,建议使用varchar
(2)DDL-----表结构操作-查询、修改、删除
1、查询当前数据库的所有表
show tables;
2、查询表结构
desc 表名;
3、查询建表语句
show create table 表名;
4、添加字段 []中的可以省略
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
5、修改字段类型
alter table 表名 modify 字段名 新数据类型(长度);
6、修改字段名与字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度)【comment 注释】【约束】;
7、删除字段
alter table 表名 drop column 字段名;
8、修改表名
alter table 表名 rename to 新表名;
9、删除表
drop table 【if exists】 表名;
注意:在删除表时,表中的数据也会全部删除
二、DML
(1)DML------insert
1、指定字段添加数据
insert into 表名 (字段名1,字段名2) values (值1,值2);
2、全部字段添加数据
insert into 表名 values (值1,值2, ... );
3、批量添加数据(指定字段)
insert into 表名 (字段名1,字段名2) values (值1,值2),(值1,值2);
4、批量添加数据(全部字段)
insert into 表名 values (值1,值2, ... ),(值1,值2,...);
注意:1、字符串和日期类型的数据需要用引号(单引号,双引号都可以,推荐使用单引号)
2、插入数据的大小/长度,应该在字段的规定范围内
(2)DML ------- update
1、修改数据
update 表名 set 字段名1 = 值1,字段名2 = 值2, .... [where 条件]
注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据
(3)DML --------- delete
1、删除数据
delete from 表名 【where 条件】;
注意:1、delete 语句的条件可以有也可以没有,如果没有条件,则会删除整张表的所有数据
2、delete 语句不能删除某一个字段的值,如果要操作,可以使用update,将该字段的值置为null
三、DQL
(1)DQL-基本查询
1、查询多个字段
select 字段1,字段2,字段3 from 表名;
2、查询所有字段
select * from 表名;
3、为查询字段设置别名,as关键字可以省略
select 字段1 【as 别名1】,字段2 【as 别名2】 from 表名;
4、去除重复记录
select distinct 字段列表 form 表名;
(2)DQL-条件查询
1、条件查询
select 字段列表 from 表名 where 条件列表;
| 比较运算符 | 功能 |
|---|---|
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| = | 等于 |
| != 或者 <> | 不等于 |
| between ... and ... | 在某个范围之内(含最小、最大值) |
| in(...) | 在in之后的列表里的值,多选一 |
| like 占位符 | 模糊匹配(_匹配单个字符,%匹配任意字符) |
| is null | 是null |
| 逻辑运算符 | 功能 |
|---|---|
| and 或者 && | 并且(多个条件同时成立) |
| or 或者 || | 或者(多个条件任意一个成立) |
| not 或者 ! | 非,不是 |
(3)DQL-分组查询
1、聚合函数
将一列数据作为一个整体,进行纵向计算
| 函数 | 功能 |
|---|---|
| count | 统计数量 |
| max | 最大值 |
| min | 最小值 |
| avg | 平均值 |
| sum | 求和 |
注意:1、null值不参与所有聚合函数的运算
2、统计数量可以使用:count(*) count(字段) count(常量) 推荐使用count(*) ,性能较高
2、分组查询
select 字段列表 from 表名 【where 条件列表】group by 分组字段名【having 分组后的条件】
where 与 having的区别:
1、执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
2、判断条件不同:where后不能使用聚合函数当判断条件,having后可以使用聚合函数当判断条件
注意:分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
执行顺序:通过where删选后的数据参与分组,然后聚合函数操作分组后的数据,最后可以通过having对聚合函数操作过的分组后的数据进行过滤
(4)DQL-排序查询
1、排序查询
select 字段列表 from 表名 [where 条件列表] [group by 分组字段名 having 分组后的过滤条件] order by 排序字段 排序方式;
排序方式:升序(asc) 降序(desc); 不写的话默认是升序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
2、分页查询
select 字段 from 表名 [where 条件] [group by 分组字段 having 过滤条件] [order by 排序字段] limit 起始索引,查询记录数;
说明:
1、起始索引从0开始
2、如果起始索引为0,起始索引可以省略,直接简写为 limit 10(假设要查10条记录)
语法:limit 起始索引,每页展示的记录数
在项目开发中,如果前端传来的是页码,转换为起始索引的公式
(页码 - 1)* 每页展示的记录数
比如第一页limit(0,5),第二页limit(5,5),第三页limit(10,5)。。。。。
7万+

被折叠的 条评论
为什么被折叠?



