目录
一、INSERT-增加表中数据
二、DELETE-删除表中数据
三、UPDATE-修改表中数据
四、SELECT-查询表中数据
1、select基础查询
1.1 结果去重查询-DISTINCT
1.2 使用别名查询-AS
1.3 计算列
2、选择查询
2.1 比较搜索条件
2.2 范围搜索条件-BETWEEN AND
2.3 列表搜索条件-IN
2.4 字符匹配条件-LIKE
3、空值查询-IS NULL
4、聚合函数
5、分页查询-LIMIT
6、分组和排序
6.1 数据分组-GROUP BY
6.2 数据排序-ORDER BY
一、INSERT-增加表中数据
INSERT INTO
table_name(column_name,column_name,...,column_name)
VALUES (value1,value2,...,valuen);
示例:
INSERT INTO stu(name,age,sex) VALUES('lisi',22,'男'),('王柳',23,'女');
二、DELETE-删除表中数据
DELETE from table_name;#清空表的数据
DELETE from table_name where 条件;#删除满足某种条件的数据
TRUNCATE TABLE table_name;#清空表数据
区别:delete from 可以加过滤条件where,truncate table只能删除整张表
truncate table删除数据的速度非常快,delete from删除数据速度比较慢
truncate table删除的表数据不能恢复,delete from删除的数据可以恢复
示例:
DELETE FROM stu; #清空表stu全部数据
DELETE FROM stu WHERE name=’李四’;#删除stu表中姓名为“李四”的行
TRUNCATE TABLE stu;
三、UPDATE-修改表中数据
UPDATE table_name SET 字段=值;#修改某一列全部数据
UPDATE table_name SET 字段=值,字段=值;
UPDATE table_name SET 字段=值,字段=值 WHERE 条件;
-- 表中已经出现不连贯的数据ID时,执行以下语句进行修改
SET @auto_id = 0;
UPDATE stu SET id = (@auto_id := @auto_id + 1);
ALTER TABLE stu AUTO_INCREMENT = 1;
select * FROM stu;
示例:
·UPDATE stu SET name='lisa' WHEREid=6;
四、SELECT-查询表中数据
所谓查询,就是对已经存在于数据库中的数据按特定的组合、条件或次序进行检索。查询功能是数据库最基本也是最重要的功能。
1、select基础查询
• SELECT语句的语法如下:
SELECT [*]或[字段名列表] FROM 表名
[ WHERE search_conditions ]
[ GROUP BY group_by_list ]
[ HAVING search_conditions ]
[LIMIT start,nums ]
[ ORDER BY order_list [ ASC | DESC ] ]
1.1 结果去重查询-DISTINCT
• 如果用户希望在查询返回结果中删除重复行,在SELECT子句中使用DISTINCT关键字。
• 语法:SELECT DISTINCT 列名称 FROM 表名称;
• 例:
SELECT DISTINCT 籍贯 FROM 学生信息;
1.2 使用别名查询-AS
• 使用select语句查询数据时,可使用别名的方法根据需要对数据显示的标题进行修改。
1. 在列的表达式中给出别名
SELECT 列名 ‘别名’ from 表名;
例:
SELECT id '员工编号',name'姓名',salary'工资',deptId'部门编号'FROM employee;
2、使用AS关键字来连接列表达式和指定的别名
SELECT 列名 AS ‘别名’ FROM 表名;
例:
SELECT id as '员工编号',name as '姓名',salary as'原工资',deptId'as部门编号'FROM employee;
1.3 计算列
• 在进行数据查询时,经常需要对查询到的数据进行再次计算。
例:
SELECT id as '员工编号',name as '姓名',salary as '原工资',salary+200 as '加薪后工资',deptId'部门编号'FROM employee;
2、选择查询
一般查询都不是针对全表所有行的查询,只是从整个表中选出满足指定条件的内容,这就要用到WHERE子句。
• 以下是选择行的基本语法:
SELECT SELECT_LIST FROM TABLE_LIST WHERE SEARCH_CONDITIONS;
其中SEARCH_CONDITIONS为选择查询结果的条件。
• MySQL支持比较、范围、列表、字符串匹配等选择方法。
2.1 比较搜索条件
·比较运算符
运算符 | 含义 | 运算符 | 含义 |
= | 等于 | <> | 不等于 |
> | 大于 | != | 不等于 |
< | 小于 | !> | 不大于 |
>= | 大于等于 | !< | 不小于 |
<= | 小于等于 |
例:查询籍贯是 beijing的学生信息:
SELECT * FROM 学生信息WHERE 籍贯=‘beijing’;
·逻辑运算符
AND 可以串联两个条件,需要两个条件同时成立
OR 可以串联两个条件,两个条件满足一个条件就可以
NOT 对条件取反
例:查询籍贯是beijing并且性别是nan的学生信息:
SELECT * FROM 学生信息WHERE 籍贯=‘beijing’ AND 性别=‘nan’;
2.2 范围搜索条件-BETWEEN AND
范围搜索返回介于两个指定值之间的所有值,可分为包括范围和排除范围两种类型。
用BETWEEN AND,NOT BETWEEN AND
例:工资在5000到6000之间:
SELECT * FROM employee WHERE salary BETWEEN 5000 AND 6000;
例:工资不在5000到6000之间:
SELECT * FROM employee WHERE salary NOT BETWEEN 5000 AND 6000;
2.3 列表搜索条件-IN
IN关键字使用户可以选择与列表中的任意值匹配的行。
查询籍贯是 beijing和shanghai的学生:
SELECT * FROM 学生信息WHERE 籍贯 IN (‘beijing’,’shenzhen’);
2.4 字符匹配条件-LIKE
LIKE关键字搜索与指定模式匹配的字符串、日期或时间值。
模式包含要搜索的字符串,字符串中可包含2种通配符的任意组合;
SELECT * FROM 表名 WHERE 字段名 LIKE '查询内容';
通配符 | 含义 |
% | 表示一个或多个字符 |
_ | 表示一个字符 |
例:查询工资以5开头:
SELECT * FROM employee WHERE salary like'5%';
例:查询工资以5结尾:
SELECT * FROM employee WHERE salary like'%5';
例:查询工资第二位是5:
SELECT * FROM employee WHERE salary like'_5%';
3、空值查询-IS NULL
空值(NULL)在数据库中表示不确定的值。
例如,学生选修课程后还没有考试时,这些学生有选课记录,但没有考试成绩,因此考试成绩为空值。
•判断取值为空的语句格式为:
列名 IS NULL
SELECT * FROM employee WHERE salary IS NULL;
•判断取值不为空的语句格式为:
列名 IS NOT NULL
4、聚合函数
(1) SUM([DISTINCT] <列名> ):计算列值总和;
(2) AVG([DISTINCT] <列名> ):计算列值平均值;
(3) MAX([DISTINCT] <列名> ):求列值最大值;
(4) MIN([DISTINCT] <列名> ):求列值最小值。
(5) COUNT( * ):统计表中元组个数(统计表里有多少条数据);
COUNT([DISTINCT] <列名> ):统计本列列值个数;
注意:上述函数中除COUNT(*)外,其他函数在计算过程中均忽略NULL值。
SELECT 聚合函数 FROM 表名;
5、分页查询-LIMIT
SELECT 列 ,列 …. FROM 表名 WHERE 条件 LIMIT [start,nums]
start:从第几行开始,可选,不写的话从0开始
nums:总共要查询几行
例:查询tearcher表的前5行记录
SELECT * FROM teacher LIMIT 5;
例:查询tearcher表,从第2行开始查询5行
SELECT * FROM teacher LIMIT 1,5;
6、分组和排序
6.1 数据分组-GROUP BY
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
• 语法格式:
SELECT column_name, aggregate_function(column_name)
FROM table_name WHERE 条件
GROUP BY column_name HAVING 条件
ORDER BY column_name;
·HAVING分组条件:
having 通常与group by子句一起使用。相当于一个用于组的where子句,制定组的搜索条件。
• having子句可以包含聚合函数,但where不可以。
SELECT 学号,SUM(成绩) FROM 成绩表 GROUP BY 学号HAVING SUM(成绩)<600;
6.2 数据排序-ORDER BY
ORDER BY 语句用于对指定的结果集进行排序。
• ORDER BY 语句默认升序。
• 降序排序可以使用 DESC 关键字
·descent按照降序排序
·ascent按照升序排序
例:查询成绩表并对成绩进行排序:
select * from 成绩表 order by 成绩 [desc];