ORACLE基本表操作常用语句整理

俗话说语言是从简单到复杂的演化所以首先我们了解一下ORACLE数据库四大类的概念

DDL --(Data Definition Language)数据定义语言
DML --(Data Manipulation Lanauage)数据操作语言
DCL --(Data Control Lanauage)数据控制语言
TCL --(Transaction Control Lanauage)事务控制语言
--常用的DDL语句包括
create table --创建数据库表
create index --创建数据库表的索引
drop table --删除数据库表
drop index --删除数据库表的索引
truncate --删除表中的所有数据
alter table --更改表结构,增加,删除,修改列
--常用的DML语句包括
INSERT --添加数据到数据库中
UPDATE --修改数据库中的数据
DELETE --修改数据库中的数据
SELECT --选择(查询)数据,这也是SQL语言的基础最重要
--常用的DCL语句控制语言
GRANT --将权限或角色授予用户或者其他角色(授予访问权限)
REVOKE --从用户或数据库角色挥手权限(撤销访问权限)
LOCK --对数据库的特定部分进行锁定
--常用的TCL语句
COMMIT --提交事务处理
ROLLBACK --事务处理回滚
SAVEPOINT --设置保存点

一、ORACLE表创建及数据类型解析

ORACLE常用的基本数据类型

字符类型:
CHAR 固定长度的字符串,列长度可以是1-2000个字节
VARCHAR2 可变长度的字符串,列长度最大4000个字节
数值类型:
NUMBER[(p[,s])] P表示精度,S表示小数点的位数最高精度为38位
举例:
NUMBER(5,0)最大可存储五位整数
NUMBER(5,2)最大可存储999.99的浮点数,前后减就是整数个数
LOB类型:
CLOB 可存储大量的字符数据
BLOB 可存储较大的二进制对象如图形、视频剪辑和声音文件

数据库表的操作--创建表

基本语法结构
CREATE TABLE TABLE_NAME
(
  COLUMN_NAME DATATYPE,
  ...
)
举例:一张学生信息表包含表字段跟数据类型(学号、性别、性别、出生日期、家庭住址等)语法结构如下:
Create Table Student(
  SID NUMBER(8,0),
  NAME VARCHAR2(20),
  SEX CHAR(2),
  BIRTHDAY DATE,
  ADDRESS VARCHAR2(50)
);

ORACLE表操作--约束

主键约束:PRIMARY KEY CONSTRAINT 用于定义基本表的主键,是唯一确定表中每一记录的标识符,不可为NULL,也不可重复可由多个列组成
唯一性约束:UNIQUE CONSTRAINT   用于指定一个或者多个列的组合值具有唯一性,防止输入重复的值,比如身份证
默认约束:DEFAULT CONSTRAINT    
非空约束:NOT NULL CONSTRAINT   简写NOT NULL,不允许值为空
检查约束:CHECK CONSTRAINT      对输入列或整个表中的值设置检查条件,比如性别(男、女)
外键约束:FOREIGN KEY CONSTRAINT 用于建立和加强俩个表数据之间的连接的一列或者多列 REFERENCE关联表关键字

下面将举几个列子再来熟悉一下约束的理念

