SQL学习笔记(一)

简介:

一、检索数据

如何使用SELECT语句检索一个或多个数据列。

1.1 检索单个列

1
2
SELECT prod_name 
FROM Productions;

注意:检索出来的数据是没有排序的

1.2 检索多个列

1
2
SELECT prod_id,prod_name,prod_price
FROM Productions;

注意:SQL语句一般返回原始的、无格式的数据。

1.3 检索所有列

1
2
SELECT * FROM Productions;
通配符*表示匹配任意字符任意次数。

1.4 检索不同的值(相同的值不显示)

1
2
SELECT DISTINCT vend_id
FROM Productions;

分析:返回唯一的vend_id行

警告:如果检索多个列,则使用DISTINCT关键字则会把但凡只要有一列的值不同就会检索出来

1.5 限制返回结果

说明:指定返回前5行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
--DB2的SQL语句
 
SELECT prod_name
FROM Products
FETCH FIRST 5 ROW ONLY;
 
 
#Oracle(基于ROWNUM来计算行)
 
SELECT prod_name 
FROM Products
WHERE ROWNUM<=5;
 
#MySQL,PostgreSQL,SQLite
 
SELECT prod_name
FROM Products
LIMIT 5;

说明;指定从第5行开始返回5行

1
2
3
4
5
6
7
8
SELECT prod_name 
FROM Products
LIMIT 5 OFFSET 5;
 
#Mysql,MariaDB中的快捷方式
SELECT prod_name 
FROM Products
LIMIT 5,5;

警告:第一个被检索出来的行是第0行,以此类推

1.6 使用注释

说明:用于注释说明或者用于测试调试

1
2
3
--
#
/*   */

二、排序检索数据

2.1 排序检索数据

说明:使用SELECT和ORDER BY子句,根据需要检索数据。

理论:关系数据库设计理论认为,如果不明确规定排序的顺序,则不应该假定检索出来的数据的顺序有任何意义。

概念:子句(Clause)

一个子句通常由一个关键字和数据组成。

1
2
3
SELECT prod_name 
FROM Products
ORDER BY prod_name;

注意:    

1
2
3
   1.DBMS软件将会对prod_name列以字母顺序排序数据。
   2.ORDER BY 必须是最后一条子句,不然会报错
   3.使用非检索出的列进行排序也是可以的

2.2 按多个列排序

说明;代码将会检索3个列,并按其中的两个列对结果进行排序-先按价格,再按名称排序

1
2
3
SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY prod_price,prod_name;

理解:有相同的prod_price,才会按prod_name排序

2.3 按列位置排序

说明:不仅仅可以按列名排序,也可以按照列位置排序

例子中先按第二个列排序再按第三个列排序

1
2
3
SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY 2,3;

2.4 指定排序的方向

说明:默认升序排序,也可以降序排序,需使用DESC关键字。

1
2
3
4
--降序排序
SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY prod_price DESC;

说明:多个列排序

1
2
3
SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY prod_price DESC,prod_name;

注意:

              1.DESC只应用于其前面的列名进行降序排序而后面的列名将不应用 

  2.默认情况下Z与z是等同的,除非管理员自行改变设置

三、过滤数据

3.1 使用WHERE子句

说明:使用SELCT语句的WHERE子句指定搜索条件,用来检索出管理员需要的数据。

1
2
3
SELECT prod_name,prod_price
FROM Products
WHERE prod_price=5;

注意:会输出所有等于5的数据类型

提示:

            两种过滤方式:SQL过滤与应用过滤

数据不仅仅可以在数据层过滤也可以在应用层过滤。但是,这种做法通过不妥。让客户端处理数据会影响应用的性能以及占用网络带宽。

警告:在同时使用WHERE子句和ORDER BY子句时,需要将ORDER BY位于WHERE子句的后面。

3.2 WHERE子句操作符

1
2
3
4
5
6
7
= < <= 
! 不小于
> >= !> 
<> 不等于
!= 不等于
BETWEEN 在指定的两个值之间
IS NULL 为NULL值

3.2.1 检查单个值

1
2
3
SELECT prod_name,prod_price
FROM Products
WHERE prod_price <=100;

3.2.2 不匹配检查

1
2
3
SELECT vend_id,prod_name
FROM Products
WEHRE vend_id <> 'china007'

3.2.3 范围内查找

1
2
3
SELECT prod_name,prod_price
FROM Products
WHERE prod_price BETWEEN 10 AND 15;

3.2.4 空值检查

无值(NULL)--> no value

注意:它与字段为0,空字符或包含空格不同

说明:确定一个值为空,不能简单地检查= null,SELECT中可以使用 IS NULL来确定具有null值的列。

1
2
3
SELECT cust_name 
FROM CUSTOMERS
WHERE cust_email IS NULL;


本文转自 PowerMichael 51CTO博客,原文链接:http://blog.51cto.com/huwho/1974431,如需转载请自行联系原作者
相关文章
|
SQL 数据库管理
第二章:基础查询与排序---SQL学习笔记
第二章:基础查询与排序---SQL学习笔记
119 0
java202304java学习笔记第六十六天-ssm-动态sql-一对一的配置实现1
java202304java学习笔记第六十六天-ssm-动态sql-一对一的配置实现1
159 0
java202304java学习笔记第六十七天-ssm-动态sql-多对多注解开发之1
java202304java学习笔记第六十七天-ssm-动态sql-多对多注解开发之1
96 0
|
SQL 关系型数据库 MySQL
简简单单 My SQL 学习笔记(1)——表中数据的整删改查
简简单单 My SQL 学习笔记(1)——表中数据的整删改查
|
SQL 关系型数据库 MySQL
简简单单 My SQL 学习笔记(2)——分组和简单数据的查询
简简单单 My SQL 学习笔记(2)——分组和简单数据的查询
|
SQL 关系型数据库 MySQL
简简单单 My SQL 学习笔记(3)——连接和嵌套查询
简简单单 My SQL 学习笔记(3)——连接和嵌套查询
|
SQL OLAP Serverless
第五章:SQL高级处理---SQL学习笔记
第五章:SQL高级处理---SQL学习笔记
104 0
|
SQL 关系型数据库 MySQL
第四章:集合运算---SQL学习笔记
第四章:集合运算---SQL学习笔记
212 0
|
SQL 关系型数据库 数据库
第三章:复杂一点的查询--SQL学习笔记
第三章:复杂一点的查询--SQL学习笔记
174 0
|
SQL 关系型数据库 MySQL
第一章:初识数据库---SQL学习笔记
第一章:初识数据库---SQL学习笔记
149 0

热门文章

最新文章