标签:数据库、SQL、Oracle
– ORACLE的数据类型
常用的数据库字段类型如下:
作为主键,它满足以下条件:
①任意两行都不具有相同的主键值。
②每一行都必须具有一个主键值(主键列不允 许NULL值)。
③主键列中的值不允许修改或更新。
④主键值不能重用(如果某行从表中删除,它 的主键不能赋给以后的新行)。
主键通常定义在表的一列上,但并不是必需 这么做,也可以一起使用多个列作为主键。 在使用多列作为主键时,上述条件必须应用 到所有列,所有列值的组合必须是唯一的 (但单个列的值可以不唯一)。
①检索单个列
SELECT prod_name
FROM Products;
②检索多个列
SELECT prod_id, prod_name, prod_price
FROM Products;
每个列名之间添加逗号。
③检索所有列
SELECT * FROM Products;
④使用distinct
SELECT DISTINCT vend_id
FROM Products;
警告:不能部分使用DISTINCT。DISTINCT关键字作用于所有的列,不仅仅 是跟在其后的那一列。例如,你指 定SELECT DISTINCT vend_id, prod_price,除非指定的两列完全相同,否则所有的行都会被检索出来。
⑤使用top
SELECT TOP 5 prod_name
FROM Products
使用关键字top来限制所检索的行数。比如这个例子中,最多显示顶上的5行。
而在Oracle,需要基于ROWNUM(行计 数器)来计算行,像这样:
SELECT prod_name
FROM Products
WHERE ROWNUM <=5;
①单个列排序
SELECT prod_name
FROM Products
ORDER BY prod_name
②多个列的先后排序
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name
这个例子中,会按照prod_price再到prod_name的顺序排列。
③根据索引来先后排序
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2, 3;
这里的2,3的索引是根据这条语句中select后面的列的顺序来指明的。即,先排prod_price,再排prod_name。
④使用DESC
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC;
首先指明,DESC就是DESCENDING的缩写,二者可以互换。这个关键字可以使输出的结果呈降序排序。
⑤使用多个列的DESC
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name;
注意最后一部分的ORDER BY中的子语句,这里只有prod_price才会进行降序排列。如果想在多个列上进行降序排序,必须对 每一列指定DESC关键字。
提示:区分大小写和排序顺序 在对文本性数据进行排序时,A与a相同 吗?a位于B之前,还是Z之后?这些问题 不是理论问题,其答案取决于数据库的设 置方式。
在字典(dictionary)排序顺序中,A被视 为与a相同,这是大多数数据库管理系统 的默认行为。但是,许多DBMS允许数据 库管理员在需要时改变这种行为(如果你 的数据库包含大量外语字符,可能必须这 样做)。
这里的关键问题是,如果确实需要改变这 种排序顺序,用简单的ORDER BY子句可能做不到。你必须请求数据库管理员的帮助。
①基本使用
SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;
操作符 | 说明 |
---|---|
= | 等于 |
< > | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
! | 不小于 |
> | 大于 |
>= | 大于等于 |
!> | 不大于 |
BETWEEN | 在指定的两个值之间 |
NOT BETWEEN | 不介于指定的值之间 |
like | 模式匹配 |
IS NULL | 为NULL值 |
is not null | 不为空 |
②空值检查
SELECT prod_name
FROM Products
WHERE prod_price IS NULL;
确定值是否为NULL,不能简单地检查是否= NULL。SELECT语句有一个特殊的WHERE子 句,可用来检查具有NULL值的列。这个WHERE子句就是IS NULL子句。
③and 并
SELECT prod_id, prod_price, prod_name
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4
④or 或
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = ‘BRS01’;
⑤ 用以圆括符使用逻辑组合,否则,执行顺序将从左到右
SELECT prod_name, prod_price
FROM Products
WHERE (vend_id = 'DLL01' OR vend_id = ‘BRS01’)
AND prod_price >= 10;
⑥in 操作符
SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ( 'DLL01', 'BRS01' )
ORDER BY prod_name;m
IN取一组由逗号分隔、括 在圆括号中的合法值。
⑦not操作符
SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01'
上下两个语句同义↑↓
SELECT prod_name
FROM Products
WHERE vend_id <> 'DLL01'