DML:对表中数据进行操作的语言,涵盖的内容为:INSERT(增),DELETE(删),UPDATE(改)
准备一张表:
CREATE TABLE person(
name VARCHAR(30),
age INT(3)
)
INSERT INTO 表名[(字段1,字段2,...)] VALUES(字段的1值,字段2的值,...)
注:在语法定义上"[]"中的内容表示可写可不写
例
INSERT INTO person(name,age) VALUES('张三',25)
INSERT INTO person(age,name) VALUES(33,'李四')
注:
数据库中字符串的字面量是使用单引号’'表达的
VALUES中指定的值要与指定的字段名个数,顺序,以及类型完全一致
查看表中数据
SELECT * FROM person
当插入数据时不指定某个字段,那么该字段插入默认值。若创建表时字段没有显示的指定默认值时,默认值插入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:
插入’赵六’
当我们插入数据是不指定任何字段名时,就是全列插入。此时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,'钱七'); 列的值类型不匹配
UPDATE 表名 SET 字段1=新值1[,字段2=新值2,...][WHERE 过滤条件]
例
UPDATE person SET age=15
上述SQL执行后会导致person表中所有记录的age字段值都被改为15
UPDATE语句通常都要添加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条件的记录都会被修改
=, <, <= ,> ,>= ,<>(不等于使用<>。!=不是所有数据库都支持)
将person表中年龄大于30岁的人改为年龄29
UPDATE person
SET age=29
WHERE age>30
将person表中每个人的年龄涨1岁
UPDATE person
SET age=age+1 将每条记录年龄的值+1后再修改回年龄字段
将'李四'改为'李老四'且年龄改为55岁
UPDATE person
SET name='李老四',age=55
WHERE name='李四'
DELETE FROM 表名 [WHERE 过滤条件]
注:DELETE语句通常都要添加WHERE子句,否则是清空表操作
例:
删除'李老四'
DELETE FROM person
WHERE name='李老四' 仅删除person表中满足WHERE条件的记录
删除年龄大于等于30岁的人
DELETE FROM person
WHERE age>=30
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
DML:数据操作语言,它是对表中数据进行操作的语言,涵盖操作:增(INSERT),删(DELETE),改(UPDATE)
INSERT语句用于将数据插入表中
INSERT时指定的字段顺序可以与表不一致,但是VALUES子句中值的顺序要与指定顺序一致
INSERT时可以不指定某字段,那么此时该条记录该字段会插入默认值
INSERT时为某个字段插入其指定的默认值,使用关键字DEFAULT。
字段若指定了默认值则使用该默认值,否则字段默认值为NULL。
INSERT时使用NULL插入一个字段为null值。
INSERT时可以不指定字段名,那么为全列插入,此时VALUES子句指定的值顺序,个数,类型必须与表结构完全一致。
UPDATE语句用于修改表中数据
DELETE语句用于删除表中数据
UPDATE语句和DELETE语句通常都要添加WHERE子句,否则是对全表所有记录操作。