SQL语言基础(SELECT语句)

  通过SQL 语句,程序员或数据库管理员可以做如下的主要工作:

1 )建立数据库的表格,包括设置表格所可以使用之空间。

2 )改变数据库系统环境设置。

3 )针对某个数据库或表格,授予用户存取权限。

4 )对数据库表格建立索引值。

5 )修改数据库表格结构(新建、删除或是修改表格字段)。

6 )对数据库进行数据的新建。

7 )对数据库进行数据的删除。

8 )对数据库进行数据的修改。

9 )对数据库进行数据的查询。

SQL 语言分类:


1-1 基本sql语句

SELECT  *|{[DISTINCT] column|expression [alias],...}
FROM  table;

Ø   SELECT 标识选择哪些列

Ø   * 选择全部列

Ø   DISTINCT 过滤重复值

Ø   column|expression 选择的列名或表达式

Ø   alias 表的别名

Ø   FROM 标识从哪个表中选择

Ø   table 取数据的表名

1-1-1  选择全部列

SELECT * FROM   departments;

使用”* ”选择表中的全部列。

在实际工作中,尽量避免使用select * … 因为ORACLE 在解析的过程中, 会将’* ’依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 将耗费更多的时间。

1-1-2  选择特定的列

SELECT department_id, location_id FROM   departments;

1-2 算数运算符

SELECT last_name, salary, salary + 300 FROM   employees;

1-2-1 操作符优先级

 

Ø   乘除的优先级高于加减。

Ø   同一优先级运算符从左向右执行。

Ø   括号内的运算先执行。

SELECT last_name, salary, 12*salary+100 FROM   employees;

1-2-2 使用括号

SELECT last_name, salary, 12*(salary+100) FROM   employees;

1-2-3 定义空值

Ø   空值是无效的,未指定的,未知的或不可预知的值。

Ø   空值不是空格或者0

Ø   各种类型的列都可以包含空值

Ø   NOT NULL PRIMARY KEY 约束列不允许空值


SELECT last_name, job_id, salary, commission_pct FROM   employees;

1-3 列的别名

Ø   重命名一个列。

Ø   便于计算。

Ø   紧跟列名,也可以在列名和别名之间加入关键字‘AS ’,以便在别名中包含空格或特殊的字符并区分大小写。

SELECT last_name AS name, commission_pct comm FROM   employees;

1-4 连接符

Ø   把列与列,列与字符连接在一起。

Ø   || ’表示。

Ø   可以用来‘合成’列。

SELECT  last_name||job_id AS "Employees" FROM   employees;

1-5 字符串

Ø   字符串可以是 SELECT 列表中的一个字符, 数字, 日期。

Ø   日期和字符只能在单引号中出现。

Ø   每当返回一行时,字符串被输出一次。

SELECT last_name  ||' is a '||job_id
       AS "Employee Details"
FROM   employees;

1-6 重复行

SELECT department_id FROM   employees;

使用关键字‘DISTINCT ’过滤掉多余的重复记录

SELECT DISTINCT department_id
FROM   employees;

1-7 过滤

SELECT  *|{[DISTINCT] column|expression [alias],...}
FROM  table
[WHERE  condition(s)];

WHERE 子句紧随 FROM 子句

1-7-1 WHERE子句

SELECT employee_id, last_name, job_id, department_id
FROM   employees
WHERE  department_id = 90 ;

1-7-2 比较运算

SELECT last_name, salary
FROM   employees
WHERE  salary <= 3000;

1-7-3 其他比较运算

BETWEEN:

使用 BETWEEN 运算来显示在一个区间内的值

SELECT last_name, salary
FROM   employees
WHERE  salary BETWEEN 2500 AND 3500;

IN:

使用 IN 运算显示列表中的值

SELECT employee_id, last_name, salary, manager_id
FROM   employees
WHERE  manager_id IN (100, 101, 201);

LIKE:

使用 LIKE 运算选择类似的值

选择条件可以包含字符或数字:

% 代表一个或多个字符。

_ 代表一个字符。

% ’和‘- ’可以同时使用。

可用ESCAPE 标识符查找% _

SELECT  first_name
FROM   employees
WHERE  first_name LIKE 'S%';

NULL:

使用 NULL 判断空值

null 不等于0 ,空格

任意两个null 不相等

SELECT last_name, manager_id
FROM   employees
WHERE  manager_id IS NULL;

1-7-4 逻辑运算

AND:

AND 要求和的关系为真

SELECT employee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >=10000
AND    job_id LIKE '%MAN%';


OR:

OR 要求或关系为真。

SELECT employee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >= 10000
OR     job_id LIKE '%MAN%';

NOT:

SELECT last_name, job_id
FROM   employees
WHERE  job_id
       NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');

1-7-5 优先级

1-8 排序

使用 ORDER BY 子句排序

ASC: 升序

DESC: 降序

ORDER BY 子句在SELECT 语句的结尾。

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date ;

规则:

缺省按升序排序,可用DESC 说明降序排序

可用表达式或别名排序

NULL 值的显示:升序在最后;降序在首位

可用位置(列序号)排序

ORDER BY 列表的顺序是排序的顺序

可用未出现在SELECT 列表中的列排序

1-8-1 降序排序

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date DESC ;

1-8-2 按别名排序

SELECT employee_id, last_name, salary*12 annsal
FROM   employees
ORDER BY annsal;

1-8-3 多个列排序

SELECT last_name, department_id, salary
FROM   employees
ORDER BY department_id, salary DESC;

请使用浏览器的分享功能分享到微信等