oracle第二天学习
当我们安装完oracle之后,可以进行基本的命令测试,未安装的可以看
https://editor.csdn.net/md/?articleId=107188724
dos命令行
打开cmd:
进入oracle命令sqlplus
用户名scott
口令root(第一次会显示被锁)
解锁
1.以管理员身份登录
用户名sys
口令 随便输入即可
2.输入命令解锁
如果安装oracle时的口令(密码)忘记了,可以修改密码
注意:我们进行的所有增删改查操作一定要用普通用户(scott)进行,不能用sys(超级管理员),sys用来管理其它用户,如果使用sys不小心删除oracle自带的表,需要重装oracle
表空间
数据库里有表空间,表空间有表,表里有数据
表空间一般跟用户挂钩,可以指定某个表空间归哪个用户管
创建表空间(PLSQL)
(管理员才可以执行):
普通用户创建表空间时会显示权限不足
当用管理员创建表空间时可以创建成功
表空间创建如下
然后直接删除表空间是不可以删除的
注意:这时的dbf文件不可以直接删除,dbf已经是oracle系统的一部分了
这时在删除就成功
创建普通用户(PLSQL)
也是需要拥有管理员权限
创建完后,这个用户是不可以用的,因为没权限
切换登录时会提示没权限
给用户赋予权限
//创建表空间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班');
回收用户权限
回收权限 revoke resouce from user
oracle数据类型
字符: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
varchar2(20) 代表任意长度的字符,20是最大长度
number 代表数字
number(4,2) 4代表最大整数和小数位数的和 2代表最大小数位数
number(5,0) 只有整数位,整数位最大长度是5
oracle不能将字符串类型直接转换为日期类型
创建表的例题:
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)
);
修改表字段
数据完整性
其实开发中不会用数据库进行数据校验的
数据校验一般在前端验证
四种完整性约束
实体完整性
补充概念:主键
数据库表中,每个表都要有一个字段充当主键,这个主键起到唯一识别的作用
数据库里数据一般是不可以重复的
保证数据的唯一性,可以用主键约束,也可以用唯一约束,
两者区别:唯一约束的字段内容可以为null,而主键约束的字段内容不可以是null,.
域完整性
引用完整性
一张表中主键唯一,外键可以有多个
出现下面这个错误
原因:
外键数据对应的班级不存在
解决:
先添加班级,在添加学生
用PLSQL工具执行sql语句时进行增删改操作时,
执行完后要提交才会插入表中
成绩、科目、学生之间的主外键关系:
联表查询
表与表之间有四种对应关系:
一对一、一对多、多对一、多对多
多对多:学生表和课程表
一个学生可以选择多门课程,一门课程可以被多个学生选
一对多、多对一:学生表和班级表
一个学生属于一个班级、一个班级可以有多个学生
从学生表到班级表时多对一,从班级表到学生表是一对多
一对一:班级表和班主任表
一个班级只有一个班主任,一个班主任管理一个班
注意:一般遇到多对多要进行转换,加一个中间表,把多对多转换成两个一对多的关系
自定义完整性
约束
本文地址:https://blog.csdn.net/qq_41150890/article/details/107190741
下一篇: 自学SQL(4) SQL典型题目做题笔记