查看系统时间
SELECT sysdate FROM dual;
导入Oracle数据库脚本文件
@盘符:/文件路径/数据库脚本文件名称
为了方便导入,可以把脚本文件放在里盘根最近且不带有中文与空格的目录下
导入时只能一次导入一个文件这样
@d:/sql/del_data.sql
@d:/sql/hr_cre.sql
@d:/sql/hr_popul.sql
在PLSQL的工具中导入可能会发生这样的警告
无视就好
查看我们脚本创建的数据是否存在
SELECT * FROM employees;
共107条记录
如果不是这个总记录数,
是因为没有按照上面指定的顺序执行sql脚本
SQL语句分为以下三种类型:
DML: Data Manipulation Language 数据操纵语言
DDL: Data Definition Language 数据定义语言
DCL: Data Control Language 数据控制语言
DML
DML用于查询与修改数据记录,
包括如下SQL语句:
INSERT:添加数据到数据库中
UPDATE:修改数据库中的数据
DELETE:删除数据库中的数据
SELECT:选择(查询)数据
SELECT是SQL语言的基础,最为重要。
DDL
DDL用于定义数据库的结构,
比如创建、修改或删除数据库对象,
包括如下SQL语句:
CREATE TABLE:创建数据库表
ALTER TABLE:更改表结构、添加、删除、修改列长度
DROP TABLE:删除表
CREATE INDEX:在表上建立索引
DROP INDEX:删除索引
DCL
DCL用来控制数据库的访问,
包括如下SQL语句:
GRANT:授予访问权限
REVOKE:撤销访问权限
COMMIT:提交事务处理
ROLLBACK:事务处理回退
SAVEPOINT:设置保存点
LOCK:对数据库的特定部分进行锁定
基础查询SQL
SELECT 通配符 * | 去重[DISTINCT] 一个列 或者 多个列 | 表达式
FROM 数据表名
查询所有列
SELECT * FROM emplyees;
如果语句写错,就会有无法查到的提示
查询某一部分的列
SELECT employee_id,last_name,email FROM employees;
为了可读性,可以分段书写
SELECT employee_id,last_name,email
FROM employees;
Oracle的SQL规范
- 1、SQL 语言大小写不敏感。
- 2、SQL 可以写在一行或者多行
- 3、关键字不能被缩写也不能分行
- 4、各子句一般要分行写。
- 5、使用缩进提高语句的可读性。
SQL运算符
数字和日期均可以使用 加、减、乘、除
+ - * /
优先级关系:
括号 > 乘 > 除 > 加 > 减
运算字段处理
SELECT last_name, salary, salary + 300
FROM employees;
优先级运算
SELECT last_name, salary, 12*(salary+100)
FROM employees;
括号运算
SELECT last_name, salary, 12*(salary+100)
FROM employees;
特殊值 空值 NULL
空值是一个特殊的值,在MySQL中会显示为NULL
但是在Oracle中,则不显示,就表示为NULL
- NULL是无效的,未指定的,未知的或不可预知的值
- NULL不是空格 或者 0
查询空值结果
SELECT last_name, job_id, salary, commission_pct
FROM employees;
注意!!!空值参与的运算,结果都将会为空
SELECT last_name, 12*salary*commission_pct FROM employees;
数据列的别名 Column Alias
- 1、重命名一个列,提高SQL语句的可读性
- 2、便于计算
- 3、紧跟列名,也可以在列名和别名之间加入关键字‘AS’,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
这里可以不使用引号修饰,均以小写声明别名
SELECT last_name AS name, commission_pct comm
FROM employees;
如这样,别名的字符包含了 特殊字符、大小写、空格,必须要使用双引号修饰
SELECT last_name "Name", salary*12 "Annual Salary"
FROM employees;
连接符 Connect
- 用来将列与列,列与字符连接在一起。
- 使用 ‘||’表示。
- 可以用来‘合成’列。
【在MySQL中是使用CONCAT()函数进行操作,列作为参数传入进行拼接】
SELECT last_name||job_id AS "Employees"
FROM employees;
字符串 String
- 1、字符串可以是 SELECT 列表中的一个字符,数字,日期。
- 2、日期和字符只能在单引号中出现。
- 3、每当返回一行时,字符串被输出一次。
我们可以这样拼接出一个句子
SELECT
last_name||' is a '||job_id AS "Employee Details"
FROM
employees;
去除重复的记录行 DISTINCT
SELECT DISTINCT department_id
FROM employees;
可以看到这一个特殊的地方:
空值也是可以被分为一个重复的记录行
表结构查看 show table structure
查看数据表的表结构
DESCRIBE employees;
或者使用简写 【MySQL 中也是这样的写法】
DESC employees;
要注意的是,这个语句在SQL窗口无法执行
SQL PLUS的作用
- 描述表结构。
- 编辑 SQL 语句。
- 执行 SQL语句。
- 将 SQL 保存在文件中并将SQL语句执行结果保存在文件中。
- 在保存的文件中执行语句。
- 将文本文件装入 SQL*Plus编辑窗口。
SQL 语句与 SQL*Plus 命令的区别?
- SQL
是一种语言 ANSI 标准
关键字不能缩写
使用语句控制数据库中的表的定义信息和表中的数据
- SQL*Plus
一种环境
Oracle 的特性之一
关键字可以缩写
命令不能改变数据库中的数据的值
集中运行