03-数据库-续
一. 数据操作语言(DML)
DML是对表中的数据进行操作的语言, 涉及到的关键字 INSERT, UPDATE, DELETE
- INSERT: 向表中插入新数据的语句
- UPDATE: 修改表中数据的语句
- DELETE: 删除表中数据的语句
前期准备
SHOW DATABASES ;
# 准备工作
CREATE DATABASE mydb CHARSET=UTF8;
USE mydb;
CREATE TABLE person(
id INT,
name CHAR(8),
age INT
)CHARSET=UTF8;
SHOW TABLES;
DESC person;
1. 插入数据 -INSERT
1.1 全列插入
在INSERT语句中不指定字段时,为全列插入,此时要求VLAUES字句后面 指定值的个数,顺序,类型必须表结构中的字段完全一致
INSERT INTO 表名 VALUES(值1,值2 ...);
要求VLAUES字句中指定的值必须与表结构一致
# 向person表中插入1条数据
INSERT INTO person VALUES (1,'hanmm',12);
# 补充: 查询语句
SELECT * FROM person;
1.2 选择字段插入
INSERT INTO 表名(字段1,字段2,字段3...) VLAUES(值1,值2,值3...)
向表中插入一条数据, 将值1插入到字段1中,将值2插入到字段2中…
# 向person表中插入数据
INSERT INTO person(id,name) VALUES(2,'lilei');
INSERT INTO person(name,age) VALUES ('lucy',18);
INSERT INTO person(id,age) VALUES (4,20)
注意:
- 在数据库中, 字符串的字面量使用’单引号括起来的’
- 在INSERT语句中, 指定的字段与VLAUES后面指定的值的顺序,个数,类型要完全一致
- 在INSERT语句中字段指定时的顺序和个数可以与表结构定义时不一致
1.3 批量插入
一次性在数据表中插入多条数据
INSERT INTO 表名(字段...) VLAUES(第一组值),(第二组值),(....);
# 一次性插入三条数据
INSERT INTO person(id,name,age) VALUES(5,'阿猫',2),(6,'阿狗',1),(7,'小黑',3);
2. 默认值
INSERT语句指定字段时,忽略的字段会被插入默认值; 当表中字段没有被明确指定默认值时,默认值一律为null
使用DEFAULT
关键字来指定默认值,可以在创建表时, 也可以在修改表时执行
2.1 创建表时指定默认值
CREATE TABLE person(
id INT,
name CHAR(8) DEFAULT '无名氏',
age INT
)CHARSET=UTF8;
2.2 修改表时指定默认值 - MODIFY
ALTER TABLE 表名 MODIFY 字段名 字段类型 DEFAULT 默认值;
ALTER TABLE person MODIFY age INT DEFAULT 18;
2.3 练习
1.创建数据库 graduationpro(毕业设计)字符集UTF8并使用
2.创建表js_school_student_content(毕业设计成果汇报展览及评价),包括
id(int) studentId(INT) className(VARCHAR(32)),
student_name(VARCHAR(32)) title(VARCHAR(32))
3. 查看表结构
4.在js_school_student_content表中全列插入1条数据, 并查询是否插入成功
5.在js_school_student_content表中,指定id,studentId.className字段, 插入两条数据,并查询
6.在修改表时修改title的默认值(XXXX管理系统);
# 1.创建数据库 graduationpro(毕业设计)字符集UTF8并使用
CREATE DATABASE graduationpro CHARSET=UTF8;
USE graduationpro;
# 2.创建表js_school_student_content(毕业设计成果汇报展览及评价),包括
# id(int) studentId(INT) className(VARCHAR(32)),
# student_name(VARCHAR(32)) title(VARCHAR(32))
CREATE TABLE js_school_student_content(
id INT COMMENT '编号',
studentId INT COMMENT '学生id',
classNname VARCHAR(32) COMMENT '专业',
student_name VARCHAR(32) COMMENT '学生姓名',
title VARCHAR(32) COMMENT '毕设标题'
)CHARSET=UTF8;
DESC js_school_student_content;
# 全列插入
INSERT INTO js_school_student_content VALUES
(1,20240101,'软件工程','张三','二手图书后台管系统');
# 指定字段插入
INSERT INTO js_school_student_content(id,studentId,classNname)
VALUES (2,20240102,'计算机科学与技术');
# 修改title默认值
ALTER TABLE js_school_student_content MODIFY title VARCHAR(32) DEFAULT '管理系统';
# 查询
SELECT * FROM js_school_student_content;
3. 更新数据 - UPDATE
修改表数据
3.1 语法
UPDATE 表名
SET 字段1=新值,字段2=新值, …
[WHERE 过滤条件]
# 修改用户的年龄 --- 全部为28岁
UPDATE person SET age = 28;
注: 当UPDATE语句中不添加WHERE子句, 会将表中所有的记录进行修改, 这种操作在开发很少见
3.2 WHERE字句
当UPDATE语句添加了WHERE子句时, 只有满足where子句要求的记录才会被修改
# 将lilei年龄修改为18岁
UPDATE person SET age = 18 WHERE id=2;
# 数据库中在修改记录时对表是逐行进行, 每一行是否修改取决于该行的记录是否满足WHERE子句的条件
# 将年龄大于20岁的人年龄修改为20岁
UPDATE person SET age = 20 WHERE age>20;
WHERE子句的基础条件
基础条件: >, >=, <,<=,=,!=
# 将年龄大于15岁的人改为20岁
UPDATE person SET age=20 WHERE age>15;
使用表达式修改数据
# 将每个人的年龄涨一岁
UPDATE person SET age = age+1;