对于关系型数据库的总结

本文详细介绍了关系型数据库的核心概念,包括数据库分类、SQL语句的五大分类、事务处理(例如COMMIT和ROLLBACK)以及数据库对象如表、视图、索引等。重点讨论了在Oracle数据库中的DML操作和事务管理,并阐述了如何通过索引来优化查询性能。同时,提到了索引的创建、类型以及适用场景,强调了合理创建索引的重要性。
摘要由CSDN通过智能技术生成

数据库:数据存储的仓库
数据库的分类:
非关系型数据库(网格数据库、层次数据库)(“NO SQL”):redis
关系型数据库:oracle、MySQL、sqlserver
关系型数据库:数据库中保存的对象之间可以存在一定的关联关系,并非完全独立。主要反映到以后学习的主外键.

三个名词:
sql:结构化的查询语句,操作oracle数据库的语言

查看当前用户: show user
查看当前用户的所有表 select table_name from user_tables
sqlplus:oracle软件自带的可以输入sql,且将sql执行结果显示的终端

sqlplus 登录之后,可以使用buff(缓存)来存储/执行/修改要执行的sql语句
这里的buff的特点:
1.buff中只能存储一条sql语句(但是这条sql语句可能有很多行)
2.每次放入新的sql语句,会把之前的覆盖掉
3.每次执行sql语句,都会把这个sql语句放到buff里面

l   查看缓存中的sql语句
a   在[定位]的那一行后面追加新的内容
i   在[定位]的那一行下面插入新的一行
c   替换[定位]的那一行中的某些字符串
    c/老的字符串/新的字符串
del 删除[定位]的那一行内容
n   后面加内容可以重写这一行
!   后面接终端命令 !clear:清屏 windows中使用$符号 例如:$cls
/   执行缓存sql命令


clear buffer:清空当前缓存的命令

save  test.sql  buff中的sql语句保存在test.sql文件中
get   test.sql  把test.sql中的内容在加载到buff中,但是没有运行
start test.sql  把test.sql中的内容在加载到buff中并且执行
@test.sql       把test.sql中的内容在加载到buff中并且执行
edit file_name  使用系统默认编辑器去编辑文件
spool file_name 将接下来的sql语句以及sql的运行结果保存到文件中
spool off  关闭spool功能
exit:退出

查询结果不好看,通过column使我们的显示界面好看。

 COLUMN last_name FORMAT a15;
    可以简写为:
    col last_name for a15;
    COLUMN first_name FORMAT a15;

pl/sql:程序化的sql语句,在sql语句的基础上加入一定的逻辑操作,如if for…,使之成为一个sql块,完成一定的功能

数据库中对象:
table:表格,由行和列组成,列又称字段,每一行内容为表格的一条完整的数据。
view: 视图,一张表或者多张表的部分或者完整的映射,好比表格照镜子,镜子里面的虚像就是view
除去常见的table和view两种对象以外,oracle数据库还支持如下四种对象
sequence:序列
index:索引,提高数据的访问效率
synonym:同义,方便对象的操作
program unit:程序单元,pl/sql操作的对象

sql的五大分类:
DQL: 数据查询语言 (Data retrieval):select
DML:数据操纵语言(行级操作语言): insert、update、delete
DDL: 数据定义语言(表级操作语言):create、alter、drop、truncate、rename
DTL: 事务控制语言(transaction control):commit、rollback、savepoint
DCL: 数据控制语言 :grant、revoke

建表
建表的格式

create table 表名(
    列名1 数据类型,
    列名2 数据类型,
    列名3 数据类型,
    列名4 数据类型
);

create table 表名(
    列名1 数据类型 列级约束,
    列名2 数据类型 列级约束,
    列名3 数据类型 列级约束,
    列名4 数据类型 列级约束
);

create table 表名(
    列名1 数据类型 列级约束,
    列名2 数据类型 列级约束,
    列名3 数据类型 列级约束,
    列名4 数据类型 列级约束,
    表级约束1,
    表级约束2
);

