——查询所有数据库:
show.databases;
注:
information_schema
mysql
performance_schema
sys
是系统自带的数据库
——查询当前数据库
select database();
——使用/切换数据库
use name#数据库名;
——创建数据库(数据库名不可重复)
create database [if not exists] name [default charset utfmb4];
注:两个中括号可写不可先,
第一个中括号表示如果没有数据库则创建,第二个表示的是设定默认字符集(表中展示的是utf8mb4(里面包含emoji等表情符号,图中只是用utf8mb4做示范,默认值也是utf8mb4(MySQL8版本及以上)))
——删除数据库
drop database[if exists] 数据库名;
注:中括号可写可不行,表示如果不存在则...
注:上述代码中的database,也可以替换成schema。如:
show schemas;#查询所有数据
创建表的语法:
create table tablename(
字段1 字段类型[约束][comment 字段1注释],
......
字段n 字段类型[约束][comment 字段n注释]
)[comment 表注释];
例(无约束):(记得先用use 确定要使用的数据库)
create table name(
id int comment 'id',
username varchar(20)/*表最长多少字符*/ comment '用户名',
name varchar(10) comment '姓名',
age int comment '年龄',
gender char(1) comment '性别'
)comment '例表';
· 约束:约束是作用于表中字段上的规则,用户限制存储在表中的数据。
· 目的:保证数据库中数据的正确性,有效性和完整性。
约束 | 描述 | 关键字 |
---|---|---|
非空约束 | 限制该字段值不能为null | not null |
唯一约束 | 保证字段的所有数据都是唯一,不重复 | unique |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key |
默认约束 | 保存数据时,如果未指定该字段值,则采用默认值 | default |
外键约束 | 让两张表的数据简历连接,保证数据的一致性与完整性 | foreign key |
例(有约束):
create table name(
id int primary key comment 'id',
username varchar(20) not null unique comment '用户名',
name varchar(10) not null comment '姓名',
age int comment '年龄',
gender char(1) default '男' comment '性别'
)comment '例表';
——查询当前数据库的所有表
show tables;
——查询表结构
desc 表名;
——查询键表语句
show create table 表名;
——添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释];
——修改字段类型
alter table 表名 modify 字段名 新数据类型(长度);
——修改字段名与字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
——删除字段
alter table 表名 drop column 字段名;
——修改表名
alter table 表名 rename to 新表名;
——删除表
drop table [if exists] 表名;
注:在删除表时,包括其中的全部数据都会被删除。
——指定字段添加数据
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 表名 set 字段名1 = 值1,字段名2 = 值2 , ...[where 条件];
注:修改语句的条件可以有,也可没有,如果没有条件,则会修改整张表的所有数据。
——删除数据
delete from 表名 [where 条件];
注:1.DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除所有数据。
2.DELETE 语句不能删除某一个字段的值(如果要操作,可以使用UPDATE,将该字段的值置为NULL)。
select
字段列表
from
表名列表
where
条件列表
group by
分组字段列表
having
分组后条件列表
order by
排序字段列表
limit
分页参数
——基本查询
select 字段1,字段2,字段3,... form 表名;
——查询所有字段(通配符)
select * from 表名;
——为查询字段设置别名,as关键字可以省略
select 字段1 [as 别名1],字段2 [as 别名2] from 表名;
——去除重复记录
select distinct 字段列表 from 表名;
注:*号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。
——条件查询
select 字段列表 from 表名 where 条件列表;
比较不常见的条件/比较运算符:
<> 或 != | 不等于 |
between ... and ... | 在某个范围之内(包括最值) |
in(...) | 在in之后的列表中的值,多选一 |
like 占位符 | 模糊匹配(_匹配单个字符,%匹配任意个字符) |
is null | 是null |
注:不同的条件用and而非“,”区分,一般建议不同的条件用()括起来,这样方便读写。
多个条件之间区其一,也可以用or分隔。
——聚合函数:将一列数据作为一个整体,进行纵向计算
函数 | 功能 |
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
例:
select sum(* 或 字段 或 常量) from emp;
注:1、null值不参与任何聚合函数的运算
2、统计数量可以使用count(*) count(字段) count (常量) ,推荐使用 count(*)
——分组查询
select 字段列表 from 表名 [where 条件列表] group by 分组字段名 [having 分组后过滤条件]
· where与having的区别
1、执行时间不同:where是分组前进行过滤,不满足where不参与分组;having是分组后过滤。
2、判断条件不同:where不能对聚合函数进行判断,而having可以。
注:1、分组查询时,字段列表不能随便书写,一般是写被分组字段+聚合函数
2、执行顺序:where》聚合函数》having。
——排序查询
select 字段列表 from 表名 [where 条件列表] [group by 分组字段名 having 分组后过滤条件] order by 排序字段 排序方式;
·排序方式:升序(asc),降序 (dasc);默认升序asc,是可以不写的。
注:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序,多个排序之间直接用“,”分隔。
——排序查询
select 字段 from 表名 [where 条件] [group by 分组字段 having 过滤条件] [order by 排序字段] limit 起始索引,查询记录数;
说明:
1、起始索引是从0开始。
2、分页查询是数据库的“方言”,不同的数据库有不同的实现,这里以MySQL为例。
3、如果起始索引为0,起始索引可以省略,直接简写为 limit 10。
4、在前端提供页码的情况下,起始索引的计算公式一般是 起始索引=(页码-1)*每页展示记录数
例:
select job,count(*) from emp where entry_date<='2015-01-01' group by job having count(*)>=2 limit 0,10;