举例:创建表时添加主键约束
Create Table Student(
  SID NUMBER(8,0),
  NAME VARCHAR2(20),
  SEX CHAR(2),
  BIRTHDAY DATE,
  ADDRESS VARCHAR2(50),
  CONSTRAINT SID_PK PRIMARY KEY(SID)
);
修改表添加主键约束:解析也就是更改学生表在这个表中添加SID为主键
基本语法结构ALTER TABLE TABLE_NAME ADD CONSTRAINT PK_NAME PRIMARY KEY(列名);
举例:ALTER TABLE Student ADD CONSTRAINT PK_SID PRIMARY KEY(SID);
创建表时添加非空约束俩种写法,第二种是重新给了个约束名,推荐使用第一种就够了
Create Table Student(
  SID NUMBER(8,0),
  NAME VARCHAR2(20) NOT NULL,
  SEX CHAR(2) CONSTRAINT S_SEX NOT NULL,
  BIRTHDAY DATE,
  ADDRESS VARCHAR2(50),
  CONSTRAINT SID_PK PRIMARY KEY(SID)
);
修改表添加非空约束:解析也就是在学生表中添加NAME非空,不同的是这里采用MODIFY
基本语法结构:ALTER TABLE TABLE_NAME MODIFY (列名 DATATYPE NOT NULL);
举例:ALTER TABLE Student MODIFY (SEX CHAR NOT NULL);
唯一性约束的注意事项:使用唯一性约束的列允许为空值;一个表中可以允许有多个唯一约束;可以吧唯一性约束定义在多个列上
Create Table Student(
  SID NUMBER(8,0),
  EMAIL VARCHAR2(50) UNIQUE,
  cardID VARCHAR2(18),
  CONSTRAINT UK_CARDID UNIQUE(cardID)
);
修改表添加唯一约束:解析也就是更改学生表在这个表中添加SID为主键
基本语法结构:ALTER TABLE TABLE_NAME ADD CONSTRAINT UK_NAME UNIQUE(列名)
举例:ALTER TABLE Student ADD CONSTRAINT UK_CARDID UNIQUE(cardID);
创建表时设置检查约束
Create Table Student(
  SID NUMBER(8,0),
  NAME VARCHAR2(20) NOT NULL,
  SEX CHAR(2) CHECK(SEX='男',SEX='女'),
  BIRTHDAY DATE,
  ADDRESS VARCHAR2(50),
  cardID VARCHAR2(18),
  CONSTRAINT CK_SEX CHECK(SEX='男',SEX='女')
);
修改表时添加检查约束
基本语法结构:ALTER TABLE TABLE ADD CONSTRAINT CK_NAME CHECK(COLUMN_NAME='VALUE',COLUMN_NAME1='VALUE')
举例:ALTER TABLE Student ADD CONSTRAINT CK_SEX CHECK(SEX='男',SEX='女'))
创建表时设置外键约束
主表
Create Table Department(
  Depid varchar2(10) primary key,
  Depname varchar2(30)
);
从表
Create Table Student(
  SID NUMBER(8,0),
  Depid varchar2(10),
  BIRTHDAY DATE,
  ADDRESS VARCHAR2(50),
  cardID VARCHAR2(18),
  CONSTRAINT FK_DEPID FOREIGN KEY(Depid)
  REFERENCE Department(Depid)
  on delete cascade --删除
);
ALTER TABLE Student CONSTRAINT FK_DEPID FOREIGN KEY(Depid) REFERENCE Department(Depid)

有了约束之后可能有时不需要了怎么办?继续往下看

暂时激活无效化约束的方式
DISABLE|ENABLE CONSTRAINT CONSTRAINT_NAME
将约束彻底删除
DROP CONSTRAINT CONSTRAINT_NAME
删除非空约束的方式需要注意一下
ALTER TABLE TABLE_NAME
MODIFY (COLUMN DATATYPE NULL);

ORACLE表操作--对表单中的数据增删改查

--添加列
语法结构:ALTER TABLE TABLE_NAME add 列名 DataType ([NOT] NULL);
举例:ALTER TABLE Student ADD cardID VARCHAR2(18);
--修改列
语法结构:ALTER TABLE TABLE_NAME MODIFY 列名 NewDataType;
举例:ALTER TABLE Student MODIFY SID NUMBER(11,2);
--删除列
语法结构:ALTER TABLE TABLE_NAME DROP COLUMN 列名;
举例:ALTER TABLE Student DROP COLUMN SID;
--修改列名
语法结构:ALTER TABLE TABLE_NAME RENAME COLUMN 列名 TO 新列名
举例:ALTER TABLE Student RENAME COLUMN Sex TO Gender;
--删除表三种方式
TRUNCATE TABLE TABLE_NAME;用于删除表中的全部数据,不删除表结构,比DELETE方式删除数据速度要快,也叫截断表
DROP TABLE TABLE_NAME;删除表结构及数据
--添加内容 这里需要注意没有指定列时不能为空
INSERT INTO TABLE_NAME [(列1,列2,...,列n)] VALUES((值1,值2,...,值n));
INSERT INTO TABLE_NAME VALUES((值1,值2,...,值n));
举例:INSERT INTO Student (SID,NAME,SEX)VALUES(201909071314,'三岁会撩人','男');

二、我们回顾文章上半部分创建表基本操再向这个表中插入一部分测试数据方便学习

