DDL-数据库定义语言
对数据库对象进行操作的语言,涉及的关键字:CREATE,ALTER,DROP
语法
[] 中的内容是可写可不写的,看需求而定
数据库操作
# 创建数据库的语法
CREATE DATABASE [IF NOT EXISTS] 库名 [CHARSET=字符集]
示例:创建一个名为mydb的数据库,字符集为utf8
CREATE DATABASE IF NOT EXISTS mydb CHARSET=utf8 ;
常用的DDL语句
- 查看已经创建好的数据库
SHOW DATABASES;
- 使用我们创建的数据库(切换数据库)
use 数据库名
use mydb;
- 查看某个创建好的数据库信息
show create database 数据库名;
show create database mydb;
- 删除数据库
drop database 数据库名
数据库表操作
- 创建一张表语法
- 当中的约束有就可以加,没有话可以不加
create table [if not exists] 表名(
字段1名 类型[(长度)] [DEFAULT 默认值] [约束],
字段2名 类型[(长度)] [DEFAULT 默认值] [约束],
.....
)[charset = 字符集];
示例:
在数据库mydb下面创建一张user表
use mydb;
create table if not exists user(
id int primary key ,
username varchar(20) default null,
password varchar(20),
age int(3)
)charset = utf8;
- 查看数据库中已经创建好的表
show tables;
- 查看创建好了表信息
show create table 表名;
- 查看创建好了的表结构
desc 表名;
- 修改表名
rename table 原表名 to 新表名;
- 删除表
drop table if exists 表名
修改表结构
- 添加一个字段
alter table 表名 add 字段名 类型[(长度)] [default 默认值] [约束];
- 在表最开始的位置插入一个字段
alter table 表名 add 字段名 类型[(长度)] [default 默认值] [约束] first;
- 将某个字段添加在某个指点字段之后
alter table 表名 add 字段名 类型[(长度)] [default 默认值] [约束] after 表中某字段;
- 删除表中字段
alter table 表名 drop 字段名;
- 修改表中现有字段
alter table 表名 change 原字段名 新字段名 类型[(长度)] [default 默认值] [约束];
DML语言-数据库操作语言
定义
对表中记录进行操作的语言,涉及的操作:
- INSERT:向表中插入记录的操作
- UPDATE:修改表中记录的操作
- DELETE:删除表中记录的操作
插入语句:用于向表中插入某条数据
注意事项
- 数据库中字符出字面量要使用单引号括起来
- INSERT语句中VALUES子句执行的值的顺序,个数,类型要与前面指定的字段一致
- 指定的字段顺序,个数可以与表不一致
- INSERT语句中没有指明的字段,记录中该字段插入默认值。
- 如果创建表时字段没有明确指定默认值时,默认值均为NULL
insert into 表名[(字段1,字段2, ....)] values(值1, 值2,.....)
示例:
INSERT INTO person (name,age) VALUES ('张三',22);
INSERT INTO person (age,name) VALUES (33,'李四');
- 批量插入
INSERT INTO 表名 [(字段1,字段2,...)] VALUES (值1,值2,值3...),(第二组值),(第三组值),...
示例:
INSERT INTO person(name,age)
VALUES ('阿猫',22),('阿狗',33),('阿三',44)
修改语句:用于修改表中的记录
- 如果修改的时候没有跟上过滤条件,代表表中的每条记录都要修改,所以我们修改的时候尽量加上过滤条件
update 表名
set 字段1 = 值1, 字段2 = 值2, .....
[where 过滤条件]
删除语句:用于删除表中记录
- 我们删除的时候也跟上过滤条件,不然会把表中的所有记录删除
delete from 表名
[where 过滤条件]
DQL语言-数据查询语言
DQL语言使用检索表中记录的语言
语法
执行顺序优先级
执行顺序
SELECT 子句 6
FROM 子句 1
JOIN... ON ... 子句 2
WHERE 子句 3
GROUP BY 子句 4
HAVING 子句 5
ORDER BY 子句 7
LIMIT 子句 8
常用DQL语句语法
- 基础查询
- WHERE子句用于添加过滤条件,在DQL语句中仅将满足过滤条件的记录查询出来
select 字段1,字段2,...from 表 [where 过滤条件] # 查出我们指定字段的值
select * from 表 [where 过滤条件] # 查出表中所有的字段的值
- 连接多个条件
- AND:“与”,都为真时才为真
- OR:“或”,都为假时才为假
- AND的优先级是高于OR的
select * from 表 where 条件1 and 条件2 # 这两个条件都要满足
select * from 表 where 条件1 or 条件2 # 这两个条件满足其一即可
- 关联查询
select 字段1, 字段2,....
from 表1 [别名],
表2 [别名]
where 过滤条件,关联条件
-
子查询
-
单行单列子查询:查询结果集就是一个值,常用在DML,DQL中
-
多行单列子查询:查询结果集有多个值,常用在DML,DQL中
-
多列子查询:多列子查询(无论单行多行)通常是当作一张表使用。在DQL,DDL中应用
-
-
左外连接查询
- 左连接是以左边的表为驱动表,去连接其他的表
- 有个特点,当不满足条件的值,会已null补全
select 字段1, 字段2,....
from 表1
left join 表2 on 关联条件
left join 表3 on 关联条件
where 过滤条件
- 右外连接
- 这个是已右边的表为驱动表
select 字段1, 字段2,....
from 表1
right join 表2 on 关联条件
right join 表3 on 关联条件
where 过滤条件
- 内连接
select 字段1, 字段2,....
from 表1
join 表2 on 关联条件
join 表3 on 关联条件
where 过滤条件