Mysql 基本查询

SQL基本查询

查询:

SELECT *
FROM t_student t
WHERE t.STUNO=0001

删除:

DELETE FROM t_student
WHERE t_student.STUNO=0001

更新:

UPDATE t_student SET STUPWD="0003",STUNAME="cyt",STUSEX="nv",Teacher_id="0002",pri="3" WHERE STUNO="0001"		

插入:

INSERT into t_student(STUNO,STUPWD,STUNAME,STUSEX,Teacher_id,pri)
VALUES("0001","0004","cyt","nan","0002","1")

LIKE:

模糊匹配: %代替任意字符,_代替单一字符

SELECT * FROM t_book WHERE book_price LIKE "%3%"

BETWEEN AND:

二者等价

SELECT * FROM t_book WHERE book_price BETWEEN 30 and 100

SELECT * FROM t_book WHERE book_price >=10 AND book_price <=100

IN: 判断某字段的值是否在IN列表中的某一项

SELECT * FROM t_book WHERE book_price=33 OR book_price=34

SELECT * FROM t_book WHERE book_price IN (33,34)

NULL OR NOT NULL:

判断某一字段是否为空

排序查询(ORDER BY):

	SELECT 查询列表
	FROM 表
	WHERE 筛选条件
	ORDER BY 排序列表 ASC|DESC 

1.如果不写,默认是asc(升序)

2.order by 可以支持单个字段,多个字段,表达式,函数,别名

3.order by 一般放在查询语句的最后(除limit以外)

价格升序:

SELECT * FROM t_book ORDER BY book_price  asc

价格降序:

SELECT * FROM t_book ORDER BY book_price  desc

价格大于100并且 价格降序:

SELECT * FROM t_book WHERE book_price >=100 ORDER BY book_price asc

价格升序编号降序:

SELECT * FROM t_book ORDER BY id asc, book_price DESC

分组查询:

SUM求和,AVG平均,MAX,MIN,COUNT计数,DISTINCT(去重)

SELECT COUNT(DISTINCT book_price) FROM t_book

SELECT  COUNT(DISTINCT(num))  FROM date  

# 统计出num列的不重复列数

GROUP BY:

分组的意思就是按照GROUP BY后面的关键字,把数据分组。输出的字段必须在GROUP BY子句或者在聚合函数中,否则会报错的。

例子:按照性别分组,并统计出来数量。

SELECT s.STUSEX 性别,COUNT(*) 数量
from t_student s
GROUP BY s.STUSEX

执行顺序:查询出t_student表中的数据,并且按照性别分为两组。然后输出s.stusex,count(*)这两个字段。

例子:有多个分组条件

SELECT s.STUSEX 性别,s.pri 类别,COUNT(*) 数量	
from t_student s
GROUP BY s.STUSEX,s.pri

执行顺序:按照性别、状态分组后输出性别、类别字段最后统计数量。

语法:

SELECT 分组函数,列(出现在GROUP BY的后面)
FROM 表
WHERE 筛选条件
GROUP BY 分组的列表 

分组之前筛选:

SELECT MAX(s.pri) ,s.STUNAME,s.STUSEX
from t_student s
WHERE s.pri is not null
GROUP BY s.STUSEX

分组之后筛选:

SQL进阶

连接查询:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EOjodnWi-1597557499764)(1592787988590.png)]

等值连接查询:

SELECT 查询列表
FROM 表1 AS 别名,表2 AS 别名
WHERE 表1.key=表2.key
【AND 筛选条件】
【GROUP BY分组字段】
【HAVING 分组后的筛选】
【ORDER BY 排序字段】

01:
SELECT STUNAME, TEANAME

from t_student, t_teacher

WHERE t_student.Teacher_id= t_teacher.TEANO

使用表的别名:

SELECT STUNAME, TEANAME

from t_student as s, t_teacher as t
 
WHERE s.Teacher_id= t.TEANO


SELECT s.STUNAME, s.pri,t.TEANAME 

from t_student s, t_teacher t

WHERE t.TEANO = s.Teacher_id and s.pri is not NULL

连接查询语法:

SELECT 查询列表
FROM 表1 别名 【连接类型】
JOIN 表2 别名 
ON 连接条件
【WHERE 筛选条件】
【GROUP BY 分组】
【HAVING 筛选条件】
【ORDER BY 排序列表】

内连接:INNER,取两个集合的交集

SELECT *
FROM t_student
INNER JOIN t_teacher
on t_student.Teacher_id=t_teacher.TEANO

左连接:LEFT,取左边集合的全部和两集合相交的部分

SELECT *
FROM t_student
LEFT JOIN t_teacher
on t_student.STUNO=t_teacher.TEANO

右连接:RIGHT,取右边集合的全部和两集合相交的部分

SELECT *
FROM t_student
RIGHT JOIN t_teacher
ON t_student.STUNO=t_teacher.TEANO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值