INSERT INTO Student (SID,NAME,SEX,BIRTHDAY,ADDRESS)VALUES(20190901,'三岁会撩人','男',to_date('20190907','YYYYMMDD'),'广东省深圳市');
INSERT INTO Student VALUES(20190902,'MRlIQUOR','男',to_date('20190907','YYYYMMDD'),'广东省深圳市');
INSERT INTO Student VALUES(20190905,'ZhangShan','女',to_date('20190907','YYYYMMDD'),'广东省深圳市');
INSERT INTO Student VALUES(20190907,'WangLaoWu','男',to_date('20190907','YYYYMMDD'),'广东省深圳市');
Select * From Student 
不加任何条件最简单的查询语句查询结果如下:
1	20190901	三岁会撩人	男	2019/9/7	广东省深圳市
2	20190902	MRlIQUOR	男	2019/9/7	广东省深圳市
3	20190905	ZhangShan	女	2019/9/7	广东省深圳市
4	20190907	WangLaoWu	男	2019/9/7	广东省深圳市

基本的Select语法结构及运用

--查询一张表所有的信息 解析可得不加任何条件
语法格式:SELECT * FROM TABLE_NAME;
举例:SELECT * FROM Student --查询出学生表中的所有信息
--查询一张表中特定列的基本信息 解析可得查出指定列
语法格式:
SELECT (COLUMN A,COLUMN B) FROM TABLE_NAME --使用的时候()省略不写
举例:SELECT SID,NAME FROM Student; --查询全体学生的学号及姓名

基本的UPDATE语法结构及运用

--修改(更新)表单数据
--更新前我们查看一下上一次表中的数据方便于后期修改
Select * From Student
1 20190901  三岁会撩人 男 2019/9/7  广东省深圳市
2 20190902  MRlIQUOR  男 2019/9/7  广东省深圳市
3 20190905  ZhangShan 女 2019/9/7  广东省深圳市
4 20190907  WangLaoWu 男 2019/9/7  广东省深圳市
--修改表中所有该表字段的信息 解析就是不加任何条件
语法格式:UPDATE TABLE_NAME SET 列='VALUE'
举例:UPDATE Student SET BIRTHDAY=to_date('20190906','YYYYMMDD'); --修改Student表中BIRTHDAY所有的数据
SELECT * FROM Student结果如下
1	20190901	三岁会撩人	男	2019/9/6	广东省深圳市
2	20190902	MRlIQUOR	男	2019/9/6	广东省深圳市
3	20190905	ZhangShan	女	2019/9/6	广东省深圳市
4	20190907	WangLaoWu	男	2019/9/6	广东省深圳市
--根据条件修改表中所有该表字段的信息
语法格式:UPDATE TABLE_NAME SET 列='VALUE' WHERE 条件 --需要注意的是这个条件可多种写法,想学习的往下走哈
举例:UPDATE Student SET NAME='HELLO WORD' WHERE NAME='三岁会撩人'; --表字段NAME=‘三岁会撩人’修改为‘HELLO WORD’
SELECT * FROM Student结果如下
1	20190901	HELLO WORD	男	2019/9/6	广东省深圳市
2	20190902	MRlIQUOR	男	2019/9/6	广东省深圳市
3	20190905	ZhangShan	女	2019/9/6	广东省深圳市
4	20190907	WangLaoWu	男	2019/9/6	广东省深圳市

基本的DELETE语法结构及运用

--删除表中所有信息操作需要注意的是DELETE后面跟FROM,但有一个缺点就是自增不会继续,但是重启SQL服务可以继续进行
语法格式:DELETE FROM TABLE_NAME
举例:DELETE FROM Student; --删除Student表中所有的数据
SELECT * FROM Student; --再次进行查询这个表结果为空没错就是这样子
--删除表中指定的表字段信息
语法格式:DELETE FROM TABLE_NAME WHERE 列='VALUE'
举例:DELETE FROM Student WHERE SID=20190901; --删除Student表中字段SID='20190901'的所有信息
SELECT * FROM Student; --再次进行查询这个表该信息已被删除
1 20190902  MRlIQUOR  男 2019/9/7  广东省深圳市
2 20190905  ZhangShan 女 2019/9/7  广东省深圳市
3 20190907  WangLaoWu 男 2019/9/7  广东省深圳市
发布了35 篇原创文章 · 获赞 16 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/qq_38795430/article/details/97576513