ORACLE学习(九)

本文详细介绍了数据库查询语言DQL、控制语言DCL、定义语言DDL、操作语言DML以及事务处理语言DTL,包括如何以超级管理员身份登录数据库、创建与管理表、设置约束以及执行增删改查操作。同时,讲解了各种数据类型和约束类型,提供了丰富的示例,帮助读者深入理解数据库管理的基础知识。
摘要由CSDN通过智能技术生成

数据库语言:

DQL 数据库查询语言 :简单查询 限定查询 。。。。

DCL 数据库控制语言 :赋权 GRANT 权限 TO 用户

回收 REVOKE 权限 FROM 用户

DDL 数据库定义语言 :创建 CREATE 、 删除 DROP 、修改 ALTER ...

DML 数据库操作语言 :插入 INSERT

DTL 数据事务语言:

更新 UPDATE

删除 DELETE

合并 MERGE

TPL/TCL 事务处理/控制语言 :

commit 提交

rollback 回滚

DCL --数据库控制语言

注:只有数据库超级管理员才有权限进行赋权和回收权限

如何以超级管理员的身份登录数据库 ?

1、window+r呼出运行窗口 输入cmd打开命令窗口

2、在命令行中 输入 SQLPLUS / AS SYSDBA 敲回车就用超级管理员登录到了数据库

3、GRANT 要赋予的权限 TO 接受权限的用户 --赋权

4、REVOKE 要回收的权限 FROM 回收权限的用户 --回收权限

DDL 数据库定义语言

表 table

视图 view

序列 sequence

-----表

创建表:复制表

手动创建表

复制表:语法:CREATE TABLE 表名 AS SELECT ....

--创建一张表emp_1 数据通emp

CREATE TABLE EMP_1 AS SELECT * FROM EMP;

SELECT * FROM EMP_1;

--创建表emp10 emp20 emp30 数据分别是emp中10 20 30部门的数据

--创建表T 是emp和dept关联之后的数据

CREATE TABLE T AS SELECT E.*,DNAME,LOC FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO;

SELECT * FROM T;

--只复制表结构 不复制表数据 只需要在where后面加一个不成立的条件

创建空表emp_null 结构同emp

CREATE TABLE EMP_NULL AS SELECT * FROM EMP WHERE 1=2;

SELECT * FROM EMP_NULL;

名字的命名规则:

驼峰式(每个首字母大写) ZhangSan

下划线式 ZHANG_SAN_LAI_ZI_HENAN

手动创建表

CREATE TABLE 表名(列1 类型长度[约束],列2 类型长度 [约束]....)

数据类型:

数值型 NUMBER[数1[,数2]] 会四舍五入

数1表示长度 数2表示小数的位数 不写数2默认是整数

数1最大精度是38

数1最大可以为126 但是精度还是38

int 整数 只能存整数

字符型 char([数]) 定长字符

最多可以存储2000个字节的字符 数不写默认是1

位数不足使用空格补齐

VARCHAR/VARCHAR2(数) 变长字符

最多可以存储4000个字节的字符 数不能不写

位数不足的时候 直接存储

--二者的区别?

char读取的速度快 但是浪费时间

varchar/varchar2 速度慢 但是节省空间

char(5) AB 三个空格加起来总长度=5

varchar(5) ab 直接就存储ab 不会用空格补齐到5个字节

日期型 date --由一个9个字节组成的定宽的如期时间类型

世纪 年 月 日 时 分 秒

timestamp 时间戳

比date更加的精确 还存储了时区

SELECT SYSTIMESTAMP FROM DUAL;

大对象:clob 字符大对象 用char存储 如:文本文档 txt xml

blob 二级制大对象 用二进制存储 如:视频 音频 图片

-创建一个学生表 stu

CREATE TABLE STU(STU_ID NUMBER(5), --学生编号 类型长度为5

stu_name VARCHAR2(20),-- 学生姓名 长度最大为20

STU_CLASS CHAR(18), --班级 长度为18

STU_BITH DATE ,--

STU_PIC BLOB

);

SELECT * FROM STU;

约束 CONSTRAINT

作用:保证数据满足业务的需求 保证数据的合理性 合法性

分类:主键约束 PRIMARY KEY pk_ 唯一且非空 注:一个表只能有一个主键

非空约束 not null nn_ 注:不能为空

唯一约束 unique un_ 注:值要唯一(可以为空)

检查约束 check ck_ 给她一个条件

外键约束 foreign key fk_ 注:基于主表中主键列(用于预防破坏表之间连接行为,也能防止非法数据插入外键列,因为他必须是指向那个表中的值之一)

