0
点赞
收藏
分享

微信扫一扫

Mysql查询语句基本用法总结

眸晓 2023-03-27 阅读 70


基本的增删改查省略:下面是楼主总结的一些简单用法,综合一下可以查询一些有难度的sql语句,有疑问可在下方留言或者私聊楼主。

-- 分组查询

SELECT 字段(可以跟多个) from 表名 group by 字段 DESC


例如:


-- 分组 


SELECT id,name,sex


from student


group BY id DESC;


---------------------------------------------------------------------


-- 回溯统计


SELECT 字段(可以跟多个) from 表名 group by 字段 with RoLLUP


例如:


-- 回溯统计


SELECT id,name


from student


GROUP BY id WITH ROLLUP;


---------------------------------------------------------------------


-- 分组筛选


select 字段(可以跟多个)


form 表名


group by  字段 desc,(可以跟多个)


HAVING 字段 = 条件;


-- 分组筛选


例子:


SELECT id,name,sex


from student


group BY id desc,name desc


HAVING sex = '男';


---------------------------------------------------------------------


-- 连接查询


sele *


from 表名,(可以跟多个)


where 字段=条件;


例子:


select *


from xs,xs_kc


where xs.sid=xs_kc.sid;


---------------------------------------------------------------------


-- 交叉连接


select * from 表名 cross join 表名


on xs.sid=xs_kc.sid;






select x.sid,name,score


from xs as x cross join xs_kc sc


where x.credits>45; -- 一旦给表起了别名,则凡是需要用到表名的地方都需要使用别名,而不能再用原名了。


---------------------------------------------------------------------


-- 给表起别名


Select 字段 as 别名 


from 表名


---------------------------------------------------------------------


-- 联合查询


联合查询只是查询条件有所改变,必须                       nnn]\[0000000000000返回一个字段的话可以通过普通查询代替


字段当作查询条件,(前提需要数据两个表内有相同数据)


举例:


SELECT Sname


FROM studentid


WHERE id =(SELECT id from student where id = 101);


//拆开之后的


SELECT id from student where id = 101;


SELECT Sname


from studentid


where id = 101;


---------------------------------------------------------------------


-- 内连接


SELECT (字段名或者是*)


from 表名 join 表名


on 字段名=字段名;


举例:


select kc.cid,cname,term,sid,score


from kc join xs_kc


on kc.cid=xs_kc.cid;


---------------------------------------------------------------------


-- 等价连接


select student.id,studentid.id -- 字段可以设置多条显示


from student,studentid


where student.id=studentid.id 条件可以设置多条


---------------------------------------------------------------------


-- 自然连接


SELECT *


from xs NATURAL join xs_kc;


---------------------------------------------------------------------


-- 外连接outer join   left join    right join


-- 根据数据连接到一起,根据某个同样字段想匹配


select * 


from xs left join xs_kc


on xs.sid=xs_kc.sid;




select *


from xs_kc right join kc


where kc.credit>4


on xs_kc.cid=kc.cid;




select *


from xs_kc NATURAL right join kc;


---------------------------------------------------------------------


-- 排序字段为多个。先按第一个排序字段进行排序,然后将排序结果再按第二个排序字段进行排序。


select * 


from xs


order by specialty,gender desc;  -- desc 


---------------------------------------------------------------------


-- 去掉重复行使用distinct关键字,如不加distinct关键则默认为all


select DISTINCT specialty


from xs;


---------------------------------------------------------------------


-- 创建视图


CREATE VIEW 视图名称


AS


SELECT * from 联系表名(可多表联系);


视图内不可随意更改联系的表。


可以更改可见视图内的字段的数据。


---------------------------------------------------------------------


--子查询


-- 子查询必须放在()中。


-- 执行过程:(1)执行子查询,cid101


-- (2)执行外部查询把101带入到外部查询的where子句中


select sid


from xs_kc -- 子查询是差两个表,且两表之间有一定关系。


WHERE cid=(


select cid


from kc


where cname='计算机基础'


);


Exists子查询


-- 存在  exists(子查询)—当子查结果集返回null,则返回值0 ,当子查询结果集不为null,返回1



Exists是跟在where之后的


where exists(子查询)



-- 相关子查询不仅仅可以使用exists


Where  cid=(子查询)


-- 行子查询:子查询返回的结果是一行多列。


构造一个行元素


(字段名1,字段名2,…)=(子查询)

---------------------------------------------------------------------
索引:为了提高查询的效率,系统根据某种算法,将已有数据的中的某些字段单独建立一个文件(索引文件),
这些文件能够实现快速的匹配数据,并且能够快速的找到数据在表中的对应行。
分类:普通索引/唯一性索引/主键索引/全文索引
举例:
-- 创建索引
create index 索引值
on  表名(子段)
-- 查看某个表的索引
show INDEX FROM student;  
-- 查看某个表的主键
show keys from tblname;
-- 删除某个表的索引
drop index 索引名 on 表名


举报

相关推荐

0 条评论