数据定义语言DDL
数据查询语言DQL
数据操纵语言DML
数据控制功能DCL
事务控制语言TCL
<name> :表示自定义的内容
[内容] :表示可以省略的内容
1.数据定义语言DDL(Data Definition Language)
主要为创建、修改、删除数据库的逻辑结构,其中包括表结构,视图和索引等。
数据库 | 创建数据库 | create database <数据库名>; |
删除数据库 | drop database <数据库名>; | |
查看所有数据库 | show databases; | |
使用数据库 | use <数据库名>; | |
数据表 | 创建表 | create table <表名>( <字段1> 数据类型 [约束1] [约束2]... , <字段2> 数据类型 [约束1] [约束2]... , ... ) |
删除表 | drop table <表名>; | |
查看所有表 | show tables; | |
修改表 | 增加表字段 alter table <表名> add <字段1> 数据类型 [约束1] [约束2]...; 删除表字段 alter table <表名> drop <字段1> 数据类型 [约束1] [约束2]...; 修改表字段 alter table <表名> modify column <字段1> 数据类型 [约束1] [约束2]...; | |
重命名 | rename table <旧表名> to <新表名> |
2.数据查询语言DQL(Data Query Language)
用于数据库中数据的检索查询。各种简单查询,连接查询等都属于DQL。
//简单查询
select <列名> from <表名> where <条件>;
3.数据操纵语言DML(Data Manipulation Language)
主要用于数据库中数据的修改,包括添加、删除、修改等
向表中插入数据 | insert into | insert into <表名> (column1,column2,column3,...) values (value1,value2,value3,...); |
向表中删除数据 | delete | delete from <表名> where <条件>; |
修改表中数据 | update | update <表名> set column1 = value1, column2 = value2, ... where <条件>; |
4.数据控制语言DCL(Data Control Language)
GRANT,REVOKE,COMMIT,ROLLBACK
主要为数据库访问权限控制,给用户授予访问权限:GRANT语句,取消授权:REVOKE
5.事务控制语言TCL(Transaction Control Language)
BEGIN,SAVEPOINT xxx,ROLLBACK,ROLLBACK TO xxx,COMMIT
用于提交事务和回滚事务,维护数据的一致性
Mysql常用数据类型
int(size) | 储存数字的空间 |
varchar(size) | 储存字符的可变空间 |
blob | 储存二进制的空间 |
text | 储存文本的空间 |
Mysql常用的字段约束
not null | 当前字段不能为空 |
auto_increment | 当前字段设置为自增 |
unique | 当前字段只能存在一个 |
default <value> | 当前字段设置默认值 |
Mysql多表关系
多表关系的规则
表结构中:一对多关系中外键约束在多的一边(便于查找,多找一容易,一找多困难)
Java类中: 一对多关系中多的一方设成集合放到一的一方类中
一对一
一对一:主表内一行数据的某一列 代表着从表的一行数据
![](https://img-blog.csdnimg.cn/img_convert/0538f63e394c70c464007226011c282b.png)
Java类中一对一的表示
![](https://img-blog.csdnimg.cn/img_convert/84b0db483e1c32de97784e33675ecece.png)
案例模拟:一个用户拥有一张身份证
关系分析: 用户与身份证卡片是一对一关系(且用户拥有身份证 则用户为主表,身份证为从表)
一对一关系数据图示
![](https://img-blog.csdnimg.cn/img_convert/0538f63e394c70c464007226011c282b.png)
一对一表结构设置:(外键在主表,而且外键要设置为unique约束,外键还要链接从表的主键)
![](https://img-blog.csdnimg.cn/img_convert/5a44fb7756fa5be71ebc98adf4f55b6a.png)
Java类中一对一的表示
![](https://img-blog.csdnimg.cn/img_convert/84b0db483e1c32de97784e33675ecece.png)
一对多
一对多:一的一方表内某一行数据的某一列 代表着多的一方表的多行数据
![](https://img-blog.csdnimg.cn/img_convert/afc8d9ef7e12996aef262ad35a543c14.png)
Java类中一对多的表示(学生是一,课程是多)
![](https://img-blog.csdnimg.cn/img_convert/a48db4e8cad9b68383360fe43d9b2627.png)
案例模拟:一个学生拥有多个课程
关系分析: 学生是一对多关系内一的一方,而课程是多的一方
一对多关系数据图示
![](https://img-blog.csdnimg.cn/img_convert/afc8d9ef7e12996aef262ad35a543c14.png)
一对多表结构设置:(外键在多的一方,去链接一的一方的主键)
![](https://img-blog.csdnimg.cn/img_convert/7d886b310c706e77952ffe6af61f0d2e.png)
Java类中一对多的表示(学生是一,课程是多)
![](https://img-blog.csdnimg.cn/img_convert/a48db4e8cad9b68383360fe43d9b2627.png)
多对多
多对多:学生表内某一行数据的某一列 代表着课程表的多行数据,同时,课程表内某一行数据的某一列 也可以代表着学生表的多行数据
此操作需要三张表实现,用一张中间表来记录学生表与课程表之间的关系
![](https://img-blog.csdnimg.cn/img_convert/52d4eca7e2c2bc7a820429c70ea17e13.png)
Java类中多对多的表示(相互有对面的集合)
![](https://img-blog.csdnimg.cn/img_convert/6042ac77e89c710e22ef3e3d7fbd4d5b.png)
案例模拟:一个学生拥有多个课程,一个课程也可以拥有多个学生
关系分析: 学生是一对多关系内多的一方,而课程也是多的一方
多对多关系数据图示
![](https://img-blog.csdnimg.cn/img_convert/52d4eca7e2c2bc7a820429c70ea17e13.png)
一对多表结构设置:(外键在多的一方,去链接一的一方的主键)
![](https://img-blog.csdnimg.cn/img_convert/56aeee0b3dd6e09e5a3b85a4563cfd10.png)
Java类中多对多的表示(相互有对面的集合)
![](https://img-blog.csdnimg.cn/img_convert/6042ac77e89c710e22ef3e3d7fbd4d5b.png)
多表查询语句
select * from 表1,表2 where 多的一方外键 = 一的一方主键 and 多表查询条件