[Oracle数据库学习]一、基本SQL语句-Select
本月学习Oracle数据库相关知识,暂定20天完成。
D1
基本select语句
SELECT *|{[DISTINCT] column|expression [alias],...} FROM table;
SELECT:选择哪些列;
FROM:从哪个表;
选择全部列
SELECT * FROM rooms;
ROOM_ID | ROOM_NAME | MANAGER_ID | LOCATION_ID |
---|---|---|---|
1 | first room | 1 | 1 |
2 | second room | 1 | 2 |
3 | third room | 2 | 2 |
选择特定的列
SELECT room_id, location_id FROM rooms;
ROOM_ID | LOCATION_ID |
---|---|
1 | 1 |
2 | 2 |
3 | 2 |
编写SQL语句
1)SQL 语言大小写不敏感;
2)SQL 可以写在一行或者多行,各子句一般要分行写;使用缩进提高语句的可读性
3)关键字不能被缩写也不能分行。
SQL*Plus列头设置
1)字符和日期类型的列左对齐,数字类型的列右对齐;
2)默认列头显示为大写。
算术运算符
操作符 | 描述 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
数字和日期的数学表达式时使用算术运算符
SELECT employee_name, salary, salary + 100 FROM employees;
EMPLOYEE_NAME | SALARY | SALARY+100 |
---|---|---|
Alice | 10000 | 10100 |
Bob | 5000 | 5100 |
操作符优先级
1)乘、除的优先级高于加、减;
2)同一优先级从左向右执行;
3)括号内的运算先执行。
SELECT employee_name, salary, 12*salary+5000 FROM employees;
EMPLOYEE_NAME | SALARY | 12*SALARY+5000 |
---|---|---|
Alice | 10000 | 125000 |
Bob | 5000 | 65000 |
SELECT employee_name, salary, 12*(salary+5000) FROM employees;
EMPLOYEE_NAME | SALARY | 12*(SALARY+5000) |
---|---|---|
Alice | 10000 | 180000 |
Bob | 5000 | 120000 |
定义空值
空值是无效、未定义的,不是空格或0。
SELECT employee_name, commission_pct FROM employees;
EMPLOYEE_NAME | COMMISSION_PCT |
---|---|
Alice | (null) |
Bob | 0.12 |
包含空值的数学表达式结果都为空
SELECT employee_name, salary, 12*salary+5000*commission_pct FROM employees;
EMPLOYEE_NAME | SALARY | 12*SALARY+5000*COMMISSION_PCT |
---|---|---|
Alice | 10000 | (null) |
Bob | 5000 | 60600 |
列的别名
1)给选择的列重命名,便于计算;
2)紧跟着列名,或使用AS关键字,使别名中可包含空格或特殊的字符并区分大小写。
SELECT employee_name AS name, commission_pct AS comm FROM employees;
NAME | COMM |
---|---|
Alice | (null) |
Bob | 0.12 |
SELECT employee_name "Name", salary*12 "Annual Salary" FROM employees;
Name | Annual Salary |
---|---|
Alice | 120000 |
Bob | 60000 |
连接符
‘||’,将列与列或列与字符连接起来,形成“合成列”。
SELECT employee_name||job_id AS "employee" FROM employees;
employee |
---|
AlicePM |
BobDEV |
字符串
字符串可以是select列表中的一个字符、数字或日期,字符和日期必须使用单引号。
SELECT employee_name||' is a '||job_id AS "Employ Details" FROM employees;
Employ Details |
---|
Alice is a PM |
Bob is a DEV |
重复行
默认情况下,会返回所有符合条件的行,包括重复行。
SELECT department_id FROM employees;
DEPARTMENT_ID |
---|
1 |
1 |
2 |
2 |
删除重复行
在SELECT子句中使用DISTINCT关键字删除重复行。
SELECT DISTINCT department_id FROM employees;
DEPARTMENT_ID |
---|
1 |
2 |
SQL和SQL*Plus
SQL语句 | SQL*Plus命令 |
SQL是一种语言 | SQL*Plus是一种环境 |
ANSI标准 | Oracle的特性之一 |
关键字不能缩写 | 关键字可以缩写 |
使用语句控制数据库中的表的定义和表中的数据 |
命令不能改变数据库中数据的值,并且需要集中运行 |
SQL*Plus
使用SQL*Plus可以:
1)描述表结构。
2)编辑和执行SQL 语句。
3)将SQL保存在文件中并将SQL语句执行结果保存在文件中,并在保存的文件中执行语句
4)将文本文件装入SQL*Plus编辑窗口。
显示表结构
使用DESCRIBE命令表示表结构。
DESC[RIBE] tablename
示例:
DESC all_tab_comments;
名称 | 空值 | 类型 |
OWNER | NOT NULL | VARCHAR2(30) |
TABLE_NAME | NOT NULL | VARCHAR2(30) |
TABLE_TYPE | VARCHAR2(11) | |
COMMENTS | VARCHAR2(4000) |
总结:
1)使用SELECT语句:查询全部/部分列;使用列的别名、连接符、算术运算符、DISTINCT关键字;
2)使用SQL*Plus环境编写、保存、执行SQL语句和SQL*Plus命令。
欢迎大家评论交流,发现博文中存在的问题一定要留言哦