MySQL简单的查询语句

一、建立teacher和student表

create table teacher(
tid int unsigned auto_increment primary key,
tname varchar(10),
tdesc varchar(10)
)auto_increment = 1;

insert into teacher values(null,‘关老师‘,‘音乐教授‘),(null,‘张老师‘,‘数学教授‘),(null,‘李老师‘,‘语文教授‘),(null,‘刘老师‘,‘英语教授‘),(null,‘王老师‘,‘计算机教授‘);
select * from teacher;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
create table student(
sid int unsigned auto_increment primary key,
sname varchar(10),
sbirthday char(8),
sdept varchar(10),
stid int unsigned,
sscore int unsigned,
constraint tsfk foreign key(stid) references teacher(tid) on delete set null on update cascade        --添加外键
) auto_increment = 15100;

insert into student values(null,‘成龙‘,‘19660912‘,‘计算机科学与技术‘,‘1‘,‘100‘),(null,‘李连杰‘,‘19630112‘,‘美术‘,‘3‘,‘90‘),(null,‘刘德华‘,‘19611111‘,‘互联网工程‘,‘2‘,‘99‘),
(null,‘李成林‘,‘19660912‘,‘数学‘,‘4‘,‘90‘),(null,‘张成龙‘,‘19850912‘,‘计算机科学与技术‘,‘1‘,‘90‘),(null,‘刘龙‘,‘19770923‘,‘计算机科学与技术‘,‘4‘,‘92‘),
(null,‘李成龙‘,‘19660912‘,‘英语‘,‘5‘,‘91‘),(null,‘张居正‘,‘19550912‘,‘数学‘,‘2‘,‘99‘),(null,‘王龙‘,‘19970616‘,‘互联网工程‘,‘1‘,‘67‘),
(null,‘李成功‘,‘19660912‘,‘语文‘,‘1‘,‘89‘),(null,‘张居‘,‘19620312‘,‘音乐‘,‘3‘,‘100‘),(null,‘成飞龙‘,‘19690928‘,‘美术‘,‘2‘,‘94‘),
(null,‘李树林‘,‘19660912‘,‘美术‘,‘2‘,‘70‘),(null,‘张正‘,‘19630712‘,‘美术‘,‘4‘,‘88‘),(null,‘关龙‘,‘19540113‘,‘数学‘,‘4‘,‘83‘),
(null,‘李森林‘,‘19660912‘,‘计算机科学与技术‘,‘3‘,‘60‘),(null,‘张良‘,‘19621112‘,‘物理‘,‘5‘,‘77‘),(null,‘关羽‘,‘19780827‘,‘语文‘,‘3‘,‘96‘),
(null,‘李林‘,‘19660912‘,‘音乐‘,‘4‘,‘100‘),(null,‘张飞‘,‘19220912‘,‘计算机科学与技术‘,‘5‘,‘89‘),(null,‘刘备‘,‘19790718‘,‘计算机科学与技术‘,‘1‘,‘100‘),
(null,‘李成‘,‘19660912‘,‘计算机科学与技术‘,‘5‘,‘80‘);
select * from student;

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- select查询语句
select sid ,sname ,sdept from student;
-- 列别名
select sid 学号,sname 姓名,sdept 专业 from student;
-- 表别名
select s.sid from student s;
-- 查询条件
-- 普通条件 = < > <= >= != <> and or not
select * from student where sdept = ‘计算机科学与技术‘ and sscore >= 70;

select * from student where sdept <> ‘计算机科学与技术‘;

-- between and not between and
select * from student where sbirthday between ‘19660101‘ and ‘19970909‘;
select * from student where sbirthday not between ‘19660101‘ and ‘19970909‘;

-- in()  not in()
select * from student where sdept in(‘美术‘,‘数学‘);
select * from student where sdept not in (‘美术‘,‘数学‘);

-- is null is not null查询是否为空

select * from student where sscore is null;

-- 模糊查询 like _一个任意字符 %0个或多个任意字符
select * from student where sname like ‘李%‘;

select *from student where sname like ‘__‘;-- 查询名字是两个字的姓名

-- 查询排序

select sscore from student order by sscore asc;

select sname 姓名,ifnull(round(sscore),0) 分数 from student order by sscore desc;
-- 限制结果行 limit 分页使用
select * from student order by sscore asc limit 5;
select * from student order by sscore desc limit 0,3;

-- 分组查询

select distinct sdept from student ;

select count(distinct sdept) from student;

select sdept 专业,count(*) 人数,max(sscore) 最高分,min(sscore) 最低分,avg(sscore) 平均分 from student
group by sdept;

-- where 查询条件 having 是分组条件在 group by 后
select sdept , count(*), max(sscore),min(sscore),avg(sscore)
from student where true
group by sdept having avg(sscore)<80 order by avg(sscore) desc limit 5;

-- 查询显示等级
select sid 学号,sname 姓名,sdept 专业,sscore 成绩,if(sscore>=90,‘优秀‘,if(sscore>=80,‘良好‘,if(sscore>=60,‘及格‘,‘补考‘))) 等级
from student;

-- 子查询

select t.dj 等级,count(*) 人数
from
(select sid,sname,sdept,sscore,if(sscore>=90,‘优秀‘,if(sscore>=80,‘良好‘,if(sscore>=60,‘及格‘,‘补考‘))) dj
from student
) t
group by t.dj;

