文章目录
前言
SQL,Structured Query Language,结构化查询语言
SQL语言包括:DDL、DML、DQL、DCL、TCL
DML,数据操作语言,是操作表中数据的语言。操作包括:增INSERT、删DELETE、改UPDATE
开始前准备工作:
DROP DATABASE mydb; CREATE DATABASE mydb CHARSET=UTF8; USE mydb; CREATE TABLE people( name VARCHAR(30), age INT(3) );
增INSERT–向表中插入数据
语法
INSERT INTO 表名 (字段1,字段2,字段3,...) VALUES (值1,值2,值3,...);
示例:
向表people中插入记录INSERT INTO people (name,age) VALUES ('路人甲',66); INSERT INTO people (age,name) VALUES (66,'路人乙');
注意:
- 在数据库中,字符串的字面量是使用单引号括起来的
- 在INSERT语句中,指定的字段与VALUES后面指定的值的顺序、个数、类型要完全一致
- 在INSERT语句中字段指定的顺序和个数可以与表结构定义时不一致
补充
查询表中数据
语法:
SELECT * FROM 表名;
示例:
查询表people中的数据SELECT * FROM people;
自动插入的默认值
INSERT语句中指定字段时,忽略的字段都会被插入默认值,当表中字段没有被明确指定默认值时,默认值一律为NULL
示例:
INSERT INTO person (name) VALUES ('路人丙'); SELECT * FROM people;
默认值的指定
默认值的指定属于DDL语句范畴
使用DEFAULT关键字来为字段指定默认值,可以在创建表时,也可以在修改表时指定
示例:
在创建表时指定默认值CREATE TABLE person( name VARCHAR(30) DEFAULT '无名', age INT(3) DEFAULT 66 )
在修改表时为字段指定默认值
ALTER TABLE person CHANGE name name VARCHAR(30) DEFAULT '无名';
可以通过
DESC 表名
在查看表结构时看到字段的默认值
全列插入
在INSERT语句中不指定字段时,为全列插入,此时要求VALUES子句后面指定的值的个数、顺序、类型必须与表结构中字段完全一致
语法:
INSERT INTO 表名 VALUES(值1,值2,值3,...) #此时就要求VALUES子句中指定的值必须与表结构一致
示例:
INSERT INTO person VALUES('路人丁',15); INSERT INTO person VALUES(DEFAULT,15); INSERT INTO person VALUES(NULL,15);
补充说明—子句
在SQL语句中,一个关键字可以组成一个子句
示例:
INSERT INTO person(name,age) #INSERT子句 VALUES('路人戊',66); #VALUES子句
批量插入
语法:
INSERT INTO 表名(字段...) VALUES(第一组值...),(第二组值...),....;
示例:
在表people中一次插入三条记录INSERT INTO people(name,age) VALUES('一',6),('二',66),('三',666);
改UPDATE-修改表数据
语法:
UPDATE 表名 SET 字段1=新值,字段2=新值,... [WHERE 过滤条件];
示例:
将表people中的所有age字段修改为0UPDATE people SET age=0;
当UPDATE语句中不添加WHERE子句时,会将表中所有记录进行修改,这种操作实际情况中很少见
WHERE子句在UPDATE中的作用
当UPDATE语句添加了WHERE子句时,只有满足WHERE子句要求的记录才会被修改
示例:
修改表people中路人甲的年龄为88UPDATE people SET age=88 WHERE name='路人甲';
修改表people中88岁的人为6岁
UPDATE people SET age=6 WHERE age=88;
数据库在修改记录时对表是逐行进行的,每一行是否进行修改取决于该行记录是否满足WHERE子句的条件要求
WHERE子句基础条件
WHERE子句会在《疑难杂症_SQL_DQL》中详细介绍
WHERE中基础条件:>、>=、<、<=、=、<>(在数据库中,<>表示为不等于,!=也可以表示不等于,但不是SQL92标准)
示例:
将年龄高于8岁的人改为8岁UPDATE people SET age=8 WHERE age>8;
使用表达式修改
示例:
将每个人的年龄+1UPDATE people SET age=age+1
修改多字段
示例:
UPDATE people SET name='路人丁',age=88 WHERE name='路人丁';
删DELETE-删除表中数据
语法:
DELETE FROM 表名 [WHERE 过滤条件];
注意!DELETE语句通常不会忽略WHERE子句,否则是清空表操作!
示例:
删除表people中的路人甲DELETE FROM people WHERE name='路人甲';
删除年龄大于50岁的人
DELETE FROM people WHERE age>50;
清空表
语法:
DELETE FROM people;