DDL和DML操作

系列文章目录

DDL和DML操作

一、DML(数据操作语言)

1.插入数据

insert into tb_name values ( value1,value2,.... ) ;
insert into tb_name ( col_name [ , col_name2, ..., col_namen ])
values ( value1 [ ,value2, ..., valuen ]) ,
( value1 [ ,value2, ..., valuen ]) ,
...
( value1 [ ,value2, ..., valuen ]) ;
insert into tb_name ( tar_col_name1 [ , tar_col_name2, ...,
tar_col_namen ])
select  ( src_col_name1 [ , src_col_name2, ..., src_col_namen ])
from  src_tb_name
[ where condition ]

2.数据更新

update tb_name
set col_name = value1, col_name = value2, ... , col_namen = valuen
[ where condition ]

不加where就是更新所有的 

3.数据删除

delete from tb_name
[ where condition ]

 不加where就是删除所有的 

二、数据库设计

1. 转化为关系模型 根据概念模型,将实体、关系和属性转化为关系数据库的表、列和键。 每个实体将成为一个表,每个属性将成为表的列,关系将成为表之间的关联

 2. 定义关系模式 确定每个表的结构,包括表名、列名、数据类型、长度、约束和默认值 等。 确保表的结构能够准确地表示和存储数据,并满足数据的完整性和一致性 要求。

3. 主键和外键定义 为每个表定义主键,以唯一标识每个记录。确定主键的选择标准,并确保 它们的唯一性和稳定性。根据实体之间的关系,定义外键来建立表之间的 关联。

4. 处理关系 根据实体之间的关系类型(一对一、一对多、多对多),使用适当的关系 处理方法来建立关联关系。常见的处理方法包括主键-外键关联、联接表 和引用完整性约束等。

5. 范式化优化 应用规范化理论,对逻辑模型进行优化。确保模型满足第一范式 (1NF)、第二范式(2NF)和第三范式(3NF)等范式,消除冗余和数据 依赖。(具体范式,下面章节介绍)

6. 完整性约束 定义适当的完整性约束来保护数据的一致性和有效性。 例如,主键约束、唯一约束、非空约束、默认值约束等。确保只有有效和 合法的数据可以插入和更新。

主键和外键

主键:

能做主键的列必要满足非空唯一的特点

只要满足非空唯一的任何列都可以做主键

可以让表中一个有意义的列做主键

例如,学号,它既表示学生的学号,又作为表中的主键,因为这个列满足 非空唯一的条件

可以找一个没有意义的列做主键 其作用就是标识一行数据,大部分情况下都是用没有意义的列去做主键, 例如ID列

可以让多个列联合在一起做表中的主键 这个主键就是一个联合主键,要求这几个列的值联合在一起是非空唯一的

外键:

表中的某一个列声明为外键列,一般这个外键列都会引用另外一张表的主 键列的值。其实只要是具体唯一约束的列,就可以被另一种表的外键列所引用。

一张表的主键列中出现过的值,都可以在另一张表的外键列中使用。

外键列值也可以为空的,提前是这个外键列没有做主键或联合主键。

如果把B表中的联合主键,引用到A表中做外键,那么这个外键就是一个联 合外键

数据库范式

1 2 3 巴斯-科德范式 4 5范式

三、DDL(数据库定义语言)

1.创建表

数据类型额外补充(了解即可): 存储选项型数据 ENUM,SET        
-- 格式 1
create table 表名 (
字段名 数据类型 [ 列约束类型 ] ,
字段名 数据类型 [ 列约束类型 ] ,
字段名 数据类型 [ 列约束类型 ] ,
字段名 数据类型 [ 列约束类型 ] ,
...
) ;
-- 格式 2
create table 表名 (
字段名 数据类型 [ 列约束类型 ] ,
字段名 数据类型 [ 列约束类型 ] ,
字段名 数据类型 [ 列约束类型 ] ,
...
[ 表级约束 ] ,
[ 表级约束 ] ,
...
) ;

 数据类型

 

 

常见约束:

not null,unique,primary key ,foreign key,check,default

非空约束(not null),不能声明成表级约束

特殊建表

从一个表中拿数据或者结构去建表,用create table 表名 as select来建表

级联动作 

restrict(默认) : on delete restrict on update restrict 当主表删除记录时,如果从表中有相关联记录则不允许主表删除 当主表更改主键字段值时,如果从表有相关记录则不允许更改

cascade:数据级联更新 on delete cascade on update cascade 当主表删除记录或更改被参照字段的值时,从表会级联更新 s

et null : on delete set null on update set null 当主表删除记录时,从表外键字段值变为null 当主表更改主键字段值时,从表外键字段值变为null

2.修改表

add操作:
alter table 表名 add 字段名 数据类型 ;
alter table 表名 add 字段名 数据类型 first ;
alter table 表名 add 字段名 数据类型 after 字段名
删除字段
alter table 表名 drop 字段名 ;
修改数据类型(modify)
alter table 表名 modify 字段名 新数据类型 ;
修改字段名
alter table 表名 change 旧字段名 新字段名 新数据类型 ;
修改约束
alter table 表名 add constraint 约束名 具体约束 ;

更改约束

查询约束 SQL 语句:
删除或新增约束语法:
案例测试:
select constraint_name,constraint_type
from information_schema .table_constraints
where table_name = ' 表名 ' ;
-- 添加主键约束 ( 约束名无效 )
alter table 表名 add [ constraint 约束名 ] primary key ( 列名 ) ;
-- 添加唯一约束
alter table 表名 add constraint 约束名 unique ( 列名 ) ;
-- 添加外键约束
alter table 表名 add constraint 约束名 foreign key ( 列名 ) references
关联的表名 ( 关联的列名 一般是主键 ) ;
-- 删除约束 ( 不能删除主键约束 )
  alter table 表名 drop constraint 约束名 ;

3.重命名表

rename table old_tb_name to new_tb_name;
alter table old_tb_name rename [ to ] new_tb_name;

4.删除表

drop table [ if exists ] tb_name [ , tb_name1, ..., tb_namen ] ;

5.截断表

truncate table tb_name;

 删除表中所有的数据

释放表的存储空间

注意事项:

四、数据库备份 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值