发布时间:2023-01-20 09:00
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,'三岁会撩人','男');
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 广东省深圳市