基础篇
通用语法及分类
- DDL(Data Definition Language):数据定义语言,用来定义数据库对象(数据库、表、字段)。
- DML(Data Manipulation Language):数据操作语言,用来对数据库表中的数据进行
增、删、改
。 - DQL(Data Query Language):数据查询语言,用来对数据库表中数据进行查询操作。
- DCL(Data Control Language):数据控制语言,用来创建数据库用户、控制数据库的控制权限。
DDL
数据库操作
查询所有的数据库:
show databases;
查询当前数据库:
select database();
创建数据库:
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
create database if not exists test default charset utf8mb4;
删除数据库:
drop database [if exists] 数据库名;
drop database if exists test;
使用数据库:
use test;
注意事项
utf8字符集长度为3个字节,有些符号占4个字节,所以推荐使用utf8mb4字符集。
表操作
查询当前数据库中的所有表:
show tables;
查询表结构:
desc 表名;
查询指定表的建表语句:
show create table 表名
创建表:
mysql
create table if not exists 表名(
字段1 字段1类型 [comment 字段1注释],
字段2 字段2类型 [comment 字段2注释],
...
字段n 字段n类型 [comment 字段n注释]
) [comment 表注释] default charset utf8mb4;
删除表:
drop table [if exists] 表名;
删除表,并重新创建该表:(清空表)
truncate table 表名
添加字段:
alter table 表名 add 字段名 字段类型(长度) [comment 注释] [约束];
例:alter table test_01 add nick_name varchar(20) comment '昵称';
修改数据类型:
alter table 表名 modify 字段名 新数据类型(长度);
修改字段名和字段类型:
alter table t_user change nick_name n_name char(30) comment '昵称';
删除字段:
alter table 表名 drop 字段名;
修改表名:(重命名表名)
alter table 表名 rename 新表名;
DML
添加数据
指定字段:
insert into 表名 (字段1, 字段2) values (值1, 值2);
全部字段:
insert into 表名 values (值1, 值2, ...);
批量添加数据:
insert into 表名 (字段1, 字段2, ...) values (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);
insert into 表名 values (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);
注意事项
- 字符串和日期类型的数据应该包含在引号中。
- 插入的数据大小应该在字段的规定范围内。
更新和删除数据
修改数据:
update 表名 set 字段1 = 值1, 字段2 = 值2, ... [ where 条件 ];
例:
update t_user set name = 'jack' where id = 1;
删除数据:
delete from 表名 [ where 条件 ];
例:
delete from t_user where id = 1;
DQL
语法:
select
字段列表
from
表名
where
条件列表
group by
分组字段列表
having
分组后的条件列表
order by
排序字段列表
limit
分页参数
基础查询
查询多个字段:
select 字段1, 字段2, 字段3, ... from 表名;
select * from 表名;
设置别名:
select 字段1 [as 别名1], 字段2 [as 别名2], ... from 表名;
select 字段1 [别名1], 字段2 [别名2], ... from 表名;
去除重复记录:
select distinct 字段列表 from 表名;
转义:模糊匹配(_匹配单个字符,%匹配任意个字符)
select 字段列表 from 表名 where name like '/_张三';
/ 之后不作为通配符。
条件:
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
!=或<> | 不等于 |
between ... and ... | 在这个区间内(含最小值,最大值) |
in(...) | 在 in 之后列表中的值,多选一 |
like 占位符 | 模糊匹配(_匹配单个字符,%匹配任意字符) |
is NULL | 是 NULL |
逻辑运算符 | 功能 |
---|---|
&& 或 and | 并且(多个条件都成立) |
|| 或 or | 或者(多个条件中有一个成立就成立) |
! 或 NOT | 非, 不是 |