- 插入insert
- 更新update
- 删除delete
新增-插入(insert)-
- 插入单行
- 插入多行
- 单行/多行皆可/部分字段/全部字段
//支持插入多行
INSERT INTO 表名(字段1,字段2) VALUES(val1,val2);
//插入多行
INSERT INTO 表名(字段1,字段2)
VALUES(row1-1,row1-2),(row2-1,row2-2);
//支持子查询-将查询的结果集当作值插入
INSERT INTO 表名(字段1,字段2)
SELECT 字段va1,字段va2 FROM ;
//不支持多行插入
INSERT INTO 表名 SET 列名1=值1,列名2=值2
修改-更新(update)
- 修改单表
- 修改多表
- 单行/多行皆可/部分字段/全部字段
同时筛选条件筛出的行数
update 表名 set 列名1=值1,列名2=值2 where 筛选条件;
修改多表记录(级联更新)
//将连接后的表当作整体进行更新
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值
WHERE 筛选条件
删除-delete
- 只能删除全部字段
- 删除只能删除整个单行或者多行
单表删除
#方式一
#自增id从断点开始,就是1,2,3=>删除后,是从4开始
delete from 表名 where 筛选条件
#方式二
#truncate 删除后,1,2,3=>删除后,还是从1开始
truncate table 表名
多表删除
//sql92
DELECT 表1的别名,表2的别名
FROM 表1的别名,表2的别名
WHERE 筛选条件
AND 筛选条件
//sql99
DELECT 表1的别名,表2的别名
FROM 表1 别名
inner|left|right join 表2 别名
on 连接条件
where 筛选条件
创建表
# INT 长度只是显示长度,不会影响存储的值范围
CREATE TABLE 表名
(
列名1 类型【(长度) 约束】,
列名2 类型【(长度) 约束】,
name varchar(20)//最后无逗号
)
修改列
增
ALTER TABLE 列名 CHANGE COLUM
数据类型
数值型:
整型 INT
小数:
定点数
浮点数 float(数字位数,小数位数),double(5,2)=> 5代表整数+小数位数
约束
- NOT NULL 非空
- DEFAULT 默认,用于保证该字段值有默认值
- PRIMARY KEY 主键:有且只有唯一
- UNIQUE 唯一,可为空
- check 检查约束(mysql不支持)
列级约束/表级约束
#列级约束
create table 表名(
字段名 数据类型(长度)列级约束,
字段名 数据类型,
表级约束
)
#表级约束
create table 表名(
name char(10),
age int,
constraint myName UNIQUE|primary key(唯一)
constraint 约束名 约束类型(字段名)
)
主键/唯一键
唯一 | 可否为空 | 一个表是否允许有多个 | 允许组合 | |
---|---|---|---|---|
主键 | √ | × | 只能1个 | √(不推荐) |
唯一键 | √ | √ | 可以多个 | √(不推荐) |
外键约束
- 主从表,从表设置外键
- 从表外键和主表列兼容(数据类型一致或者兼容)
- 主表关联列必须是个key(一般为主键或者唯一键)
- 插入数据时,必须先插入主表再从表
- 删除时,必须先删除从表再删除主表
DROP TABLE IF EXISTS stuinfo;
DROP TABLE IF EXISTS major;
#主表
CREATE TABLE IF NOT EXISTS major(
myid INT PRIMARY KEY,
marjorName VARCHAR(16)
);
#从表
CREATE TABLE IF NOT EXISTS stuinfo(
id int ,
stuName VARCHAR(20),
gender CHAR(1) CHECK(gender ="男" OR gender="女"),
age INT DEFAULT 18,
age2 INT DEFAULT(0),
setnum CHAR(10) UNIQUE,
#外键
FOREIGN KEY(id) REFERENCES major(myid)
);
- 增加表约束
- 删除表约束
- 修改表约束
ALTER TABLE 表名 ADD/MODIFY UNIQUE(列名)
MYSQL添加约束
//创建
create table table_name(
列名1 数据类型 (int) primary key auto_increment,
列名2 数据类型 not null,
列名3 数据类型 unique,
列名4 数据类型 default '值',
constraint 索引名 foreign key(外键列) references 主键表(主键列)
on delete cascade | on delete set null
)
//修改
1.主键约束
添加:alter table table_name add primary key (字段)
删除:alter table table_name drop primary key
2.非空约束
添加:alter table table_name modify 列名 数据类型 not null
删除:alter table table_name modify 列名 数据类型 null
3.唯一约束
添加:alter table table_name add unique 约束名(字段)
删除:alter table table_name drop key 约束名
4.自动增长
添加:alter table table_name modify 列名 int auto_increment
删除:alter table table_name modify 列名 int
5.外键约束
添加:alter table table_name add constraint 约束名 foreign key(外键列)
references 主键表(主键列)
删除:
第一步:删除外键
alter table table_name drop foreign key 约束名
第二步:删除索引
alter table table_name drop index 索引名
[^1]:
约束名和索引名一样
6.默认值
添加:alter table table_name alter 列名 set default '值'
删除:alter table table_name alter 列名 drop default