select语句详解(包括JOIN的用法等)
来源:互联网 发布:跑步圣经网 淘宝 编辑:程序博客网 时间:2024/04/29 21:21
一、SQL语言中的语言可以从功能上分为3类:
数据定义语言 DDL
数据处理语言 DML
数据控制语言 DCL
数据处理语言(Data Manipulation Language,简写DML)
是指用来查询、添加、修改和删除数据库中数据的语句,它们是SELECT、INSERT、UPDATE、DELETE等。
二、SELECT语句
SELECT语句用来从数据库中检索满足特定条件的记录。一个SELECT语句主要包含如下几部分:从哪个或哪些表或视图中提取数据
选取表中的哪些列
选择满足什么条件的数据
查询结果以什么顺序显示
三、用下面三个具体的表来描述SELECT语句
假定本节例子中所使用的数据均从图书管理数据库book_manage中的三个表中选取
四、 SELECT语句的格式
SELECT select_list (1)
[INTO new_table_name] (2)
FROM table_list (3)
[WHERE conditions] (4)
[GROUP BY group_by_list] (5)
[HAVING search_conditions] (6)
[ORDER BY order_list [ASC | DESC] ] (7)
关于(1):
*:
select_list可以是“*”,表示所有列。
举例: SELECT * FROM tb_pubinfo
显示tb_pubinfo数据表中的全部列。
DISTINCT:
从查询结果中删除两行完全相同的数据
举例:SELECT DISTINCT PublishID FROM tb_bookinfo
TOP n:
只显示查询结果的前n行,n是一个正整数。
举例:SELECT TOP 3 bookID,bookname FROM tb_bookinfo (注意:指明要显示的字段)
AS:
可以为每个表起一个别名。
一旦为某个表起了别名后,就只能使用其别名。AS关键字也可以省略。
例:为tb_bookinfo 数据表定义了别名b
SELECT b.bookID, b.bookname FROM tb_bookinfo AS b
AS还可以为查询中出现的字段起一个别名,使得显示结果中标题出现的不是字段名,而是别名。
例:
SELECT bookID AS 书号,bookname AS 书名 FROM tb_bookinfo
执行以上语句,用“书号”替换了“bookID”,用“书名”替换了“bookname”。
关于(2):
INTO语句可以使得查询结果生成一个新表。
举例:
SELECT bookID AS 编号,bookname AS 书名 INTO tb_new_bookinfo FROM tb_bookinfo
这样,会以编号、书名为列,生成一个新表,表名为tb_new_bookinfo
关于(3):
FROM table_list
这是一个必选项,指明了从哪些表中取数据,并且可用关键字AS为表起别名。
关于(4):
可选项WHERE
WHERE子句用来设置一个筛选条件,使得查询结果中仅包含那些满足条件的数据。
例:
SELECT bookID,bookname,price FROM
tb_bookinfo WHERE price>20
与其等价的语句为
SELECT bookID,bookname,price FROM tb_bookinfo WHERE NOT price<=20
AND:
SELECT bookID,bookname,price FROM tb_bookinfo WHERE price>20 AND publishID=’P102’
在tb_bookinfo 数据表中找出所有单价大于20并且出版社编号为P102的图书
IN:
在WHERE条件中使用运算符IN
SELECT * FROM tb_bookinfo WHERE authorID IN ('A002','B001')
执行结果返回tb_bookinfo 数据表中所有作者编号为A002或B001的那些行。
LIKE:
LIKE运算符可以与%通配符一起使用,放在WHERE子句中做查询。
SELECT * FROM tb_bookinfo WHERE bookname LIKE ‘计%’
执行结果返回tb_bookinfo 数据表中所有书名以“计”开头的书。
关于(5):
可选项GROUP BY
GROUP BY子句用来进行分类汇总。
例:
SELECT publishID,AVG(price) FROM
tb_bookinfo GROUP BY publishID
在tb_bookinfo 数据表中查询各出版社的图书的平均单价。
关于(6):
可选项HAVING
HAVING子句与WHERE子句类似,但HAVING子句可以使用累计函数(如SUM,AVG等函数)。
例:在tb_bookinfo 数据表中查询平均单价大于25元的各出版社。
SELECT publishID AS 出版社编号,
AVG(price) AS 平均价格
FROM tb_bookinfo
GROUP BY publishID
HAVING AVG(price) >25
关于(7):
可选项ORDER BY
用来按升序(ASC)或降序(DESC)来显示结果。
例:
SELECT * FROM tb_bookinfo ORDER BY price DESC
PS:Select语句基本结构中包含了7个子句,这些子句的排列顺序是固定的,其中除了FROM子句外,其他子句都可省略,但若出现,则必须按照基本结构中的顺序排列
五、SELECT语句中,使用JOIN语句
在from子句中指定了多个数据源时,通常还需要使用JOIN指定数据源之间的联接条件。
在JOIN联接时,将第一个表中的每一条记录依次与第二个表中的每一条记录联接成一条新的记录。
如果A、B表中分别有10条记录,则联接后可得100条记录。
在两个表联接之后,可使用ON指定条件进行筛选。
连接分为内连接和外连接。
外连接又分为左连接、右连接和全连接。
以下例子中所使用的数据表来自company数据库中的2个表TBL_A和TBL_B。
①内连接:
结果中只包含两个表中同时满足条件的行。
SELECT TBL_A.emp_id,
TBL_A. emp_name,
TBL_A. emp_age,
TBL_B.specialty --注意:这里不要有“,”
FROM TBL_A INNER JOIN TBL_B
ON TBL_A.emp_id = TBL_B.emp_id
②左连接
结果中包含位于关键字LEFT OUTER JOIN左侧的表中的所有行,以及该关键字右侧的表中满足条件的行。
SELECT TBL_A.emp_id,
TBL_A.emp_name,
TBL_A.emp_age,
TBL_B.specialty,
TBL_B.level
FROM TBL_A LEFT OUTER JOIN TBL_B
ON TBL_A. emp_id = TBL_B. emp_id
③右连接
结果集中包含位于关键字RIGHT OUTER JOIN右侧的表中的所有行,以及该关键字左侧的表中满足条件的行。
SELECT TBL_A.emp_id,
TBL_A.emp_name,
TBL_A.emp_age,
TBL_B.specialty,
TBL_B.level
FROM TBL_A RIGHT OUTER JOIN TBL_B
ON TBL_A.emp_id = TBL_B.emp_id
④全连接
结果中包含两个表中的所有行。
SELECT TBL_A.emp_id,
TBL_A.emp_name,
TBL_A.emp_age,
TBL_B.specialty,
TBL_B.level
FROM TBL_A FULL OUTER JOIN TBL_B
ON TBL_A.emp_id = TBL_B.emp_id
- select语句详解(包括JOIN的用法等)
- select join的用法
- Hibernate中left join,right join等用法的详解
- sql语句的join用法
- sql语句的join用法
- SELECT语句的表连接(join)
- SQL 基础:Select语句,各种join,union用法
- SQL 基础:Select语句,各种join,union用法
- SQL 基础:Select语句,各种join,union用法
- SQL 基础:Select语句,各种join,union用法
- select语句的用法--oracle
- select 语句的用法(转贴)
- SQL语句 SELECT LIKE like用法详解
- SQL语句 SELECT LIKE like用法详解
- SQL语句 SELECT LIKE 用法详解
- SQL语句 SELECT LIKE like用法详解
- SQL语句 SELECT LIKE用法详解
- SQL语句 SELECT LIKE like用法详解
- 中移动谋划多个硬件产品:寻找手机之外入口
- 在ServiveModel客户端配置部分中,找不到应用“CWTIBE2008.IBESoap”的默认终点元素.....
- 初学者如何查阅自然语言处理(NLP)领域学术资料
- 理解Fragment生命周期
- 计算MDI子窗口数,仅显示文件夹的打开对话框
- select语句详解(包括JOIN的用法等)
- 随手笔记javascript篇_事件机制
- DB2 表字段大小写问题
- win8.1用户体验
- OC学习3——self、自动释放、变量作用域
- 双系统情况下卸载Linux
- 第十六周自由练习项目——acm c++继承
- win8使用心得
- WebSocket for java