MYSQL-day03

网课笔记

删除主键

使用DDL语句删除主键

sql 复制代码
ALTER TABLE 表名 DROP PRIMARY KEY;

注意:删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后再删除主键。

示例:

删除emp表中的employee_id逐渐约束。

去掉自动增长:

sql 复制代码
alter table emp modify employee_id int;

删除主键:

sql 复制代码
alter table emp drop primary key;

添加外键约束(Foreign Key)

使用DDL语句添加外键约束

sql 复制代码
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY(列名) REFERENCES 参照的表名(参照的列名)

示例1:

创建departments表包含department_id,department_name,location_id

sql 复制代码
create table departments(department_id int,department_name varchar(30),location_id int);

示例2:

修改departments表,向department_id列添加主键约束与自动递增。

sql 复制代码
alter table departments add primary key(department_id);
alter table departments modify department_id int auto_increment;

示例3:

修改emp表,添加dept_id列

sql 复制代码
alter table emp add column dept_id int;

示例4:

向emp表中的dept_id列添加外键约束。

sql 复制代码
alter table emp add constraint emp_fk foreign key(dept_id) references departments(department_id)

查看效果

外键约束:可重复,可为空,但是不能填外键约束里面没有的数字

navicat里面设置

依次设置选择

删除外键约束

使用DDL语句删除外键约束

sql 复制代码
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;

示例:

删除dept_id的外键约束

sql 复制代码
alter table emp drop foreign key emp_fk;

添加唯一性约束

使用DDL语句添加唯一性约束

sql 复制代码
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);

示例:

向emp表中的name添加唯一性约束。

sql 复制代码
alter table emp add constraint emp_uk unique(name);

删除唯一性约束

使用DDL语句删除唯一性约束

sql 复制代码
ALTER TABLE 表名 DROP KEY 约束名;

示例:

删除name的唯一约束

sql 复制代码
alter table emp drop key emp_uk;

非空约束(Not Null)

使用DDL语句添加非空约束

sql 复制代码
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;

示例:

向emp表中的salary添加非空约束

sql 复制代码
alter table emp modify salary float(8,2) not null;

删除非空约束

使用DDL语句删除非空约束

sql 复制代码
ALTER TABLE 表名 MODIFY 列名 类型 NULL;

示例:

删除emp表中salary的非空约束

sql 复制代码
alter table emp modify salary float(8,2) null;

创建表时添加约束

查询表中的约束信息

sql 复制代码
SHOW KEYS FROM 表名;

示例:

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

sql 复制代码
create table depts(department_id int primary key auto_increment,department_name varchar(30) unique,location_id int not null); 

MYSQL中DML操作

添加数据(INSERT)

选择插入

sql 复制代码
INSERT INTO 表名(列名 1,列名 2,列名 3...) VALUES(值 1,值 2,值 3...);

示例:

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

sql 复制代码
insert into departments(department_name,location_id) values("market",1);

完全插入

sql 复制代码
INSERT INTO 表名 VALUES(值 1,值 2,值 3...);

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

示例1:

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

sql 复制代码
insert into departments values(default,"development",2);

示例2:

向departments 表中添加一条数据,部门名称为human,工作地点ID为3。使用null占位。

sql 复制代码
insert into departments values(null,"human",3);

示例3:

向departments表中添加一条数据,部门名称为teaching,工作地点ID为4.使用0占位。

sql 复制代码
insert into departments values(0,"teaching",4);

默认值处理(DEFAULT)

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

创建表时指定列的默认值

sql 复制代码
CREATE TABLE 表名(列名 类型default 默认值,......);

示例:

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

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

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

sql 复制代码
ALTER TABLE 表名 ADD COLUMN 列名 类型 DEFAULT 默认值;

示例:

修改emp3表,添加job_id该列默认值为0。

sql 复制代码
alter table emp3 add column job_id int default 0;

插入数据时的默认值处理

如果在插入数据时并未指定该列的值,那么MySQL会将默认值添加到该列中。如果是完全项插入需要使用default 来占位。

示例:

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

sql 复制代码
insert into emp3 (name) values("admin");
insert into emp3 values(default,"oldlu",default,default);

进度27/85

相关推荐
虚拟世界AI4 分钟前
Kronos 时间序列数据库新手部署与实战指南
数据库
波力海苔夹心脆67514 分钟前
C# 正则表达式零基础入门:从“看得懂“到“会用“
经验分享·后端·mysql·正则表达式·c#
愤怒火龙果22 分钟前
AI攻防 AIRT03-RAG Exploitation & Vector Database Attacks
数据库·人工智能·网络安全
SelectDB34 分钟前
高并发 BI 看板怎么撑住:隔离与加速配置速查
大数据·数据库·数据分析
l1t1 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
麦壳饼2 小时前
SonnetDB:向量召回率评估中的精确基线与参数记录
数据库·sonnetdb
ClouGence2 小时前
数据如何随时可用?广西水牛先生的 MySQL 实时同步实践
数据库·mysql·数据分析
斯晨的AI笔记2 小时前
rsync 部署避坑:脚本执行位被 git 模式位抹掉,巡检备份双静默失败的排查与根治
数据库
这个DBA有点耶2 小时前
innodb_autoinc_lock_mode的三种模式:批量插入时自增锁的持有逻辑与调优
数据库·架构·代码规范
我命由我123452 小时前
5-1.Python 编码进阶 - 函数进阶(参数、返回值、递归、函数作为参数传递、lambda 匿名函数)
java·服务器·数据库·后端·python·java-ee·python3.11