数据查询语句

一、使用SELECT语句进行查询
查询数据使用SELECT语句,最简单的查询语句的语法格式如下。
SELECT <表名|表达式|函数|常量>
FROM <表名>
[WHERE <查询条件表达式>]
[ORDER BY <排序的列名>[ASC或DESC]]
其中,WHERE条件是可选的,若不限制,则查询返回所有行的数据。ORDER BY用来排序。
1.查询所有的数据行和列
把表中的所有行和列都列举出来比较简单,这时候可以使用“*”表示所有的列,例如:
SELECT * FROM student
2.查询部分行和列
查询部分列需要列举不同的列名,而查询部分行需要使用WHERE子句进行条件限制,例如:
SELECT studentNo,studentName,address FROM student WHERE address <> ‘河南新乡’
3.在查询中使用列的别名
AS子句可是用来改变结果集中列的名称,也可以为组合或者计算出的列指定名称,还有一种情况是让列的信息更易懂,例如,查询studentNo列并将列名显示为“学生编号”。
在SQL中重新命名列明可以使用AS子句,例如:
SELECT studentNo AS 学生编号,studentName AS 学生姓名,address AS 学生地址
FROM student
WHERE address <> ‘河南新乡’
还有一种情况是为通过计算、合并得到的新列命名。例如,假设在某数据库的雇员表employee中存在firstName列和lastName列,现在需要将这两列合并成一个叫作“姓名的列”,可以使用一下查询语句。
SELECT firstName+’.’+lastName AS 姓名 FROM employee
4.查询控制
在SQL语句中采用“IS NULL”或者“IS NOT NULL”来判断列值是否为空,因此,如果要查询学生信息表中没有填写Email信息的学生,可以使用以下查询语句。
SELECT studentName FROM student WHERE email IS NULL
5.在查询中使用常量列
SELECT studentName as 姓名,address AS 地址,‘北京新兴桥’ AS 学校名称 FROM student
查询输出结果多了一列“学校姓名”,该列的所有数据都是“北京新兴桥”。
二、条件查询
SELECT … FROM 表1 WHERE 字段1 比较运算符(子查询);
其中,子查询语句必须放置在一堆圆括号中,比较运算符包括>、+、<、>=、<=。
习惯上,外层查询成为夫查询,圆括号中嵌入的查询称为子查询。SQL语句执行时,先执行子查询部分,求出子查询部分的值,再执行整个夫查询,返回最后的结果。
子查询作为WHERE条件的一部分,还可以和UPDATE、INSERT、DELETE一起使用,语法类似于SELECT语句。
使用IN关键字可以是父查询匹配子查询返回的多个单字段值。
三、数据查询
1.内连接查询
内连接使用INNER JOIN …ON关键字或WHERE子句老进行行表之间的关联。内连接查询可以通过如下两种方式实现。
(1)在WHERE子句中指定连接条件
例如,查询学生姓名和成绩的SQL语句如下。
SELECT student.studentName,result.subjectNo,result.studentResult
FROM student,result
WHERE student.studentNo=result.studentNo
上面这种形式的查询相当于FROM后面紧跟了两个表名,在字段列表中用“表名.列名”来区分列,再在WHERE条件子句中加以判断,要求学生编号信息相等。
(2)在FROM子句中使用INNER JOIN … ON
SELECT S.studentName,R.subjectNo,R.studentResult
FROM student AS S
INNER JOIN result AS R ON(S.studentNo=R.studentNo)
在上面的内连接查询中:INNER JOIN用来连接两个表:INNER可以省略;ON用来设置条件;AS指定表的“别名”,如果查询的列名在用到的两个或多个表中不重复,则对这一列的引用不必用表名来限定。
2.外连接
内连接的结果是从两个或两个以上表的组合中挑选出符合连接条件的数据,如果数据无法满足连接条件则将其忽视。在内连接查询中,参与连接的表的地位时平等的。
与内连接查询相对的方式称为外连接查询。在外连接查询中参与连接的表有主从之分,以朱标的每行数据匹配从表的数据列,将符合连接条件的数据直接返回到结果集中;对那些不符合连接条件的列,将被填上NULL值(空)后在返回到结果集中。
(1)左外连接查询
左外连接查询的结果集包括LEFT JOIN子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。若坐标的某行在右表中没有匹配行,则在相关联的结果集行中左右表的所有选择列均为空值。
左外连接查询使用LEFT JOIN … ON或LEFT OUTER JOIN … ON关键字来进行表之间的关联。例如,要统计所有学生的考试情况,要求显示所有参加考试学生的每次考试分数,没有参加考试的学生也要显示出来。这时候,以学生信息表为主表(有时也叫左表)、学生成绩从表的左外连接查询的SQL语句如下。
SELECT S.StudentName,R.subjectNo,R.studentResult
FROM student AS S
LEFT OUTER JOIN result AS R ON S.StudentNo=R.StudentNo
其中,对学生信息表中的每一条记录跟成绩表的记录进行数据匹配(匹配条件为S.StudentNo=R.StudentNo)。若匹配成功,则返回记录集;若没有找到匹配的记录,则返回NULL值填充记录集。
(2)右外连接查询
右外连接查询与左外连接查询类似,只不过要包含右表中所有匹配的行。若右表中有的项在坐标中没有对应的项,则以NULL值填充。
SELECT Titles.Title_id,Titles.Title,Publishers.Pub_name
FROM Titles
RIGHT OUTER JOIN Publishers ON Titles.Pub_id=Publishers.Pub_id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值