-- 错误
select * from student where sscore = max(sscore);

-- 利用子查询,实现结果
select * from student where sscore = (select max(sscore) from student);

----------------------------------------------------------------------------------------------------------------------------------------------
-- 高级查询 连接查询

select * from student a,student b;

-- 请查询 学号 姓名 成绩 代课老师名称
select s.sid,s.sname,t.tname
from student s join teacher t on t.`tid` = s.`stid`;

-- select s.sid,s.sname,t.tname from student s left join teacher t on t.tid = s.stid

原文地址:https://www.cnblogs.com/zxwen/p/9484043.html

时间: 2024-08-12 07:41:17

MySQL简单的查询语句的相关文章

跟王老师学MySQL: 基本查询语句

跟王老师学MySQL: 基本查询语句 主讲教师:王少华   QQ群号:483773664 学习内容 查询语句的基本语法 查询数据指从数据库中获取所需要的数据.MySQL中是使用SELECT语句来查询数据的 一.select的基本语法形式如下 1 2 3 4 5 SELECT  属性列表  FROM  表名 [ WHERE  条件表达式1 ] [ GROUP BY  属性名1  [ HAVING 条件表达式2 ] ] [ ORDER BY  属性名2  [ ASC | DESC ] ] 属性列表:

python 3 mysql sql逻辑查询语句执行顺序

python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <havin

oracle学习 第一章 简单的查询语句 ——03

1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示所有的列,它与在select 之后列出所有的列名是一样的.查询语句以分号( ; )结束.emp(employee)是一个员工表. 1.2 在查询语句中如何选择特定的列 在平时的使用过程中我们需要的往往只是一张表中的某一条或者某几条数据而已,但上面查询的结果可能看起来比较乱.如果我们指向知道若干个特定列的信息,使用select 语句很容易就可以做到.就好比我们去菜市场买东西,不会

转载《mysql 一》:mysql的select查询语句内在逻辑执行顺序

原文:http://www.jellythink.com/archives/924 我的抱怨 我一个搞应用开发的,非要会数据库,这不是专门的数据库开发人员干的事么?话说,小公司也没有数 据库开发人员这么个职位吧.好吧,对数据库最深的印象还停留在大学<数据库原理>这堂课上,什么第一范式,第二范式…,这些理论的东西,多多少少还是记得 点,至于更深层次的,我不会.所以呢,撸起袖子,开始学习吧. 干程序员,最不怕的就是学习,如果你连学习都怕了,那还是早点退出这行吧.你说是吧.而我今天这篇文章,既不总结

MySQL知识树-查询语句

在日常的web应用开发过程中,一定会涉及到数据库方面的操作,其中查询又是占绝大部分的.我们不仅要会写查询,最好能系统的学习下与查询相关的知识点,这篇文章我们就来一起看看MySQL查询知识相关的树是什么样的. MySQL查询知识树: 一.查询的种类 二.查询的原理 三.查询的应用场景 四.查询的效率比较 五.如何进行查询优化 六.与查询相关的知识扩展 一.查询的种类 MySQL的查询可以分为内连接查询.左连接查询.右连接查询.联合查询. ①内连接是通过关联表中共有的列来匹配出记录,查询出来的数据是

mysql单表查询语句优化

Mysql语句优化 范例1:优化语句SELECT * FROM `tbl_order_buy_eta` WHERE `id_order`=1843 #通过explain分析语句结果如下 mysql> explain SELECT * FROM `tbl_order_buy_eta` WHERE `id_order`=1843\G *************************** 1. row ***************************            id: 1   se

oracle学习 第一章 简单的查询语句 ——04

1.5 如何在SQL语句中使用算数表达式 可以在SQL语句中使用表达式.在表达式中可以使用一下4种运算符:+,-,*,/ 它们分别代表加.减.乘.除. 设想一下,在某一天,有个社会团体和工会团体参观你们的公司,您的老板为了树立公司的光辉形象,它要求您把午餐和茶水的费用加到员工的工资里并打印一张工资清单.于是您大概算了一下,其费用约合500元/月.之后您用例1-11的查询得到了老板索要的员工的工资清单. 例 1-11 SQL> SELECT empno,ename,sal,500+sal 2 FR

PHP中对mysql预编译查询语句的一个封装

原文地址:http://chen-shan.net/?p=474 为了防止sql注入,我们都使用过mysqli这个类,但是每次都需要绑定参数,绑定结果等,比较麻烦,所以可以把这些重复的语句封装成一个函数. 一.封装前. 传统的一个预编译方式的”select”查询代码: $id = "1"; $name = "test_name"; $db_obj = new mysqli("localhost", "db_user", &qu

MySQL学习——SQL查询语句(连接查询&amp;子查询)(三)

一:连接查询: 连接查询是将俩个或者俩个以上的表按照某个条件连接起来,从中选择需要的数据,连接查询同时查询俩个或者俩个以上的表时使用,当不同的表中存在表示相同意义的字段时,可以通过该字段来连接这几个表,例如,学生表中有course_id字段来表示所学课程的课程号,课程表中有num字段来表示课程号,那么可以通过学生表中的course_id字段与课程表中的num字段来进行连接查询,连接查询包括内连接查询和外连接查询. 1.1 内连接查询 内连接查询是一种常用的连接查询,内连接查询可以查询俩个或者以上