默认值 default

--非列模式 不带约束名

CREATE TABLE STU1(STU_ID NUMBER(5) PRIMARY KEY,

STU_NAME VARCHAR2(20) NOT NULL,

STU_SEX CHAR(6) CHECK(STU_SEX IN('男','女','其他')),

STU_CLASS VARCHAR2(18) UNIQUE NOT NULL,

STU_BITH DATE DEFAULT SYSDATE

);

SELECT * FROM STU1;

--非列模式 带约束名

CREATE TABLE STU2(STU_ID NUMBER(5) CONSTRAINT PK_1 PRIMARY KEY,

STU_NAME VARCHAR2(20) CONSTRAINT NN_1 NOT NULL,

STU_SEX CHAR(6) CONSTRAINT CK_1 CHECK(STU_SEX IN('男','女','其他')),

STU_CLASS VARCHAR2(18) CONSTRAINT UN_1 UNIQUE NOT NULL,

STU_BITH DATE DEFAULT SYSDATE

--默认值不能起别名

);

--列模式 不带约束名

CREATE TABLE STU3(STU_ID NUMBER(5), --学生编号 类型长度为5

stu_name VARCHAR2(20),-- 学生姓名 长度最大为20

STU_SEX CHAR(6),

STU_CLASS CHAR(18), --班级 长度为18

STU_BITH DATE DEFAULT SYSDATE,--

PRIMARY KEY(STU_ID),

CHECK (STU_NAME IS NOT NULL),

CHECK(STU_SEX IN('男','女','其他')),

UNIQUE(STU_CLASS),

CHECK(STU_CLASS IS NOT NULL)

);

注:默认值不能使用列模式 非空使用列模式要变为检查

外键约束和复合主键只能使用列模式创建

复合主键:多个列在一起共同充当主键 起到唯一且非空的作用

primary key(stu_id,stu_class)

--列模式 带约束名

CREATE TABLE STU4(STU_ID NUMBER(5), --学生编号 类型长度为5

stu_name VARCHAR2(20),-- 学生姓名 长度最大为20

STU_SEX CHAR(6),

STU_CLASS CHAR(18), --班级 长度为18

STU_BITH DATE DEFAULT SYSDATE,--

CONSTRAINT NN_10 CHECK (STU_NAME IS NOT NULL),

CONSTRAINT CK_10 CHECK(STU_SEX IN('男','女','其他')),

CONSTRAINT PK_10 PRIMARY KEY(STU_ID,STU_CLASS)

);

--增加约束

ALTER TABLE 表名 ADD[CONSTRAINT 约束名] 约束类型(列)

alter TABLE STU ADD CONSTRAINT PK_11 PRIMARY KEY(STU_ID);

--约束的重命名

ALTER TABLE 表名 RENAME CONSTRAINT 旧名 TO 新名

ALTER TABLE STU RENAME CONSTRAINT PK_11 TO PK_STU_1;

ALTER TABLE STU1 RENAME CONSTRAINT SYS_C0011252 TO PK_STU1_1;

--约束的启用和禁用

ALTER TABLE 表名 DISABLE/ENABLE CONSTRAINT 约束名

ALTER TABLE STU1 DISABLE CONSTRAINT PK_STU1_1;

--修改为空 默认值 列的类型长度

ALTER TABLE 表名 MODIFY 列名 类型长度[[DEFAULT 值][NOT NULL|NULL]]

ALTER TABLE STU MODIFY STU_CLASS CHAR(20) NOT NULL;

注:修改列的数据类型 那么该列必须是空的

要修改列可为空 那么该列现在必须是非空的

varchar2可以改长 如果要改短 必须不短于列中已知值的最大长度

number要修改长度 此列必须为空

--删除约束

ALTER TABLE 表名 DROP CONSTRAINT 约束名

ALTER TABLE STU DROP CONSTRAINT PK_STU_1;

--增加列

ALTER TABLE 表名 ADD(列 类型长度,列2 类型长度...)

ALTER TABLE STU ADD(A1 NUMBER(4),B1 CHAR(12),C1 DATE);

--列的重命名

ALTER TABLE 表名 RENAME COLUMN 旧名 TO 新名

ALTER TABLE STU RENAME COLUMN A1 TO A222;

--删除列

ALTER TABLE 表名 DROP COLUMN 列名 --删除单个列

ALTER TABLE 表名 DROP (列1,列2。。。) --删除多个列

ALTER TABLE STU DROP COLUMN C1;

ALTER TABLE STU DROP(A222,B1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟德斯鸠的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值