一、DML数据操纵语言
对表中的数据进行增、删、改操作。
-
插入记录
指定字段的插入
语法
INSERT INTO 表名 (字段名 1, 字段名2...,字段n) VALUES (值1, 值2...,值n)
示例
更换数据库,创建student表
create table student(
id int,
name varchar(20),
age int,
sex char(1),
address varchar(100)
)
向学生表中添加 id, name, age, sex数据
INSERT INTO student (id, name, age, sex) VALUES (1, '张三', 20, '男');
示例2
向student表中插入数据
INSERT INTO student (NAME, id, age, sex, address) VALUES ('李四', 2, 23, '女', '广州');
注意事项
值与字段必须对应,个数相同,类型相同
值的数据大小必须在字段的长度范围内 varchar()
除了数值类型外,其它的字段类型的值必须使用引号引起(建议单引号)
如果要插入空值,可以不写字段,或者插入null
2、不指定字段的插入
语法
INSERT INTO 表名 VALUES (值1, 值2…)
示例
INSERT INTO student VALUES (3, '王五', 18, '男', '北京');
注意事项
不指定列时,相当于指定了所有列,顺序和建表时的顺序一致。
3、蠕虫复制
在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中。
语法
INSERT INTO 表名1 SELECT * FROM 表名2;
示例
创建student2表,student2结构和student表结构一样
CREATE TABLE student2 LIKE student;
将student表中的数据添加到student2表中
INSERT INTO student2 SELECT * FROM student
1.不带条件的更新
语法
UPDATE 表名 SET 字段1=值1[,字段2=值2,,...,字段n=值n]
示例
UPDATE student SET sex='女'
说明
表中所有行的sex都会被更新为女
2.带条件的更新
语法
UPDATE 表名 SET 字段1=值1[,字段2=值2,,...,字段n=值n][where 条件]
示例
将id号为2的学生性别改成男
UPDATE student SET sex='男' WHERE id=2;
说明
where 条件有很多种,在后面的查询中逐个讲解。
-
删除记录
1、带条件删除
语法
DELETE FROM 表名 WHERE 条件
示例
带条件删除数据,删除id为3的记录
DELETE FROM student WHERE id=3
2.不带条件删除
语法
DELETE FROM 表名
示例
DELETE FROM student;
说明
不带条件的删除,将删除表中的全部数据。
二、DQL数据查询语言
DQL语句的作用是查询数据库中的数据。查询不会对数据库中的数据进行修改,只是一种显示数据的方式。
-
单表查询
1.简单查询
1.查询表中全部数据
语法
SELECT * FROM 表名
示例
SELECT * FROM student
语法
SELECT 字段名1, 字段名2, ...字段n FROM 表名
写出所有列名
示例
select id,name,age,sex,address from student
2.查询指定列
语法
SELECT 字段名1, 字段名2... FROM 表名
示例
查询student表中的name 和 age 列
SELECT NAME, age FROM student
没有查询的列的数据不会显示
3.别名查询
在查询时,给查询的列或表起一个其他的(一般是稍短的名字,或为了防止重复)名字就叫做别名。使用别名的好处是方便查看和处理查询到的数据。
语法
SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;
SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名
示例
查询sudent表中name 和 age 列,name列的别名为”姓名”,age列的别名为”年龄”
SELECT NAME AS '姓名', age AS '年龄' FROM student;
查询sudent表中name和age列,student表别名为s
SELECT NAME, age FROM student AS s;
说明
查询时给表取别名目前还看不到效果,需要到多表查询的时候才能体现出其好处。
AS 关键字可以省略。
4.去除重复值
在查询指定列时,如果指定的列中有重复的数据,默认都会显示出来。
例如
可以使用distinct关键字来去除重复数据
语法
SELECT DISTINCT 字段名 FROM 表名
示例
SELECT DISTINCT name FROM student
说明
当distinct后出现了多个列时,只有当多个列的数据都重复才叫重复数据。
5.查询结果参与运算
在查询语句中,查询的列的可以和其他值做数学运算(加、减、乘、除等)。运算结果只会影响展示,不会影响表中的数据。
语法
SELECT 列名1 + 固定值 FROM 表名
SELECT 列名1 + 列名2 FROM 表名
示例
在student表中添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩
修改student表结构,添加数学和英语成绩列
ALTER TABLE student ADD math INT;
ALTER TABLE student ADD english INT
查询math + english的和
SELECT math + english FROM student
查询math + english的和,并使用别名”总成绩”
SELECT math + english '总成绩' FROM student
查询所有列与math + english的和,并使用别名”总成绩”
SELECT *, math + english '总成绩' FROM student
查询姓名、年龄,将每个人的年龄增加10岁
SELECT name, age + 10 FROM student
null值和任何值做任何运算,结果都是null
向student表中添加数据
insert into student values(4,'赵六',22,'男','北京',null,90)
赵六缺考了数学,没有成绩。
查询所有列与math + english的和,并使用别名”总成绩”
SELECT *, math + english '总成绩' FROM student
如需解决这个问题,需要后面学习的MySQL函数