一、sql初步了解
1 **SQL****语句分为以下三种类型
- DML: Data Manipulation Language 数据操纵语言
- DDL: Data Definition Language 数据定义语言
- DCL: Data Control Language 数据控制语言
1.1 DML用于查询与修改数据记录
包括如下SQL语句:
- INSERT:添加数据到数据库中
- UPDATE:修改数据库中的数据
- DELETE:删除数据库中的数据
- SELECT:选择(查询)数据
SELECT是SQL语言的基础,最为重要。
1.2 DDL用于定义数据库的结构
比如创建、修改或删除数据库对象,包括如下SQL语句:
- CREATE TABLE:创建数据库表
- ALTER TABLE:更改表结构、添加、删除、修改列长度
- DROP TABLE:删除表
- CREATE INDEX:在表上建立索引
- DROP INDEX:删除索引
1.3 DCL用来控制数据库的访问
包括如下SQL语句:
- GRANT:授予访问权限
- REVOKE:撤销访问权限
- COMMIT:提交事务处理
- ROLLBACK:事务处理回退
- SAVEPOINT:设置保存点
- LOCK:对数据库的特定部分进行锁定
二、基本sql-select语句
学习目标
- 列举SQL SELECT 语句的功能
- 执行简单的选择语句
- SQL语言和SQL*Plus命令的不同
1.1 基本select语句
select *|{【DISTINCT] column|expression [alias],...}
from table;
•SELECT 标识 选择哪些列。
•FROM 标识从哪个表中选择。
1.2 选择全部列
查看表结构
desc employees;
选择全部列
select * from departments;
1.3 选择特定的列
SQL> select department_id,location_id
2 from departments;
DEPARTMENT_ID LOCATION_ID
------------- -----------
10 1700
20 1800
30 1700
40 2400
SQL> select employee_id,last_name,email
2 from employees;
EMPLOYEE_ID LAST_NAME EMAIL
----------- ------------------------- -------------------------
100 King SKING
101 Kochhar NKOCHHAR
102 De Haan LDEHAAN
103 Hunold AHUNOLD
104 Ernst BERNST
105 Austin DAUSTIN
106 Pataballa VPATABAL
107 Lorentz DLORENTZ
注意:
- sql语言大小写不敏感
- sql可以写在一行或多行
- 关键字不能被缩写也不能分行
- 各子句一般要分行写
- 所用缩进提高语句的可读性
2算术运算符
操作符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
数学运算
select 8*9 from dual;
查看表结构,标识为number可做运算
desc employees;
SQL> desc employees;
Name Type Nullable Default Comments
-------------- ------------ -------- ------- --------
EMPLOYEE_ID NUMBER(6)
FIRST_NAME VARCHAR2(20) Y
LAST_NAME VARCHAR2(25)
EMAIL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20) Y
HIRE_DATE DATE
JOB_ID VARCHAR2(10)
SALARY NUMBER(8,2) Y
COMMISSION_PCT NUMBER(2,2) Y
MANAGER_ID NUMBER(6) Y
DEPARTMENT_ID NUMBER(4) Y
查询工资,一年,加1000
select last_name,salary,12*salary + 1000
from employees;
LAST_NAME SALARY 12*SALARY+1000
------------------------- ---------- --------------
King 24000.00 289000
Kochhar 17000.00 205000
De Haan 17000.00 205000
Hunold 9000.00 109000
Ernst 6000.00 73000
Austin 4800.00 58600
Pataballa 4800.00 58600
Lorentz 4200.00 51400
Greenberg 12000.00 145000
Faviet 9000.00 109000
3操作符优先级
•乘除的优先级高于加减。
•同一优先级运算符从左向右执行。
•括号内的运算先执行。
SELECT last_name, salary, 12*salary+100
FROM employees;
LAST_NAME SALARY 12*SALARY+100
------------------------- ---------- -------------
Walsh 3100.00 37300
Feeney 3000.00 36100
OConnell 2600.00 31300
Grant 2600.00 31300
Whalen 4400.00 52900
Hartstein 13000.00 156100
--使用括号
SELECT last_name, salary, 12*(salary+100)
FROM employees;
LAST_NAME SALARY 12*(SALARY+100)
------------------------- ---------- ---------------
Walsh 3100.00 38400
Feeney 3000.00 37200
OConnell 2600.00 32400
Grant 2600.00 32400
Whalen 4400.00 54000
Hartstein 13000.00 157200
select last_name,salary,12*salary + 1000,12*(salary + 1000)
from employees;
LAST_NAME SALARY 12*SALARY+1000 12*(SALARY+1000)
------------------------- ---------- -------------- ---------
Walsh 3100.00 38200 49200
Feeney 3000.00 37000 48000
OConnell 2600.00 32200 43200
--空值不同于零,凡是空置参与运算的值为空(null)
select employee_id,last_name,commission_pct,salary*(1+commission_pct)
from employees
4列的别名
- 重命名一个列。
- 便于计算。
- 紧跟列名,也可以在列名和别名之间加入关键字‘AS’,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写
--起别名
select employee_id id,last_name name,12*salary annual_sal
from employees
ID NAME ANNUAL_SAL
------- ------------------------- ----------
196 Walsh 37200
197 Feeney 36000
198 OConnell 31200
199 Grant 31200
200 Whalen 52800
201 Hartstein 156000
202 Fay 72000
--大小写别名
select employee_id as "id",last_name "Name",12*salary annual_sal
from employees
id Name ANNUAL_SAL
------- ------------------------- ----------
196 Walsh 37200
197 Feeney 36000
198 OConnell 31200
199 Grant 31200
200 Whalen 52800
5 连接符
- 把列与列,列于字符连接在一起。
- 用 ’||‘ 表示
- 可以用来‘合成’列
--连接符
select last_name || '`s email is '||job_id as details
from employees
-----------------------------------------------
Walsh`s email is SH_CLERK
Feeney`s email is SH_CLERK
OConnell`s email is SH_CLERK
Grant`s email is SH_CLERK
Whalen`s email is AD_ASST
Hartstein`s email is MK_MAN
Fay`s email is MK_REP
Mavris`s email is HR_REP
Baer`s email is PR_REP
Higgins`s email is AC_MGR
Gietz`s email is AC_ACCOUNT
6.字符串
-
字符串可以是select列表中的一个字符,数字,日期
-
日期和字符只能在单引号中出现
-
每当返回一行时,字符串被输出一次
--字符串 select last_name||'`s hire_date is '|| hire_date as "details" from employees details ------------------------------------------------------- Walsh`s hire_date is 24-4月 -98 Feeney`s hire_date is 23-5月 -98 OConnell`s hire_date is 21-6月 -99 Grant`s hire_date is 13-1月 -00 Whalen`s hire_date is 17-9月 -87 Hartstein`s hire_date is 17-2月 -96 Fay`s hire_date is 17-8月 -97
7.重复行
--默认情况下,查询会返回全部行,包括重复行
select department_id
from employees
DEPARTMENT_ID
-------------
50
50
50
50
10
--去重,在 SELECT 子句中使用关键字 ‘DISTINCT’ 删除重复行。
select distinct department_id
from employees
DEPARTMENT_ID
-------------
100
30
90
20
70
110
50
80
40
60
10
12 rows selected
三、SQL 语句与 SQL*Plus 命令
SQL 一种语言 ANSI 标准 关键字不能缩写 使用语句控制数据库中的表的定义信息和表中的数据 |
SQL*Plus 一种环境 Oracle 的特性之一 关键字可以缩写 命令不能改变数据库中的数据的值 集中运行 |
---|
SQL:Structural query language
使用SQL*Plus可以:
- •描述表结构。
- •编辑 SQL 语句。
- •执行 SQL语句。
- •将 SQL 保存在文件中并将SQL语句执行结果保存在文件中。
- •在保存的文件中执行语句。
- •将文本文件装入 SQL*Plus编辑窗口。
四、使用 DESCRIBE 命令,表示表结构
SQL> DESC EMPLOYEES;
Name Type Nullable Default Comments
-------------- ------------ -------- ------- --------
EMPLOYEE_ID NUMBER(6)
FIRST_NAME VARCHAR2(20) Y
LAST_NAME VARCHAR2(25)
EMAIL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20) Y
HIRE_DATE DATE
JOB_ID VARCHAR2(10)
SALARY NUMBER(8,2) Y
COMMISSION_PCT NUMBER(2,2) Y
MANAGER_ID NUMBER(6) Y
DEPARTMENT_ID NUMBER(4) Y
标签:12,employees,email,第一课,SQL,oracle,ID,select
From: https://www.cnblogs.com/youth402/p/17378088.html