day23_SQL语言(二)DML及DQL

一、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, '男');

day23_SQL语言(二)DML及DQL

示例2

向student表中插入数据

INSERT INTO student (NAME, id, age, sex, address) VALUES ('李四', 2, 23, '女', '广州');

day23_SQL语言(二)DML及DQL

 

注意事项

值与字段必须对应,个数相同,类型相同

值的数据大小必须在字段的长度范围内 varchar()

除了数值类型外,其它的字段类型的值必须使用引号引起(建议单引号)

如果要插入空值,可以不写字段,或者插入null

2、不指定字段的插入

语法

INSERT INTO 表名 VALUES (值1, 值2…)

示例

INSERT INTO student VALUES (3, '王五', 18, '男', '北京');

day23_SQL语言(二)DML及DQL

 

注意事项

不指定列时,相当于指定了所有列,顺序和建表时的顺序一致。

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

day23_SQL语言(二)DML及DQL

 

2.不带条件删除

语法

DELETE FROM 表名

示例

DELETE FROM student;

day23_SQL语言(二)DML及DQL

 

说明

    不带条件的删除,将删除表中的全部数据。

二、DQL数据查询语言

DQL语句的作用是查询数据库中的数据。查询不会对数据库中的数据进行修改,只是一种显示数据的方式。

  • 单表查询

 1.简单查询

1.查询表中全部数据

语法

SELECT  *  FROM 表名

示例

SELECT * FROM student

day23_SQL语言(二)DML及DQL

 

语法

SELECT 字段名1, 字段名2,  ...字段n  FROM 表名

写出所有列名

示例

select id,name,age,sex,address from student

day23_SQL语言(二)DML及DQL

2.查询指定列

语法

SELECT 字段名1, 字段名2... FROM 表名

示例

查询student表中的name 和 age 列

SELECT NAME, age FROM student

day23_SQL语言(二)DML及DQL

 没有查询的列的数据不会显示

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;

 day23_SQL语言(二)DML及DQL

查询sudent表中name和age列,student表别名为s

SELECT NAME, age FROM student AS s;

day23_SQL语言(二)DML及DQL

 

说明

查询时给表取别名目前还看不到效果,需要到多表查询的时候才能体现出其好处。

AS 关键字可以省略。

4.去除重复值

在查询指定列时,如果指定的列中有重复的数据,默认都会显示出来。

例如

day23_SQL语言(二)DML及DQL

 可以使用distinct关键字来去除重复数据

语法

SELECT DISTINCT 字段名 FROM 表名

示例

SELECT DISTINCT name FROM student

day23_SQL语言(二)DML及DQL

 

说明

当distinct后出现了多个列时,只有当多个列的数据都重复才叫重复数据。

day23_SQL语言(二)DML及DQL

 

5.查询结果参与运算

在查询语句中,查询的列的可以和其他值做数学运算(加、减、乘、除等)。运算结果只会影响展示,不会影响表中的数据。

语法

SELECT 列名1 + 固定值 FROM 表名

SELECT 列名1 + 列名2 FROM 表名

示例

在student表中添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩

修改student表结构,添加数学和英语成绩列

ALTER TABLE student ADD math INT;

ALTER TABLE student ADD english INT

day23_SQL语言(二)DML及DQL

查询math + english的和

SELECT math + english FROM student

day23_SQL语言(二)DML及DQL

查询math + english的和,并使用别名”总成绩”

SELECT math + english '总成绩' FROM student

day23_SQL语言(二)DML及DQL

 

查询所有列与math + english的和,并使用别名”总成绩”

SELECT *, math + english '总成绩' FROM student

day23_SQL语言(二)DML及DQL

查询姓名、年龄,将每个人的年龄增加10岁

SELECT name, age + 10 FROM student

day23_SQL语言(二)DML及DQL

null值和任何值做任何运算,结果都是null

向student表中添加数据

insert into student values(4,'赵六',22,'男','北京',null,90) 

赵六缺考了数学,没有成绩。

day23_SQL语言(二)DML及DQL

查询所有列与math + english的和,并使用别名”总成绩”

SELECT *, math + english '总成绩' FROM student

day23_SQL语言(二)DML及DQL

如需解决这个问题,需要后面学习的MySQL函数

上一篇:day23


下一篇:Day23 多线程