一、什么是数据库
1、数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件)
注:通常直接使用的是数据库管理系统(DBMS)。
2、表(table)是一种结构化的文件(某种特定类型数据的结构化清单),表名是唯一的,实际上是数据库名和表名等因素的组合。
3、模式(schema)关于数据库和表的布局及特性的信息。
4、列(colomn)表中的一个字段,存储一条特定的信息。每个列都有相应的数据类型(datatype),数据类型定义列可以存储的数据种类。
5、行(row),表中的数据是按行存储的。如果将表想象为网格,网格中垂直的列为表列,水平行为表行。
6、主键(primary key),表中每一行都应该有可以唯一标识自己的一列(或一组列)。要求:
1)任意两行都不具有相同的主键值;
2)每个行都必须具有一个主键值(主键列不允许NULL值);
3)主键列中的值不允许修改或更新;
4)主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。
7、SQL是结构化查询语言(Structured Query Language)的缩写,是一种专门用来与数据库通信的语言。
二、检索数据
1、SELECT语句
1)检索单个列
SELECT prod_name FROM Products;
2)检索多个列
SELECT prod_id, prod_name, prod_price FROM Products;
3)检索所有列
SELECT * FROM Products;
三、排序检索数据
1、排序数据
SELECT prod_name FROM Products ORDER BY prod_name;
2、按多个列排序
SELECT pord_id, prod_price, prod_name FROM Products
ORDER BY prod_price, prod_name;
3、按列位置排序
SELECT prod_id, prod_price, prod_name FROM Products
ORDER BY 2, 3;
注:ORDER BY 2, 3表示先按prod_price, 再按prod_name进行排序。
4、指定排序方向
默认为升序排列(从A到Z),指定关键字DESC可以降序排列(从Z到A)
SELECT prod_id, prod_price, prod_name FROM Products
ORDER BY prod_price DESC;
SELECT prod_id, prod_price, prod_name FROM Products
ORDER BY prod_price DESC, prod_name;
四、过滤数据
1、使用WHERE子句
SELECT prod_name, prod_price FROM Products
WHERE prod_price = 3.49;
注:在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误。
2、WHERE子句操作符
操作符
说明
=
等于
<>
不等于
!=
不等于
<
小于
<=
小于等于
!<
不小于
>
大于
>=
大于等于
!>
不大于
BETWEEN
在指定的两个值之间
IS NULL
为NULL值
注:字符串类型的列进行比较,需要添加'',用来与数值列进行比较的值不用''
注:NULL空值(no value),与字段包含0、空字符串或仅仅包含空格不同
五、高级数据过滤
1、组合WHERE子句
即:以AND子句的方式或OR子句的方式使用
SELECT prod_price, prod_name FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' AND prod_price <= 4;
注:由于AND在计算次序中优先级最高,所以先统计“prod_price <= 4”的数据,再统计“vend_id = 'DLL01' OR vend_id = 'BRS01'”
2、IN操作符
IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都在括在圆括号中。
SELECT prod_name, prod_price FROM Products
WHERE vend_id IN ('DLL01', 'BRS01')
ORDER BY prod_name;
3、NOT操作符
有且只有一个功能,那就是否定它之后所跟的任何条件。
六、用通配符进行过滤
1、LIKE操作符
百分号(%)通配符,%表示任何字符出现任何次数
SELECT prod_id, prod_name FROM Products
WHERE prod_name LIKE 'Fish%';
注:%告诉DBMS接受Fish之后的任意字符,不管它有多少字符
注: