Oracle
简介
Oracle 数据库
1.数据库 DataBase : 存储数据的仓库
SQL 与 No SQL
SQL: 结构化查询语言, 增删改查
关系型数据库 利用表存数据
No SQL: 非关系型数据库, 例如 Redis, 他们采用的键值对形式存数据,
键值对: 班长 ---- 李四
副班长----王五
学习委员--- 赵六
数据库 术语,
DDL: 数据定义语言, 对数据库中的某写对象(数据库或表),进行管理
create , drop, alter
DCL:数据控制语言, 主要作用 授权, 数据回滚roll back 数据提交 commit
DQL:数据查询语言, 主要用于 查询操作, select from where
DML:数据操纵语言, 主要用于 增加,删除,修改, insert delete update
数据库特性 ACID
A: 原子性, 事务里所有的操作,要么全部做完, 要么都不做,
事务成功的条件是 事务里的所有的操作都成功,
只要有一个操作失败,整个事务就失败,需要回滚
示例: 银行转账, A账户 转100 给 B 100, 分2步 第一 从A 取出 100, 第二 存B账户100,
C 一致性: 数据库要一致处于一致的状态, 事物的运行不会改变数据库原本的一致性约束.
A 300元, B: 400元, 一共 300+400 =700
A 给 B 转100, A 200, B 500 一共700
I: 独立性 并发的事务之间不会相互影响,如果一个事务要访问的数据正在被另一个事务修改,只要另外一个事务未提交,他所访问的数据不受未提交事务的影响,
示例: A 转账给B 200元, 再这个交易还未完成的情况下, 此时 B 查询自己的账户余额 是 看不到即将增加的 200元的,
D 持久性
持久性 指 一旦事务提交后,它所做的修改将会永远的保存在数据库中,即使出现宕机也不会丢失,
三大范式
三大范式: 为了建立冗余少, 结构合理的数据库, 设计数据库时 必须遵循 一定的规则,
在 关系型数据库中 这种规则叫 范式
1. 第一范式
第一范式 确保每列保持原子性
2. 第二范式
第二范式 确保表中的每一列都和主键相关, 而不能只与 主键的某一部分相关
3. 第三范式
确保每列都和主键列直接相关,而不是间接相关
ER图
ER 图: 实体-关系图
实体: 学生, 老师 (一般是名词,) 使用 矩形
关系: 指导关系 ----- 一般是 动词 使用 菱形
属性: 是 实体具备的 名字特性, (学生实体为例: 学号, 姓名, 性别, 住址……….) (一般是名词,) 使用 椭圆
数据类型
数据类型 | Oracle | Mysql |
---|---|---|
数值类型 (整型) | Number Int ànumber(10) | Int, Bigint |
数值类型 (浮点) | Number(10,2) | Float ,double,decaimal(M,D) |
字符串类型 | Varchar2 | Varchar |
日期类型 | Date年月日时分秒 | Date 只有年月日 Datetime 年月日时分秒 |
Varchar(50) --**à 可变长度的字符,最多允许50个字符,**
Char(50) -**à 固定长度的字符, 长度就是50, 例如 abc ,补齐 47个空格,**
?首先得知道Oracle是严格区分大小写的 ?? ?写建表语句如果没有用双引号,则默认采用大写,也就是说,oracle在看到输入的sql脚本中,没有引号的单词,都会装换成大写。 ?? ?所以我们写sql查询的时候,不用非得写大写,是因为Oracle帮我们转换了。 ?? ?当我们需要写小写的时候,不想Oracle帮我们装换成大写,这时候就需要加上""双引号,只有用双引号括起来的,oracle才不会转换。 ?? ?当表名或字段名只有大写字母的时候,双引号可有可无,因为“AAA”与AAA的效果是一样的。不写引号,Oracle会自动转换成大写。 ?? ?所以建表一旦用了引号括起来的小写字段,或小写表名,我们写查询,修改,删除的时候也需要用引号,因为不写引号,oracle就会帮我们转换成大写,而大写的字段,或表名在数据库中是没有的,所以会报 表或视图不存在 这个错误 ??
建表
?语法: ?create table 表名( ?列名 列的数据类类型, ?列名2 列2的数据类型, ?列名3 列3的数据类型 ?) ??示例:
?-- 建表 dept ?create table dept( ? depid number, ? depname VARCHAR2(40) ?) ?? ?-- 员工表 emp ?create table emp( ?? ?eno number, ?ename varchar2(40), ?sex char(1), ?borndate date, ?depid number ?? ?)
添加约束
主键 alter table 表名 add primary key(主键列名);
非空 alter table 表名 modify 列名 列数据类型 not null; 唯一 unique alter table 表名 add unique (列名)
默认值 default
alter table 表名 modify 列名 default '默认值' 外键, 主从表,
alter table 从表 add constraint 外键名字 foreign key (外键) references 主表(主键)
示例:
?-- 主键约束 ?alter table result add primary key(rid); ?? ?-- 非空 ?alter table result modify stuno VARCHAR2(50) not null; ?? ?-- 唯一约束 ? student 表的phone 应该唯一的 ?alter table student add ? unique (phone) ; ?? ? ?-- 默认值 ? student 表的 sex 设置 默认值 ?? ? alter table student modify sex default '1' ? ? ?? ?-- 外键 ?alter table student add constraint fk_grade_student foreign key (gid) references grade(id) ??
删除约束,添加列,修改列,删除列
?删除主键约束 ?alter table 表名 drop primary key ? ? --删除主键 ?? ?alter table 表名 drop constraint 约束名 –-删除外键,唯一,外键 ?? ?alter table 表名 modify 列名 类型null; ? ? ? ? ----删除非空约束 ?alter table 表名 modify 列名 default null ; -- 删除默认值约束 ???-- 添加列 ?? ?-- 语法: alter table 表名 add (列名 数据类型) ?? ?alter table dept add (pos varchar2(50)); ?? ?-- 修改列名类型 ?? ?-- 语法: alter table 表名 modify (列名 新数据类型) ?? ?alter table dept modify (pos number); ?? ?-- 修改列名 (重命名列名) 或 先删除 再增加 ?? ?-- 语法: alter table 表名 rename column 旧列名 to 新列名 ?? ?alter table dept rename column pos to position_1 ?? ?-- 删除列名 ?-- 语法 : alter table 表名 drop column 列名; ?? ?? ?alter table dept drop column position_1; ??示例:
?-- 为 result表 增加 examtime ? ?alter table result add (examtime date); ?? ?? ?-- 修改 result 表的rid 为 id ?? ?alter table result rename column rid to id; ?? ?-- 为 result 表 增加一列 abc varchar2(50) ?? ?alter table result add (abc varchar2(50)); ?-- 删除 result 表 abc 列 ?alter table result drop column abc; ??
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!