俗话说语言是从简单到复杂的演化所以首先我们了解一下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常用的基本数据类型
字符类型:
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,'三岁会撩人','男');