![4311290b5598c803d98fe9bb5e6626d4.png](https://i-blog.csdnimg.cn/blog_migrate/8629d89e3f1ffc5dd70c704114a17e9b.png)
(感谢观看,希望你我每一天都在成长,每一天都在充实自己)
操作用户和权限
--1.1用户的创建
--语法:create user 用户名 identified by 密码;
--注意:需要有DBA权限才能创建用户,比如超级权限sys,又或者权限管理system,如果不是可以切换,点左上角钥匙.
--在计算机命令也可以切换,运行栏输入:sqlpuls,输入你现在的用户和口令,在输入conn 你需要切换的权限用户.
--实例:创建一个用户为bzzymsk,设定密码为zymsk.
create user bzzymsk identified by zymsk;
--1.2给用户权限
--Oracle中的权限很多,为了方便用户管理权限,提供了角色这个概念:
--角色代表一个身份,该身份拥有固定的权限,常见的角色:
--DBA:数据库管理员
--CONNECT:临时用户,拥有少量权限
--RESOURCE:比较靠谱的用户,拥有更多的权限,不能管理数据库.
--授权举例说明:给bzzymsk用户授予普通用户权限
--不授权不能登录.
grant connect,resource to bzzymsk;--grant(授予) connect(连接)
grant dba to bzzymsk;
--撤销权限
revoke resource from bzzymsk;
--删除用户
drop user bzzymsk;
--修改用户密码:
alter user bzzymsk identified by 123;
--锁定用户和解锁定用户.
--锁定
alter user bzzymsk account lock;
--解锁用户
alter user bzzymsk account unlock;
数据库表
--数据库表字段的数据类型
--字符数据类型
--CHAR:存储固定长度的字符串
--VARCHAR2:存储可变长度的字符串.
--2.1:创建表格:字段包含学号,姓名,年龄,入学日期,班级,emil信息
create table stubent (
sno number(4),
sname varchar2(12),
gender char(3),
age number(3),
sdate date,
clazz varchar2(20),
email varchar2(50)
);
select * from stubent;
修改表格
--2.2.1:添加字段
alter table stubent add (score number(3));
--2.2.2:修改字段的类型.
alter table stubent modify (score number(5,2));
--2.2.3:重命名列
alter table stubent rename column score to fenshu;
--2.2.4: 删除字段
alter table stubent drop column fenshu;
--2.2.5:重命名表格
rename stubent to student;
--2.2.6:删除表格
drop table student;
表格的约束
--3.1:constraints,约束,用于对表格的数据进行限制,保证表格数据的完整性和一致性.
数据库表字段的数据类型:
1• 字符数据类型
2• CHAR:存储固定长度的字符串.
3• VARCHAR2 :存储可变长度的字符串.
数值数据类型.
NUMBER:存储整数和浮点数,格式为NUMBER(p, s) • column_name NUMBER { p = 38, s = 0} •column_name NUMBER (p) {整数} column_name NUMBER (p, s) {浮点数} • 日期时间数据类型
DATE:存储日期和时间数据.
7• TIMESTAMP:比DATE更精确.
8• LOB数据类型.
9• BLOB:存储二进制对象,如图像、音频和视频文件.
10• CLOB:存储字符格式的大型对象.
![9e598c142ad91f8612cc1a9e2b3cadb1.png](https://i-blog.csdnimg.cn/blog_migrate/82e5983118a631fd2c8ca0146f59fd2d.jpeg)
![c773f44d41d18e51382b5d9f1fe41dbe.png](https://i-blog.csdnimg.cn/blog_migrate/7411ba3a2541d0979b9c492fa9009913.jpeg)
数据完整性约束
1.表的数据有一定的取值范围和联系,多表之间的数据有时也有一定的参照关系。
2.在创建表和修改表时,可通过定义约束条件来保证数据的完整性和一致性。
3.约束条件是一些规则,在对数据进行插入、删除和修改时要对这些规则进行验证,从而起到
约束作用。
![31eb8e300b4dc1f80b58071138f7671a.png](https://i-blog.csdnimg.cn/blog_migrate/62e48a9a01b4b50a4f1b60d765e66eea.jpeg)
完整性约束分类
1.域完整性约束(非空not null,检查check)
2.实体完整性约束(唯一unique,主键primary key)
3.参照完整性约束(外键foreign key)
![57ce25caacbd1e6514acc9d1d75c11c0.png](https://i-blog.csdnimg.cn/blog_migrate/c15b2817c14f8f959f87d1d4d4eeecc8.jpeg)
主键约束
1.主键约束是数据库中最重要的一种约束。在关系中,主键值不可为空,也不允许出现重复,
即关系要满足实体完整性规则。
2.主键从功能上看相当于非空且唯一
3.一个表中只允许一个主键
4主键是表中能够唯一确定一个行数据的字段
5.主键字段可以是单字段或者是多字段的组合
6.Oracle为主键创建对应的唯一性索引
create table t3(
id number(4), --primary key, constraint t3_pk primary key(id)
);
唯一性约束
1.唯一性约束条件确保所在的字段或者字段组合不出现重复值
2.唯一性约束条件的字段允许出现空值,且可以多个空值
3.Oracle将为唯一性约束条件创建对应的唯一性索引
CREATE TABLE employees(
id NUMBER(6),
name VARCHAR2(25) NOT NULL UNIQUE,
email VARCHAR2(25),
salary NUMBER(8,2),
hire_date DATE NOT NULL,
CONSTRAINT emp_email_uk UNIQUE(email)
);
外键约束
1.外键是表中的一个列,其值必须在另一表的主键或者唯一键中列出
2.作为主键的表称为“主表”,作为外键的关系称为“依赖表”
3.外键参照的是主表的主键或者唯一键
4.对于主表的删除和修改主键值的操作,会对依赖关系产生影响,以删除为例:当要删除主表
的某个记录(即删除一个主键值,那么对依赖的影响可采取下列3种做法:
RESTRICT方式:只有当依赖表中没有一个外键值与要删除的主表中主键值相对应时,才可执行删除操作。
CASCADE方式:将依赖表中所有外键值与主表中要删除的主键值相对应的记录一起删除.
SET NULL方式:将依赖表中所有与主表中被删除的主键值相对应的外键值设为空值.
5.FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO) • [ON DELETE [CASCADE|SET NULL]] 如省略on短语,缺省为第一中处理方式.
非空约束
1.确保字段值不允许为空
2.只能在字段级定义
Check约束
1.Check约束用于对一个属性的值加以限制
2在check中定义检查的条件表达式,数据需要符合设置的条件
create table emp3
( id number(4) primary key, age number(2) check(age > 0 and age < 100), salary number(7,2), sex char(1), constraint salary_check check(salary > 0)
) 在这种约束下,插入记录或修改记录时,系统要测试新的记录的值是否满足条件
![67a63b9e115e220e0e9e493f6be92f10.png](https://i-blog.csdnimg.cn/blog_migrate/891d732b8ae36f583364ab76459f0b90.jpeg)
序列:
序列是oracle专有的对象,它用来产生一个自动递增的数列•
创建序列的语法:create sequence
seq-nameincrement by nstart
with nmaxvalue n|nomaxvalue //10^27 or -1
minvalue n|no minvalucycle|nocyclecache n|nocache•
实例:create sequence seq_empcopy_id start with 1 increment by
使用序列
select seq_empcopy_id.nextval from dual
insert into empcopy (empno,ename)
values (seq_empcopy_id.nextval, ‘TEST’);
查看序列状态
select seq_empcopy_id.currval from dual
删除序列
drop sequence seq_empcopy_i
索引index :
1.索引类似字典的和课本目录,是为了加快对数据的搜索速度而设立的。
2.索引有自己专门间,与表独立存放。
3.索引类型默认采用B树数据结构,数据全部集中在叶子节点.
![1edd175fc667dd7dfcc9d504295aa02d.png](https://i-blog.csdnimg.cn/blog_migrate/67c9a7e8b9e03344fb0f252bb1d8c56d.jpeg)
索引的作用:在数据库中用来加速对表的查询,通过使用快速路径访问方法快速定位
数据,减少了磁盘的I/O.
索引创建以后,在用户撤销它之前并不会用到该索引的名字,但是索引在用户查询
时会自动起作用。
索引的创建有两种情况:
自动: 当在表上定义一个PRIMARY KEY 或者UNIQUE 约束条件时,Oracle数据库自动创建一个对
应的唯一索引.
手动: 用户可以创建索引以加速查询.
开发中使用索引的要点:
1. 索引数据可能要占用大量的存储空间。
2. 索引改善检索操作的性能,但降低数据插入、修改和删除的性能。在执行这些操作时,
DBMS必须动态地更新索引。
3.限制表中索引的数目。索引越多,在修改表时对索引做出修改的工作量越大
4. 并非所有数据都适合于索引。唯一性不好的数据(如省)从索引得到的好处不比具有更多
可能值的数据(如姓名)从索引得到的好处多
5. 索引用于数据过滤和数据排序。如果你经常以某种特定的顺序排序数据,则该数据可能是
索引的备选。
6. 可以在索引中定义多个列(如省加城市),这样的索引只在以省加城市的顺序排序时有用。
如果想按城市排序,则这种索引没有用处。