1. sql 和 pl/sql概念
SQL(Structured Query Language) 结构化查询语言 可分为:
- 数据定义语言 (DDL) :Data Definition Language
- 数据操纵语言(DML) : Data Manipulation Language
- 事务控制语言(TCL) : Transaction Control Language
- 数据查询语言(DQL) : Data Query Language
- 数据控制语言 (DCL) :Data Control Language
数据定义语言 (DDL) :用于定义和管理数据库对象(如表、索引、视图等),
允许用户创建、修改和删除数据库结构,但不涉及数据操作
DDL操作通常会自动提交,一旦执行DDL语句,更改将立即生效,无法撤销
- CREATE:用于创建数据库对象,如表、索引、视图、序列等
- ALTER:用于修改现有数据库对象的结构
- DROP:用于删除数据库对象
- TRUNCATE:用于删除表中的所有数据,但保留表结构
- RENAME:用于重命名数据库对象
数据操作语言 (DML) :用于改变数据表中的数据
和事务相关,执行完后需要经过事务控制语句提交后才真正的将改变应用到数据库中,包括:
- INSERT: 将数据插入到数据表中
- UPDATE:更新数据表中已存在的数据
- DELETE:删除数据表中的数据
事务控制语言 (TCL) :用来维护数据一致性的语句,包括:
- COMMIT: 提交,确认已经进行的数据改变
- ROLLBACK: 回滚,取消已经进行的数据改变
- SAVEPOINT: 保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变
数据控制语言 (DCL) :用于执行权限的授予和收回操作,包括:
- GRANT: 授予,用于给用户或角色授予权限
- REVOKE: 用于收回用户或角色已有的权限
- CREATE USER: 创建用户
PL/SQL定义
把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或计算的程序语言
是Oracle数据库对SQL语句的扩展,在普通SQL语句的使用上增加了编程语言的特点
2.常用数据类型
2.1 NUMBER
表示数字类型,经常被定义成NUMBER (P,S)形式,其中:
- P表示数字的总位数
- S表示小数点后面的位数
例如在表emp中的sal列的定义 sal NUMBER(6,2)
表示sal列中的数据,整数位最大为4位,小数位最大位数是2位,也就是最大取值: 9999.99
2.2 CHAR
表示固定长度的字符类型,经常被定义成CHAR(N)形式
- N表示占用的字节数最大长度是2000字节
例如在表emp中的ename列的定义如下 ename CHAR(20)
表示ename列中最多可存储20个字节的字符串,并且占用的空间是固定的20个字节
2.3 VARCHAR2
表示变长的字符类型,定义格式是VARCHAR2(N)
- N表示最多可占用的字节数,最大长度是4000字节
例如在表emp中的job列的定义如下 job VARCHAR2(100)
表示job列中最多可存储长度为100个字节的字符串
根据其中保存的数据长度,占用的空间是变化的,最大占用空间为100个字节
2.4 DATE
用于定义日期时间的数据长度是7个字节
默认格式是: DD-MON-RR,例如:11-04月-17
例如在表emp中的hiredate列的定义如下 hiredate DATE
表示hiredate列中存放的是日期数据
--查询系统日期和时间
select sysdate from dual
3.SQL注释
/*
多行注释
多行注释
*/
-- 单行注释
4.CREATE 建表语句
create table 建表语句格式如下:
CREATE TABLE [schema.]table_name(
column_name datatype [DEFAULT expr],...
);
create table student (
id number(4) not null, #非空 not null
name varchar2(40),
gender char(1) default 'm', #默认值 default
height number(3,2),
birth date
)
drop table student; #删除student表格
5. alter table 修改表语句
--修改表
--修改表名,修改列名,添加列,修改列(数据据类型,长度,默认值),删除列
--把student表名修改为students
rename student to students;
--添加address列
alter table students add address varchar2(2);
--修改列长度和默认值
alter table students modify address varchar2(10) default 'address1';
--修改列数据类型
alter table students modify address char(10);
--修改列名为stu_address
alter table students rename column address to stu_address;
--删除列
alter table students drop column stu_address;
踩坑:出于安全考虑,oracle不允许删除sys中数据表的列
关于授予权限的相关操作可以参考以下文档:
https://blog.csdn.net/Ryan_black/article/details/105628695