前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL基本命令-SQL语句

MySQL基本命令-SQL语句

作者头像
星哥玩云
发布2022-08-16 21:13:46
8260
发布2022-08-16 21:13:46
举报
文章被收录于专栏:开源部署

服务端命令SQL

数据库系统中,SQL语句不区分大小写(建议用大写) SQL语句可单行或多行书写,以“;”结尾 关键词不能跨多行或简写 用空格和缩进来提高语句的可读性 子句通常位于独立行,便于编辑,提高可读性 注释: SQL标准: /*注释内容*/ 多行注释 -- 注释内容 单行注释,注意有空格 MySQL注释: #

SQL优化

查询时,能不要*就不用*,尽量写全字段名 大部分情况连接效率远大于子查询 多表连接时,尽量小表驱动大表,即小表 join 大表 在千万级分页时使用limit 对于经常使用的查询,可以开启缓存 多使用explain和profile分析查询语句 查看慢查询日志,找出执行时间长的sql语句优化

sql查询:单表查询和多表查询

两张表合并:横向合并、纵向合并

纵向合并:两张表挑出相同的字段进行合并(注意顺序)

范例

SQL查询范例

1、给表的字段名添加别名 select stuid as 学生编号,name 姓名,gender 性别 from students; 2、查询年龄大于40的 select * from students where age >40; 3、查找年龄大于20小于40的 select * from students where age < 40 and age > 20; select * from students where age between 20 and 40;(这种是包含) 4、查询以姓名以X开头的 select * from students where name like 'x%'; 5、查找字段中为空值得信息 select * from students where classid is null; 6、查找字段值不为空得信息 select * from students where classid is not null; 7、查找报1,2,6班得学生信息 select * from students where classid in (1,2,6); 8、查找年龄,并去掉重复得年龄 select distinct age from students; 9、查询年龄,去掉重复并排序 select distinct age from students order by age;(默认正序) select distinct age from students order by age desc;(倒叙) 10、统计students表总共有多少行 select count(*) from students; 11、统计age年龄的总和 select sum(age) from students; 12、统计年龄最大的 select max(age) from students; 13、统计男女平均年龄 select gender,avg(age) from students group by gender; 14、分别统计每班的女生男生平均成绩(gender性别classid班级age成绩) select gender,classid,avg(age) from students group by gender, classid; 15、基于上条再统计女生的最大年龄 select gender,max(age) from students group by gender having gender='f'; 备注:分完组后再条件用having不能用where 16、按照课程统计没课考试最好的成绩 select courseid,max(score) as 最好成绩 from scores group by  courseid; 17、取排序的前3名 select age from students order by age desc limit 3; 18、基于排序跳过2个显示3个 select age from students order by age desc limit 2,3;

多表 1、纵向合并两张表 select stuid as id,name,age,gender from students union select tid,name,age,gender from teachers; 2、基于上条查询 查找age字段大于50的信息 select * from (select stuid as id,name,age,gender from students union select tid,name,age,gender from teachers)as b  where b.age >50; 备注:利用了子查询

子查询:

01 02 查找比平均年龄大的信息 select name,age from students where age >(select avg(age) from students);

交叉链接

两张表交叉链接组合 select * from students cross join teachers;

内连接

取两张表的交集实现查找出学生对应的老师 select s.name as 学生name,t.name as 老师name from students as s inner join teachers as t on s.teacherid=t.tid; 备注:因为两种表有相同的字段,为了群分开给它加别名as,

左外链接

两张表A 和 B , 取A表和B表的与A表相关的部分,A加B的一部分 select stuid,s.name,s.age,s.gender,classid,teacherid,tid,t.name,t.age,t.gender from students as s left join teachers as t on s.teacherid=t.tid;

有这样一个表emp

公司人员信息,即对应的领导--(leaderid领导编号)

id

name

leaderid

1

xiaoming

null

2

wanger

1

3

zhangsan

2

4

lisi

3

现在有这样一个需求,查询每个人员对应的领导是谁 把emp表当作两张表来处理,自链接 select e.name as emp,l.name as leader from emp as e left outer join emp as l on e.leaderid=1.id;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档