SQL增删改操作
1 学习目标
- 重点掌握插入单条记录的语法
- 了解全表插入记录的语法
- 重点掌握修改记录的语法
- 重点掌握删除记录的语法
- 重点掌握主键约束、外键约束
- 了解检查约束、非空约束、唯一约束
2 数据类型
- MySQL支持多种数据类型,大致可以分类三类:数值、日期和字符串。
2.1 数值类型
2.1.1 分类
类型 | 特点 |
---|---|
tinyint | 1字节 |
smallint | 2字节 |
int | 4字节 |
bigint | 8字节 |
float | 4字节,单精度 |
double | 8字节,双精度 |
decimal(m,n) | 定点数,固定长度的小数位, decimal(6,4)表示整数位2位,小数位4位,一共6位, 字节量: m+2 |
2.1.2 例子
USE db2;
CREATE TABLE tb6(
a INT(5),
b DOUBLE(6, 4),
c DECIMAL(6, 4)
) CHARSET = utf8;
INSERT INTO tb6 VALUES(5, 45.2345, 56.3456);
2.2 字符串类型
2.2.1 分类
类型 | 描述 |
---|---|
char | 定长字符串,最长不能超过255个字符,char(6)则表示定长6个字符, 超过6位,可能出错,也可能截断,不足6位,在后面添加空格 |
varchar | 变长字符串,最大65535个字节,varchar(6)如果指定的最大长度, 在255个字节内,在前面会加1个字节,表示字符串的字节长度最大长度大于255, 在前面加2个字节,表示字符串的字节长度 char和varchar区别:char效率高varchar效率低,读取时,先读取长度值,再取字符串 |
text | 65535个字节 latin1 - 字符数量:65535 gbk - 65535/2 个字符 utf8 - 65535/3 个字符 |
2.2.2 例子
USE db2;
CREATE TABLE tb7(
a CHAR(6),
b VARCHAR(6),
c TEXT
) CHARSET = utf8;
INSERT INTO tb7 VALUES ('abcdef', 'abc', 'asdfasdfasfwewefw');
SELECT * FROM tb7;
2.3 日期类型
2.3.1 分类
类型 | 描述 |
---|---|
datetime | 年月日时分秒 |
date | 年月日 |
time | 时分秒 |
timestamp | 时间戳:时间范围,只到2038年第一个timestamp字段, 会在修改这行数据时,自动修改成系统当前时间 |
2.3.2 例子
USE db2;
CREATE TABLE tb8(
a DATETIME,
b DATE,
c TIME,
d TIMESTAMP
) CHARSET = utf8;
INSERT INTO tb8(a, b, c) VALUES (NOW(), NOW(), NOW());
SELECT * FROM tb8;
3 插入数据
- 在数据库中的一个表中增添数据并不是随意的,我们之前在创建表的时候规定过表中可以容纳几列数据,每列数据的类型,我们要根据可以容纳几列数据,每列数据的类型来进行新增数据的操作。
- 在创建表的初期所决定的数据类型是决定整张表数据类型的基础 ,新增数据的基础是创建表的时候所决定的数据类型。
3.1 前期准备
- 使用db2库
USE db2;
- 查看库中person表结构
DESC person;
3.2 语法
3.2.1 全表插入单条记录
- 单行的输入数据,把表中一行全部填满,全列输入的意思就是把表中所有字段全部填满。
3.2.1.1 格式
- 插入的值的顺序需要和表中的字段顺序一致
INSERT INTO 表名 VALUES(值1,值2);
3.2.1.2例子
- 向person表中插入一条记录,name为tom,age为18
INSERT INTO person VALUES("tom",18);
#查询表中记录
SELECT * FROM person;
3.2.2 指定字段插入单条记录
3.2.2.1 格式
INSERT INTO 表名(字段1名,字段2名) VALUES(值1,值2);
3.2.2.2 例子
- 向person表中插入一条记录,name为jerry,age不传值
INSERT INTO person (name) VALUES ("jerry");
#查询表中记录
SELECT * FROM person;
3.2.3 全表插入格式
3.2.3.1 格式
INSERT INTO 表名 VALUES(值1,值2),(值1,值2),(值1,值2);
3.2.3.2 例子
- 向person表中插入两条记录,分别是name为lucy,age为21的记录和name为lily,age为22的记录
INSERT INTO person VALUES("lucy",21),("lily",22);
#查询表中记录
SELECT * FROM person;
3.2.4 指定字段插入格式
3.2.4.1 格式
INSERT INTO 表名 (字段1名,字段2名) VALUES(值1,值2),(值1,值2);
3.2.4.2 例子
- 向person表中插入三条记录,分别是name为danny,name为hanmeimei,name为lilei的记录
INSERT INTO person (NAME) VALUES("danny"),("hanmeimei"),("lilei");
#查询表中记录
SELECT * FROM person;
4 修改数据
4.1 数据准备
- 为了方便修改内容,我们提前向person表中插入新的记录
INSERT INTO person VALUES('刘备',40),('关羽',30),('悟空',20),('八戒',10),('张学友',5);
#查询表中记录
SELECT * FROM person;
4.2 格式
UPDATE 表名 SET 字段名=值,字段名=值 WHERE 条件;
4.3 例子
①将name为刘备的记录的age属性,修改为88
UPDATE person SET age = 88 WHERE name = "刘备";
#查询表中记录
SELECT * FROM person;
②将age为5的记录的name属性,修改为黎明
UPDATE person SET name = "黎明" WHERE age = 5;
#查询表中记录
SELECT * FROM person;
③将name为关羽的记录的name属性修改为张飞,age属性修改为18
UPDATE person SET name = "张飞",age = 18 WHERE name = "关羽";
#查询表中记录
SELECT * FROM person;
5 删除数据
5.1 格式
DELETE FROM 表名 WHERE 条件;
5.2 例子
①删除name为张飞的记录
DELETE FROM person WHERE name = "张飞";
#查询表中记录
SELECT * FROM person;
②删除age小于30的记录,也就是删除年龄小于30岁的记录
DELETE FROM person WHERE age < 30;
#查询表中记录
SELECT * FROM person;
③删除整张表的记录
但是由于idea担心我们删除整张表的操作太过于危险,会有提示,点击Execute执行即可
DELETE FROM person;
#查询表中记录
SELECT * FROM person;