基础知识
SQL语句的编写规则:
- SQL语句不区分大小写(Oracle如此, MySQL区分)
- 可以在一行或者多行数据SQL语句
- 子句通常放在单独的行上
- 缩进用于增强可读性
- SQL语句使用分号终止
- 正规写法中,所有的关键字使用大写,列名和表名使用小写。
列头(字段头)的对齐方式:
- SQL Developer中:
- 默认标题对齐:左对齐
- 默认标题显示:大写
- SQLPLUS中:
- 字符和日期标题对齐:左对齐
- 数字列标题:右对齐
- 默认标题显示:大写
在SQLDeveloper中连接hr测试数据库。
SELECT 命令进行数据查询
SELECT * FROM employees;
FROM发生在SELECT之前,先去定位数据库,然后在进行SELECT数据检索。
在使用SELECT * FROM tab_name之前,先使用SELECT COUNT(1) FROM tab_name 先查看数据表的总行数,避免表中数据太大造成性能问题。
--为注释标识符
输出字符串:SELECT ‘Hello, World‘ FROM dual;
sys用户可以看到其他用户下的数据表,需要在表名前面加上用户名。
SELECT * FROM hr.employees;
SELECT语句支持算术表达式
SELECT 99 * 99 FROM dual;
SELECT last_name, salary, salary * 1.4 FROM employees;
LAST_NAME SALARY SALARY*1.4 ------------------------- ---------- ---------- King 24000 33600 Kochhar 17000 23800 De Haan 17000 23800 Hunold 9000 12600
NULL的介绍
NULL是一个不可用、未分配、未知或者不适用的值。任何值与空值进行计算的结果都是空值。
SELECT last_name, 12 * salary * commission_pct FROM employees;
定义列别名
紧跟在列明之后,可以使用as关键字指定,但不强制。列明可以使用中文。
如果包含空格或者特殊字符,或者区分大小写,需要使用双引号。
SELECT last_name as Surname, commission_pct as Comm FROM employees;
SELECT last_name Surname, commission_pct Comm FROM employees;
SELECT last_name "Surname", employee_id "ID", salary * 1.1 "Adjusted Salary" FROM employees;
连接操作符 ||
将不同列之间的内容进行字符串连接,然后放到一个单独的列中。
SELECT last_name || ‘ : ‘ || job_id as 员工基本情况 FROM employees;
SELECT last_name || ‘ : ‘ || job_id as 员工基本情况 FROM employees; 员工基本情况 Abel : SA_REP Ande : SA_REP Atkinson : ST_CLERK
文字字符串
文字是SELECT语句中包含的字符,数字或者日期。
日期和字符文字必须用单引号引起来。
每个字符串对于返回的每一行输出一次。
SELECT last_name || ‘ is a(an) ‘ || job_id as "Employee Details" from employees;
替代运算符
在SQL中,要输出 单引号,需要使用另外一个单引号进行转义, ‘ ‘‘ ‘ 这样才能输出一个单引号。
使用 q‘[字符串] ‘ 的形式,字符串可以输入任何字符而不需要转义。
SELECT q‘[worker‘s job title is]‘|| job_id AS 基本情况 FROM employees;
DISTINCT去掉重复行
SELECT DISTINCT department_id AS 部门清单 FROM employees;
DESCRIBE 命令查看表结构
DESC tab_name; 查看表结构,能看到列名以及约束条件(Not null),并能看到列的数据类型。
名称 空值? 类型
-------------- -------- ------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
通过查看了表结构,可以使用select 检索特定列的数据。
SELECT employee_id, first_name, email FROM employees;