知识不成体系?这篇Mysql数据库将成为你的解忧杂货店!(DDL&DML)

 欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力

对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426@qq.com 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

    专栏:

文章概述:对mysql的DDL和DML语句代码介绍和常见问题的解答以及注意点

关键词:Mysql    DDL&DML

本文目录

 DDL

约束概述

添加主键约束

1. 单一主键

2. 联合主键

1. 使用DDL语句添加主键约束:ALTER TABLE表名ADD PRIMARY KEY(列名)

2.主键自增能力(自动生成ID)

删除主键:

添加外键约束

删除外键约束

添加唯一性约束

删除唯一性约束

添加非空约束

删除非空约束

创建表时添加约束

DML

添加数据

1.选择插入

2. 完全插入

默认值处理

1.创建表时指定列的默认值

2.修改表添加新列并指定默认值

3.插入数据时的默认值处理

更新数据

删除数据

1.DELETE删除数据

2.TRUNCATE清空表

3.清空表时DELETE与 TRUNCATE 区别


 DDL

约束概述

数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。

1. 主键约束(Primary Key) PK

主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主

键。

主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。例如,学生信息表中的学

号是唯一的。 (是唯一性约束和非空约束的综合)

2. 外键约束(Foreign Key) FK

外键约束经常和主键约束一起使用,用来确保数据的一致性。(值必须是参数表的参数列中所包含的值)

3. 唯一性约束(Unique)

唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同

的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的。

4. 非空约束(Not Null)

非空约束用来约束表中的字段不能为空。

5. 检查约束(Check)

检查约束也叫用户自定义约束,是用来检查数据表中,字段值是否有效的一个手段,但目前MySQL 数据库不支持检查约束

添加主键约束

1. 单一主键

使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。

2. 联合主键

使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。(1,2)(2,1)(1,2)重复

1. 使用DDL语句添加主键约束:ALTER TABLE表名ADD PRIMARY KEY(列名)

#打开mysql

mysql -uroot -proot  
alter table emp add primary key (employee_id);
2.主键自增能力(自动生成ID)

#添加主键自增长(ADD)

alter table emp modify employee_id int auto_increment; 

删除主键:

注意:如果有主键自增长,要先去掉自动增长,然后再删除主键

#添加主键自增长(ADD)

alter table emp modify  employee_id int;  

 #删除主键

alter table emp drop primary key ;

添加外键约束

ALTER TABLE表名ADD CONSTRAINT约束名FOREIGN KEY(列 名)REFERENCES参照的表名(参照的列名); # CONSTRAINT 限制 REFERENCES 参考

注意:创建外键必须删除两表数据,并且保持数据类型一致

#删除主键

create table departments(department_id int ,department_name varchar(10) , location_id int ); 

#添加主键 

alter table departments add primary key (department_id); 

#添加主键自增长

alter table departments modify department_id int auto_increment;  

 #添加dept_id 列 

alter table emp add column dept_id int;  

一般约束名是表明+fk

alter table emp add constraint emp_fk foreign key(dept_id) references departments(department_id); 

删除外键约束

使用DDL语句删除外键约束

ALTER TABLE表名DROP FOREIGN KEY约束名;

#删除外键

alter table emp drop foreign key emp_fk; 

添加唯一性约束

ALTER TABLE表名ADD CONSTRAINT约束名UNIQUE(列名);

alter table emp add constraint emp_uk unique(name);

注意:允许null的

删除唯一性约束

ALTER TABLE表名DROP KEY约束名;

alter table emp drop key emp_uk;

添加非空约束

ALTER TABLE表名MODIFY列名 类型NOTNULL;

alter table emp modify salary float (8,2) not NULL;

删除非空约束

使用DDL语句删除非空约束

ALTER TABLE表名MODIFY列名 类型NULL;

alter table emp modify salary float(8,2) NULL;

注意:不能对一个含有不符合条件的列去添加约束,要先删除数据

创建表时添加约束

查询表中的约束信息:

SHOW KEYS FROM表名;

show keys from departments;

注意:创建外键约束,必须要保证目标表存在,才能去添加参数

#创建depts表包含department_id该列为主键且自动增长,department_name列不 允许重复,location_id列不允含有空值。

create table depts(department_id int primary key auto_increment,department_name
varchar(30) unique,location_id int not null);  

DML

DML操作(操作数据的语言)

添加数据

1.选择插入

INSERT INTO表名(列名1,列名2,列名3.....)VALUES(值1,值2,值

3......); #列和值对应,且具有非空约束的列不能忽略数据的插入

#向 departments 表中添加一条数据,部门名称为 market ,工作地点 ID 为 1。

alter table departments add primary key (department_id );

#department中department_id 是主键自增长 

alter table departments modify department_id int auto_increment; 

# 字符类型也可以使用单引号 

insert into departments(department_name,location_id) values("market",1);

2. 完全插入

INSERT INTO表名VALUES(值1,值2,值3......); #数值顺序是对应navicat里设计表从上至下的变量顺序

注意:如果主键是自动增长,需要使用 default 或者 null 或者 0 占位。

示例一:向 departments 表中添加一条数据,部门名称为 development ,工作地点 ID 为 2 。使用 default 占位。

insert into departments values(default,"development",2);

#报错ERROR 1406 (22001): Data too long for column 'department_name' at row 1 (超了department_name的长度)

#修改长度

alter table departments  modify department_name varchar(20);

默认值处理

在 MySQL 中可以使用 DEFAULT 为列设定一个默认值。如果在插入数据时并未指定该列的值,那么MySQL 会将默认值添加到该列中。

1.创建表时指定列的默认值

CREATE TABLE表名(列名 类型default默认值);

注意:类型和默认值要对应

#创建emp3表,该表包含emp_id主键且自动增长,包含name,包含address该列默认 值为”未知”。

create table emp3(emp_id int primary key auto_increment,name varchar(10),address varchar(50) default'Unknown');

2.修改表添加新列并指定默认值

ALTER TABLE表名ADD COLUMN列名 类型DEFAULT默认值;

alter table emp3 add column job_id int default 0;

3.插入数据时的默认值处理

#向 emp3 表中添加数据,要求 address 列与job_id 列使用默认值作为该列的值。

#选择插入

insert into emp3(name) values("admin");  

 #完全插入 

insert into emp3 values(default,"oldlu",default,default);

更新数据

更新数据(UPDATE)

UPDATE表名SET列名=值,列名=值WHERE条件;

注意:更新语句中一定要给定更新条件,否则表中的所有数据都会被更新。

#更新emp3表中的id为1的数据,添加address为BeiJing。

update emp3 set address = "beijing" where emp_id =1; 

删除数据

1.DELETE删除数据

DELETE FROM表名WHERE条件;

注意:在DELETE语句中,如果没有给定删除条件则会删除表中的所有数据。

#删除 emp3 表中 emp_id 为 1 的雇员信息。

delete from emp3 where emp_id = 1;  

2.TRUNCATE清空表

TRUNCATE TABLE表名;

 #删除 emp3 表中的所有数据。

truncate table emp3;

3.清空表时DELETE与 TRUNCATE 区别

    • truncate 是整体删除(速度较快), delete 是逐条删除(速度较慢);
    • truncate 不写服务器 log,delete 写服务器 log,也就是 truncate 效率比 delete 高的原因;
    • truncate 是会重置自增值,相当于自增列会被置为初始值,又重新从 1 开始记录,而 不是接着原
    • 来的值。而 delete 删除以后, 自增值仍然会继续累加
  • 44
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值