了解SQL
数据库是一个以某种有组织的方式存储的数据集合
保存有组织的数据的容器(通常是一个文件或是一组文件)
数据库软件应成为数据库管理系统DBMS
表某种特定类型数据的结构化清单
模式(schema)关于数据库和表的布局及特性的信息
列(Colomn)表中的一个字段。所有表都是由一个或是多个列组成的。
数据类型(datatype)所容许的数据的类型。每个表列都有相应的数据类型,他限制(或容许)该列中存储的数据。
行
表中的一个记录
主键(primary key)一列或者一组列,其值能够唯一标识表中的每个行
唯一标识表中每行的这个列(或这组列)称为主键。主键用来表示一个特定的行。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行。
表中任何列都可以作为主键,只要满足(1)任意两行都不具有相同的主键值(2)每个行都必须具有一个主键值(主键列不允许NULL值)(3)主键列中的值不允许修改或更新(4)主键值不能重用,即某列从表中删除,它的主键不能赋给以后的新行。
第三章按多个列排序
子句(clause)sql语句由子句构成,有些子句是必须的,而有的是可选的。一个子句通常由一个加上所提供的数据组成。
子句的例子有SELECT语句的FROM子句
ORDER BY 子句的位置
在指定一条ORDER BY子句时,应保证它是SELECT语句中最后一条子句。该子句的次序不对将会出现错误消息。
按多个列排序
执行多个列排序命令前可以发现同样的工资的人名不是按字典序排列的
执行以后~~~撒花~~
按列位置排序
select FIRST_NAME,salary
from employees
order by salary,FIRST_NAME;
等价于
select FIRST_NAME,salary
from employees
order by 2,1;
Order by 默认为升序排序
而order by salary DESC 为降序排序
DESC关键字只直接应用到位于其前面的列名
ORDER BY salary DESC, FIRST_NAME;
在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。
WHERE子句在表名(FROM子句)之后给出,如下所示:
WHERE子句操作符
= <> < > != !> ! >= <=
BETWEEN 在指定两个值之间
IS NULL 为NULL值
单引号用来限定字符串,如果将值与串类型的列进行比较,则需要限定引号
范围检查
BETWEEN操作符
Where salary between 12000 and 15000;
在创建表时,表设计人员可以指定其中的列是否可以不包含值。在一个列不包含值时,称其为包含空值NULL。
第五章高级过滤数据
只检索所需数据需要指定检索条件(search criteria),搜索条件也成为过滤条件(filter condition)
操作符(operator)
AND OR
IN operator
用来指定条件范围,范围中的每个条件都可以进行匹配
IN取合法值的由逗号分隔的清单,全都括在圆括号里。
WHERE salary IN (12000, 13000, 14000)
IN最大的优点就是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。
作为子查询的SELECT语句只能查询单个列。企图检索多个列将返回错误。
具体见11章
.
SELECT cust_id
FROM Orders
WHERE order_num IN (SELECT orde_num
FROM OrderItems
WHERE prod_id = ‘RGAN01’;)
NOT
WHERE子句的NOT操作符有且只有一个功能,就是否定它之后的所有的条件
WHERE NOT salary = 12000;
第六章用通配符进行过滤
LIKE操作符
前面介绍的所有操作符都是针对已知值进行过滤的
但是怎样搜索产品名种包含文本bean bag的所有产品?
使用通配符(wildcard)
搜索模式(search pattern)由字面值,通配符或两者组合够曾的搜索条件
通配符本事是SQL的WHERE子句中有特殊含义的字符,SQL支持几乎几种通配符
LIKE指示DBMS,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较
LIKE是谓词(predicate)?????
百分号通配符%
%表示任何字符出现的任意次数。
%还能匹配0个字符~~~
例如为了找出所有以词Fish起头的产品:
SQL必知必会笔记 来自淘豆网m.daumloan.com转载请标明出处.