MySQL
SQL语法
DDL(data difinition language)数据定义语言
数据库操作
- 显示所有数据库
show database;- 查询当前数据库
select database();- 创建数据库
create database [ if not exists ] 数据库名 ;
// if not exists 如果不存在,即没有相同名的数据库被创建,可加可不加- 删除数据库
drop database [ if exists ] 数据库名- 切换数据库
use 数据库名
表操作
表操作-创建
- 显示所有表
show tables;- 查看指定表结构
desc 表名;- 查看建表语句
show create table 表名;- 创建表结构
create table 表名 (
字段1 类型 comment ‘注释’ ,
字段2 类型 comment ‘注释’,
.
.
.
字段n 类型 comment ‘注释’
) comment ‘注释’ ;
表操作-修改
- 添加字段
alter table 表名 add 字段名 comment ‘注释’ ;- 修改数据类型
alter table 表名 modify 字段名 新数据类型 ;- 修改字段名和数据类型
alter table 表名 change 旧字段名 新字段名 数据类型 comment ’ 注释 ’ ;- 删除字段
alter table 表名 drop 字段名 ;- 修改表名
alter table 表名 rename to 新表名
表操作-删除
- 删除表
drop table [ if exists ] 表名 ;- 删除指定表,并重新创建表
truncate table 表名
// drop 是彻底将表从内存中删除, 而 truncate 是将表中的数据清除
DML(data manipulation language)数据操作语言
添加数据(insert into)
- 给指定字段添加数据
insert into 表名 (字段1,字段2,…,字段n)
values (值1,值2,…,值n)
- 给全部字段添加数据
insert into 表名 (值1,值2,…,值n)
// 2 本质与 1 相同
- 批量添加数据
insert into 表名 (字段名1,字段名2,…)
values ( 值1,值2,…), (值1,值2,…), …
或
insert into 表名 values ( 值1,值2,…), (值1,值2,…), …
修改数据(update)
update 表名 set 字段名1 = 值1,字段名2 = 值2,… [ where 条件 ]
// 如果没有条件,就是修改整张表的数据
删除数据(delete)
delete from 表名 【where 条件】
注意:delete 没有条件的话会删除整张表的数据,且 delete 不能删除某一字段的值。若要删除删除某一字段的值,可以用 update 将目标字段的值置为 null ,即代表将该值删除。
DQL(data Query Language)数据查询语言
基础查询
查询多个字段
- select 字段1,字段2,… from 表名 ;
- select * from 表名 ;
注: * 用于查询全部字段,但不方便阅读,故不推荐使用
字段设置别名
- select 字段1 [ as 别名 ], 字段2 [ as 别名 ],… from 表名 ;
- 省略 as
select 字段1 [ 别名 ], 字段2 [ 别名 ],… from 表名 ;
去除重复记录
- select distinct 字段名 from 表名
条件查询
select 字段列表 from 表名 where 条件
常用比较运算符
例
- 查询姓名为三个字的员工
select * from emp where name like '_ _ _ ’ ;- 查询id号最后一位为 1 的员工
select * from emp where id like ‘_ _ _ 1’ ;- 查询 年龄为23或21或24 的员工
select * from emp where age in ( 23, 21, 24) ;
聚合函数
select 聚合函数 from 表名 ;
例
- 统计员工的数量
select count (*) from emp;- 计算年龄的平均值
select avg(age) from emp;- 注:null 不参与计算
分组查询
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 条件]
注意:
- where 是分组前过滤,having 是对分组后的结果进行过滤并不参与分组
- 分组后,查询的一般是分组字段或聚合函数,查询其他字段无意义
排序查询
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2,...;
注:
- asc 升序(默认)
- aesc 降序
约束
概述
- 概述
约束是作用于表中字段上的规则,用于限制存储在表中的数据。
- 目的
保证数据库中数据的正确、有效性和完整性。
- 分类
例:
外键约束
- 外键
用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性
- SQL语句
-
创建表时添加外键
create table <表名> ( 字段名 数据类型, . . [constraint] [外键名] foreign key (字段名) references 主表 (主列表名即主码) );
alter table 表名 add constraint [外键名] foreign key (字段名) references 主表 (主列表名)
-
- 例
用 sudent 中的 dept_id 作为外键与 course 中的主码 id 建立联系
将 student 表和 course 表建立连接
注:
- 子表中的外键与主表中的主码相对应
例:student 中的 dept_id 与 course 中的 id 相对应
- 字表中的外键的数据类型必须要与主表中主码的数据类型一致
例: course 中的 id 为 int
------则student 中 dept_id 也要为 int