oracle第二天学习

当我们安装完oracle之后,可以进行基本的命令测试,未安装的可以看
https://editor.csdn.net/md/?articleId=107188724

dos命令行

打开cmd:
进入oracle命令sqlplus
用户名scott
口令root(第一次会显示被锁)
oracle第二天学习_第1张图片解锁
1.以管理员身份登录
用户名sys
口令 随便输入即可
oracle第二天学习_第2张图片2.输入命令解锁
oracle第二天学习_第3张图片oracle第二天学习_第4张图片
如果安装oracle时的口令(密码)忘记了,可以修改密码
oracle第二天学习_第5张图片注意:我们进行的所有增删改查操作一定要用普通用户(scott)进行,不能用sys(超级管理员),sys用来管理其它用户,如果使用sys不小心删除oracle自带的表,需要重装oracle

表空间

数据库里有表空间,表空间有表,表里有数据
oracle第二天学习_第6张图片表空间一般跟用户挂钩,可以指定某个表空间归哪个用户管

创建表空间(PLSQL)

(管理员才可以执行):

普通用户创建表空间时会显示权限不足
oracle第二天学习_第7张图片当用管理员创建表空间时可以创建成功
oracle第二天学习_第8张图片表空间创建如下
oracle第二天学习_第9张图片然后直接删除表空间是不可以删除的
注意:这时的dbf文件不可以直接删除,dbf已经是oracle系统的一部分了
oracle第二天学习_第10张图片oracle第二天学习_第11张图片
oracle第二天学习_第12张图片

这时在删除就成功
oracle第二天学习_第13张图片

创建普通用户(PLSQL)

也是需要拥有管理员权限
oracle第二天学习_第14张图片创建完后,这个用户是不可以用的,因为没权限
切换登录时会提示没权限
oracle第二天学习_第15张图片

给用户赋予权限

oracle第二天学习_第16张图片

//创建表空间user01_tablespace(一块存储表数据的空间),放在user01.dbf文件中
//需要有管理员权限(sys)
create tablespace user01_tablespace
datafile 'd:\app\createDatabase\user01.dbf'
size 1M;

//创建一个用户(需要有管理员权限sys),不赋予权限没法用
//用户名use01  密码:root
create user user01 identified by root;

//赋予临时用户权限
grant connect to user01;
//赋予普通用户权限
grant resource to user01;
//赋予管理员权限
grant dba to user01;

//给user01分配表空间为user01_tablespace
alter user user01 default tablespace user01_tablespace;

//创建表,设置表的字段
create table stuMarks(
examno varchar2(7) not null,
stuno varchar2(6) not null,
writtenexam number(3,0) not null,
labexam number(3,0) not null
);


//插入语句
insert into grades values('28','28班','这是28班');

oracle第二天学习_第17张图片

回收用户权限

oracle第二天学习_第18张图片

回收权限 revoke resouce from user

oracle数据类型

oracle第二天学习_第19张图片字符:char varchar2
数值:number
日期时间:date

char与varchar2都是Oracle的数据存储格式。char是定长的,varchar2是变长。都可以存储字符串。
char与varchar2区别:
1.char是定长的 char(8) , varchar2(8)是变长的 当我们同样存c ,char占用了8个字符(c占一个,另外7个使用空格占用),varchar2 只占用了 一个字符(注意:一个中文占两个字符,英文占一个)。
2.char的查询速度要比varchar2快。因为使用varchar2的时候Oracle还要进行语法分析,这个字段是多少位的,所以慢一些。(这是相对于上千万的记录来说)。一般的项目用哪个都可以。

面试题:
如查询的字段使用的char(8)时:
Select查询要注意定长的格式。查询字符串的长度要刚好。多了少了都不能查到数据。例如字段A为char(8)。存“ABCD”,长度不满8。Oracle会用空格补满8位。你用"ABCD"作为查询字段时是查不出来的。

char与varchar2应用场景:
VARCHAR2比CHAR节省空间,但在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是数据库设计上常说的‘以空间换效率’。
在考虑效率的情况下用char
在考虑空间的情况下用varchar2

oracle第二天学习_第20张图片varchar2(20) 代表任意长度的字符,20是最大长度

number 代表数字
number(4,2) 4代表最大整数和小数位数的和 2代表最大小数位数
number(5,0) 只有整数位,整数位最大长度是5

oracle不能将字符串类型直接转换为日期类型

创建表的例题:
oracle第二天学习_第21张图片

create table user1(sid char(6),uname varchar(20));

create table stuinfo(
stuno char(6) not null,
stuname varchar2(20),
stuage number(3,0),
stuid varchar2(18),
stuseat number(2,0)
);

修改表字段

oracle第二天学习_第22张图片

数据完整性

oracle第二天学习_第23张图片其实开发中不会用数据库进行数据校验的
数据校验一般在前端验证

四种完整性约束

oracle第二天学习_第24张图片实体完整性
补充概念:主键
数据库表中,每个表都要有一个字段充当主键,这个主键起到唯一识别的作用
数据库里数据一般是不可以重复的

保证数据的唯一性,可以用主键约束,也可以用唯一约束,
两者区别:唯一约束的字段内容可以为null,而主键约束的字段内容不可以是null,.

域完整性

oracle第二天学习_第25张图片

引用完整性

oracle第二天学习_第26张图片oracle第二天学习_第27张图片一张表中主键唯一,外键可以有多个

oracle第二天学习_第28张图片出现下面这个错误
oracle第二天学习_第29张图片原因:
外键数据对应的班级不存在
解决:
先添加班级,在添加学生

用PLSQL工具执行sql语句时进行增删改操作时,
执行完后要提交才会插入表中
oracle第二天学习_第30张图片成绩、科目、学生之间的主外键关系:
oracle第二天学习_第31张图片oracle第二天学习_第32张图片
联表查询
oracle第二天学习_第33张图片
表与表之间有四种对应关系:
一对一、一对多、多对一、多对多

多对多:学生表和课程表
一个学生可以选择多门课程,一门课程可以被多个学生选

一对多、多对一:学生表和班级表
一个学生属于一个班级、一个班级可以有多个学生
从学生表到班级表时多对一,从班级表到学生表是一对多

一对一:班级表和班主任表
一个班级只有一个班主任,一个班主任管理一个班

注意:一般遇到多对多要进行转换,加一个中间表,把多对多转换成两个一对多的关系

自定义完整性

oracle第二天学习_第34张图片

约束

oracle第二天学习_第35张图片

你可能感兴趣的:(oracle,数据库)