3.mysql查询一

查询一

DQL语言

SELECT语法
SELECT   [ALL | DISTINCT] 
{  * |  table.* | [ table.field1 [ as  alias1] [, table.field2 [as  alias2]][, …]] }
FROM  table_name  [ as  table_ alias  ]
    [ left|out|inner  join  table_name2 ]    #联合查询
	[ WHERE  … ]   	#指定结果需满足的条件
	[ GROUP BY …]	#指定结果按照哪几个字段来分组
	[ HAVING …]	#过滤分组的记录必须满足的次要条件
	[ ORDER BY… ]	#指定查询记录按一个或者多个条件排序
	[ LIMIT  {   [ offset,] row_count    |   row_count OFFSET offset   }] ;

查所有

select   *   from student

查指定的结果

SELECT     StudentNo, StudentName, Phone  FROM  student;

SELECT  student.StudentNo , StudentName, StudentResult   
FROM   student  , result ;

AS子句
作用

可给数据列取一个新别名
可给表取一个新别名
可把经计算或总结的结果用另外一个新名称来代替

SELECT   StudentNo   AS “学号”   FROM   student;
SELECT   a.StudentNo   FROM   student AS  a;
SELECT   Phone+1  AS  Tel    FROM   student;

DISTINCT关键字

作用

去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条

SELECT     DISTINCT   字段名1, 字段名2...     FROM   表名

在SQL语句中使用表达式
SELECT  version() ,   100*3        #返回MySQL版本和计算结果
SELECT  SubjectName “课程名称”, ClassHour+10  AS “新学时”  FROM subject;
#给返回结果中的课时都加10个课时

where条件语句

用于检索数据表中符合条件的记录
搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假
搜索条件的组成
逻辑操作符
比较操作符

逻辑操作符
操作符名称语法描述
AND或&&a AND b 或 a && b逻辑与,同时为真,结果才为真
OR或||a OR b 或 a||b逻辑或,只要一个为真,则结果为真
NOT或!NOT a 或 !a逻辑非,若操作数为假,结果则为真
比较操作符
操作符名称语法描述
IS NULLa IS NULL若操作符为NULL,则结果为真
IS NOT NULLa IS NOT NULL若操作符不为NULL,则结果为真
BETWEENa BETWEEN b AND c若a范围在b与c之间则结果为真
LIKEa LIKE bSQL模式匹配,若a匹配b,则结果为真
INa IN (a1,a2,a3,….)若a等于a1,a2…中的某一个,则结果为真
BETWEEN AND范围查询
SELECT  字段列1,字段2 ,FROM 表名 WHERE   字段x  BETWEEN1 AND2 
LIKE模糊查询

在WHERE子句中,使用LIKE关键字进行模糊查询
与“%”一起使用,表示匹配0或任意多个字符
与“_”一起使用,表示匹配单个字符

#查询包含“数学”的所有课程
SELECT   *  FROM subject WHERE SubjectName  LIKE  "%数学%";
#查询所有姓名为“李**”三个字的学生信息
SELECT  StudentNo,StudentName FROM student  
  WHERE StudentName LIKE "李__";

使用IN进行范围查询
SELECT  字段列1,字段2 ,FROM 表名 WHERE   字段x  IN  (1,2,3) 
SELECT  *  FROM  subject  where    ClassHour = 100  OR ClassHour =110 OR ClassHour  = 120;  #普通处理方式
SELECT  *  FROM  subject  where ClassHour  IN ( 100, 110,120 );
#使用IN进行查询方式,更为简洁,效率更高

连接查询

如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询
分类包括
内连接 ( inner join)
等值和非等值的连接查询
自身连接查询
外连接 ( out join )
左连接(LEFT JOIN)
右连接 ( RIGHT JOIN)

内连接查询

INNER JOIN内连接

在表中至少一个匹配时,则返回记录

SELECT   字段1,字段2,…  FROM  table_1 
INNER  JOIN   table_2    ON  table_1.字段x   =  table_2.字段y;
#  INNER JOIN  与 JOIN 是相同的;
#  如table_1中的行在table_2中没有匹配,则不返回

等值和非等值的连接查询
与单表查询类似,都是SELECT语句
把多个表放到FROM后,并用逗号隔开
可使用AS关键字取别名,便于引用
如无重名查询字段则可省略数据表的指定

#要求:从subject和grade数据表查询课程名称和所属年级名称
#非等值连接查询
SELECT  SubjectName, GradeName  FROM  subject,  grade;  
#等值查询
SELECT  SubjectName, GradeName  FROM  subject,  grade 
WHERE  subject.GradeID = grade.GradeID;  

左外连接(LEFT JOIN)

从左表(table_1)中返回所有的记录,即便在右(table_2)中没有匹配的行

SELECT   字段1,字段2,… FROM table_1 
LEFT  [ OUTER ]   JOIN   table_2    ON  table_1.字段x   =  table_2.字段y;

右外连接(RIGHT JOIN)

从右表(table_2)中返回所有的记录,即便在左(table_1)中没有匹配的行

SELECT   字段1,字段2,… FROM table_1 
RIGHT   [ OUTER ]   JOIN   table_2    ON  table_1.字段x   =  table_2.字段y;
三个join对比
操作符名称描述
INNER JOIN ( JOIN )如果表中有至少一个匹配,则返回行
LEFT JOIN不论右表是否有匹配,都会返回左表的所有行
RIGHT JOIN不论左表是否有匹配,都会返回右表的所有行
自连接查询

自连接查询
自连接就是一个表和它自身进行连接,是多表连接的特殊情况。
在自连接查询中,要先在FROM字句中为表分别定义两个不同的别名,
然后使用这两个别名写出一个连接条件。

SELECT DISTINCT c1.CouNo 课程编号, c1.CouName 课程名称, 
                  c1.Kind 课程类别, c1.DepartNo 系部编号
FROM Course c1 JOIN Course c2 ON c1.Kind=c2.Kind AND c1.DepartNo!=c2.DepartNo
ORDER BY c1.CouNo;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图图大魔王_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值