DML 数据操作语言
DML:对表中数据进行操作的语言,涵盖的内容为:INSERT(增),DELETE(删),UPDATE(改)
准备一张表:
CREATE TABLE person(
name VARCHAR(30),
age INT(3)
)
1. 插入数据(INSERT)
1.1 语法:
INSERT INTO 表名[(字段1,字段2,...)] VALUES(字段的1值,字段2的值,...)
注:在语法定义上"[]"中的内容表示可写可不写
例
INSERT INTO person(name,age) VALUES('张三',25)
INSERT INTO person(age,name) VALUES(33,'李四')
注:
1.2 插入默认值
当插入数据时不指定某个字段,那么该字段插入默认值。若创建表时字段没有显示的指定默认值时,默认值插入NULL
例:
INSERT INTO person (name) VALUES ('王五')
注意事项:
-
age字段没有指定,因此插入默认值NULL
-
数据库中任何字段任何类型默认值都是NULL,当然可以在创建表时使用DEFAULT指定。
修改person表中age的默认值为20
ALTER TABLE person CHANGE age age INT(3) DEFAULT 20
修改后向person表中插入数据
INSERT INTO person (name) VALUES ('赵六')
提示:也可在创建person表时为字段指定默认值
CREATE TABLE person(
name VARCHAR(30) DEFAULT '无名氏',
age INT(3) DEFAULT 20
)
为age添加默认值20:
插入’赵六’
1.3 全列插入
当我们插入数据是不指定任何字段名时,就是全列插入。此时VALUES子句中需要为每个字段指定值。并且要求(个数,顺序,类型必须与表完全一致)
例:
INSERT INTO person VALUES('钱七',21);
若某个字段有默认值,可以用DEFAULT表示默认值
INSERT INTO person VALUES('钱七',DEFAULT);
若某个字段想插入NULL值,可以使用NULL表达
INSERT INTO person VALUES('钱七',NULL);
下列为错误示例
INSERT INTO person VALUES('钱七'); 列的值个数不匹配
INSERT INTO person VALUES(27,'钱七'); 列的值类型不匹配
2. 修改数据(UPDATE)
2.1 语法
UPDATE 表名 SET 字段1=新值1[,字段2=新值2,...][WHERE 过滤条件]
例
UPDATE person SET age=15
上述SQL执行后会导致person表中所有记录的age字段值都被改为15
注意
UPDATE语句通常都要添加WHERE子句,用于添加要修改记录的条件,否则全表修改!
2.2 修改指定记录(添加WHERE子句)
例
将张三的年龄改成20岁
UPDATE person
SET age=20
WHERE name='张三' 仅将person表中某条记录name字段值为‘张三’的age改为20
将person表中年龄为16岁的人改为36岁
UPDATE person
Set age=36
WHERE age=16 person表中凡是满足WHERE条件的记录都会被修改
(1) WHERE子句中常用的条件
=, <, <= ,> ,>= ,<>(不等于使用<>。!=不是所有数据库都支持)
将person表中年龄大于30岁的人改为年龄29
UPDATE person
SET age=29
WHERE age>30
2.3 将一个计算表达式的结果作为值使用
将person表中每个人的年龄涨1岁
UPDATE person
SET age=age+1 将每条记录年龄的值+1后再修改回年龄字段
2.4 同时修改多个字段
将'李四'改为'李老四'且年龄改为55岁
UPDATE person
SET name='李老四',age=55
WHERE name='李四'
3. 删除语句(DELETE)
3.1 语法:
DELETE FROM 表名 [WHERE 过滤条件]
注:DELETE语句通常都要添加WHERE子句,否则是清空表操作
例:
删除'李老四'
DELETE FROM person
WHERE name='李老四' 仅删除person表中满足WHERE条件的记录
删除年龄大于等于30岁的人
DELETE FROM person
WHERE age>=30
3.2 清空表操作
DELETE FROM person
练习:
1.创建数据库day1db 字符集utf8并使用
CREATE DATABASE day1db CHARSET=utf8
USE day1db
2.创建t_hero表, 有name字段,字符集utf8
CREATE TABLE t_hero(
name VARCHAR(30)
)CHARSET=utf8
3.修改表名为hero
RENAME TABLE t_hero TO hero
4.最后面添加价格字段money, 最前面添加id字段, name后面添加age字段
ALTER TABLE hero ADD money INT
ALTER TABLE hero ADD id INT FIRST
ALTER TABLE hero ADD age INT AFTER name
5.表中添加以下数据: 1,李白,50,6888 2,赵云,30,13888 3,刘备,25,6888
INSERT INTO hero(id,name,age,money) VALUES(1,'李白',50,6888)
INSERT INTO hero(id,name,age,money) VALUES(2,'赵云',30,13888)
INSERT INTO hero(id,name,age,money) VALUES(3,'刘备',25,6888)
6.修改刘备年龄为52岁
UPDATE hero
SET age=52
WHERE name='刘备'
7.修改年龄小于等于50岁的价格为5000
UPDATE hero
SET money=5000
WHERE age<=50
8.删除价格为5000的信息
DELETE FROM hero
WHERE money=5000
9.删除表, 删除数据库
DROP TABLE hero
DROP DATABASE day1db
4. 总结
数据库相关文章推荐
- 数据库基本概念介绍和MariaDB安装
- 数据库DDL数据定义语言
- 数据库DQL数据查询语言
- 数据库常用的数据类型和约束条件