1.添加
1.1添加一条数据
insert into 表名values(添加值1,添加值2……);
insert into 表名(字段名1,字段名2……)values(),(),();
2.查询
2.1 查询表中所有数据
select * from 表名;
2.2 查询表中部分字段
select 字段1,字段2…… from 表名;
2.3 模糊查询
select 字段名 from 表名 where 字段名 like '%查询字%';
%在前有字表示以……结束,%后有东西表示以……开始
3.条件查询
select 字段名 from 表名 where 字段名 表达式 值;
值如果是数字什么都不用加,如果是字符就要加单引号
子查询
表示查询结果的查询
select 字段名 from(select 字段名1,字段名2…… form 表名 where 条件)随意表名;
嵌套查询
select 字段名1,字段名2…… from 表名 where 字段名 = (select 函数式(字段名) from 表名);
修改
修改数据
update 表名 set 字段名1= '修改值1', 字段名2 ='修改值2'…… where 条件(用来定位);
删除
删除数据
delete from 表名 where 条件(定位);
AND 运算符
两个条件都为true的时候才返回true。一般使用在查询条件有两个的时候。
SELECT
column1,column2,...
FROM
table_name
WHERE
boolean_expression_1 AND boolean_expression_2
例子
查询返回位于美国加州的客户,并且信用额度大于100K。
SELECT
customername,
country,
state,
creditlimit
FROM
customers
WHERE
country = 'USA'
AND state = 'CA'
AND creditlimit > 100000;
OR 运算符
MySQL OR运算符组合了两个或两个以上表达式。当任一条件为真时,返回true。
SELECT
column1,column2,...
FROM
table_name
WHERE
boolean_expression_1 OR boolean_expression_2
例子
查询Student表中“95031”班(class)或性别(ssex)为“女”的同学记录。
SELECT
*
FROM
student
WHERE
class = "95031" OR ssex = "女"
IN 操作符
IN运算符允许您确定指定的值是否与列表中的值或子查询中的任何值匹配。
SELECT
column1,column2,...
FROM
table_name
WHERE
(expr|column_1) IN ('value1','value2',...);
例子
查询Score表中成绩(degree)为85,86或88的记录。
SELECT
*
FROM
score
WHERE
degree in (85,86,88)
BETWEEN 运算符
BETWEEN运算符,使用它来确定值是否在一个值范围内
expr [NOT] BETWEEN begin_expr AND end_expr;
例子
查询Score表中成绩(degree)在60到80之间的所有记录。
SELECT
*
FROM
score
WHERE
degree BETWEEN 60 AND 80
LIMIT 操作符
在SELECT语句中使用LIMIT子句来约束结果集中的行数。LIMIT子句==接受一个或两个参数==。两个参数的值必须为==零或正整数==。
SELECT
column1,column2,...
FROM
table_name
LIMIT offset , count;
offset
: 参数指定要返回的第一行的偏移量。第一行的==偏移量为0==,而不是1。
count
: 指定要返回的最大行数
例子
查询Score表中的最高分的学生学号和课程号。
SELECT
sno,
cno
FROM
scores
ORDER BY degree DESC
LIMIT 0,1
补充
LIMIT 经常在分页查询中使用
ORDER BY 排序
当使用SELECT语句查询表中的数据时,结果集不按任何顺序进行排序。要对结果集进行排序,请使用ORDER BY子句。
ORDER BY子句允许:
- 对单个列或多个列排序结果集。
- 按升序或降序对不同列的结果集进行排序。
使用方法:
SELECT
column1, column2,...
FROM
table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC],...
例子
以Class降序查询Student表的所有记录。
SELECT
*
FROM
student
ORDER BY `class` DESC
GROUP BY 分组查询
GROUP BY
子句通过列或表达式的值将一组行分组为一个小分组的汇总行记录。
GROUP BY
子句为每个分组返回一行。换句话说,它减少了结果集中的行数。也是一种去重方式
SELECT
c1, c2,..., cn, aggregate_function(ci)<!--聚合函数-->
FROM
table_name
WHERE
where_conditions
GROUP BY c1 , c2,...,cn;
1.例子
将订单表(orders)状态(status)的值分组
[图片上传失败...(image-59c47-1586784578901)]
SELECT
status
FROM
orders
GROUP BY status;
查询结果
[图片上传失败...(image-3a15-1586784578901)]
2.例子
查询订单表中每个状态中数量
SELECT
`status`,COUNT(*) as num
FROM
`orders`
GROUP BY `status`
2.结果
[图片上传失败...(image-62e932-1586784578901)]
HAVING 分组过滤
一般HAVING
和GROUP BY
连用,用来做分组过滤条件。
例子
可以通过使用HAVING子句查询(过滤)哪些订单的总销售额大于55000,
并且包含超过600个项目
SELECT
ordernumber,
SUM(quantityOrdered) AS itemsCount,
SUM(priceeach*quantityOrdered) AS total
FROM
orderdetails
GROUP BY ordernumber
HAVING total > 50000 AND itemsCount > 600;
网友评论