表名的要求:
1.必须是字母开头
2.必须是1-30个字符之间的长度
3.表名中只能出现A–Z, a–z, 0–9, _, $, #
4.不能和数据库中已有对象的名字重复
5.不能是数据库中的关键字

列的常用数据类型
1.char
2.varchar
3.varchar2
4.number
5.date
其他类型 BLOB CLOB
BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的

char varchar varchar2的区别及特点
1. CHAR的长度是固定的,而VARCHAR2的长度是可以变化的
2. CHAR的效率比VARCHAR2的效率稍高。
3. VARCHAR是数据库标准的字符类型
4. VARCHAR2是Oracle自己开发了一个数据类型VARCHAR2
5. VARCHAR2将数据库中varchar列可以存储空字符串的特性改为存储NULL值。
6. Oracle建议使用VARCHAR2而不是VARCHAR

列的约束/行级约束:在列的后面直接加上的约束
列的约束就是对这个列中的值的要求
表级约束:在所有列声明以后加的约束
1.主键约束 PRIMARY KEY primary key
2.外键约束 FOREIGN KEY foreign key
在对应列名后加references + 对应表名(主键)

使用列级约束 声明 外键约束
create table t_order(
id number primary key,
content varchar2(200) not null,
customer_id number references t_customer(id)
);
使用表级约束 声明 外键约束
create table t_order(
id number primary key,
content varchar2(200) not null,
customer_id number,
foreign key(customer_id) references t_customer(id)
);
3.唯一约束 UNIQUE unique
4.非空约束 NOT NULL not null
非空约束(not null)不能声明成表级约束
5.check约束 CHECK check

建表实例

普通的建表例子
create table student(
    id number primary key,
    name varchar2(200),
    age number,
    birthday date
);

使用列级约束
create table student(
    id number primary key,
    name varchar2(100) not null,
    email varchar2(100) unique,
    gender char(1) check(gender in('f','m')),
    age number,
    birthday date
);

使用表级约束
create table student(
    id number,
    name varchar2(20) not null,
    age number default 20,
    email varchar2(100),
    gender char,
    primary key(id),
    unique(email),
    check(gender in('f','m'))
);

使用表级约束联合声明

使用表级约束 声明 联合唯一约束
        create table student(
            id number primary key,
            class varchar2(50) not null,
            name varchar2(50) not null,
            unique(class,name)
        );

使用表级约束 声明 联合主键
        create table t_customer(
            id number,
            name varchar2(50),
            primary key(id,name)
        );

使用表级约束 声明 联合外键
        create table t_customer(
            id number,
            name varchar(50),
            primary key(id,name)
        );

表级约束和列级约束对比
1.表级约束和列级约束所写的位置不一样
2.not null约束不能用表级约束来声明
3.表级约束和列级约束声明语法稍有所不同
4.如果要声明的约束为联合主键、联合外键、联合唯一的时候,就一定要用表级约束.

constraint关键字
1.constraint是约束的意思
2.建表的时候可以给约束起一个名字,这个名字起的规律一般会是:表名_列名_约束类型
3.如果没有给约束起名字,那么系统也会给这个约束起一个默认的名字,这不过这个默认的名字对我们来说并不友好(我们看不懂)
4.将来我们可以根据我们之前给约束起好的名字而找到这个约束,然后进行修改

列级约束 起约束名字
create table student(
    id number constraint student_id_pk primary key,
    name varchar2(100) constraint student_name_nn not n.0ull,
    email varchar2(100) constraint student_email_un unique,
    gender char(1) constraint student_gender_ck check(gender in('f','m')),
    age number,
    birthday date
);

表级约束 起约束名字
create table t_customer(
    id number,
    name varchar2(20) not null,
    age number,
    email varchar2(100),
    gender char,
    constraint cus_id_pk primary key(id),
    constraint cus_email_un unique(email),
    constraint cus_gender_ck check(gender in('f','m'))
);

on delete关键字
    on delete语句是在声明外键约束的时候使用的。用户在删除A表中的一条数据,而这条数据被B表中的外键列所引用了,这个时候on delete语句的设置可以告诉oracle这个时候该如何处理
on delete no action(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值