数据库基础知识总结

这篇博客主要介绍了数据库的基础知识,包括Oracle数据库、关系型数据库与对象数据库的对比、数据库系统的构成、SQL语言的分类、数据库的3个关系范式、Oracle的物理和逻辑结构,以及varchar与char、函数与过程的区别、表连接方式和分析函数的使用等。
摘要由CSDN通过智能技术生成

 那些最能干的人,往往是那些即使在最绝望的环境里,仍不断传送成功意念的人。他们不但鼓舞自己,也振奋他人,不达成功,誓不休止。

——安东尼·罗宾

首先我学的是Oracle数据库,下面的相关知识都是在Oracle的基础上写的。


数据库分为两种  关系数据库对象数据库

关系数据库 就是我们常用的数据库,如:mysql、sqlserver、oracle、db2、sybase、sqlite、postgresql(常用于地理信息相关的)

他们都不适合存储图片和多媒体。


对象数据库不仅仅支持sql语言,如:nosql 、Redis等。


数据库系统指在计算机系统中引入数据库后的系统,一般有数据库、数据库管理系统、应用系统、数据库管理员(DBA)构成,常简称数据库。


说下几个关于数据库的名词

DB 数据库     DBA 数据库管理人员    DBMS 数据库管理系统     


sql 结构化查询语言包含增删改查等语法 分为数据定义语言(DDL)、数据操作语言(DML)、数据管理语言(TML)、数据控制语言(DCL)、

数据查询语言(DQL)、游标控制语言(CCL)。

    

DDL:数据定义语言,让用户方便的对数据库中数据对象进行定义。如:创建、删除表格、定义索引(键)、规定表之间的链接、添加表间约束

create database :创建新数据库

alter database:修改数据库

create table:创建表

alter table:修改表

drop table:删除表

create index:创建索引(搜索键)

drop index:删除索引

create view:创建视图


DML: 数据操作语言,提供对数据库基本操作,如增删改查。

select 从数据库表中获取数据    

insert into 向数据库表中插入数据  

delete 从数据库表中删除数据  

update 更新数据库表中的数据

truncate删除表里的数据,不删表。


数据库有3个关系范式 (定义了基本规则):

1NF:属性、字段不可拆分,原子性

如:个人信息

姓名性别电话
XXXX138、672

这样是不行的 一个列(字段)不能有多个内容,得改为

姓名性别座机手机
XXXX138672


2NF:在满足1NF的基础上,非主键字段都依赖于主键

如 :学生课表 (学号,课程名称作为主键)

学号课程名称姓名年龄成绩学分
      
 这个数据库表不满足第二范式,会出现数据冗余,因为学分字段不依赖于学号这个主键,姓名、年龄不依赖于课程名称主键,得改为如下

学号姓名年龄
   


课程名称学分
  

学号课程名称成绩
   
   


3NF:在满足2NF的基础上,除主键外其他字段不存储依赖关系

如:还是学生表为例

学号姓名学校学校地址
    
这样不符合第三范式,因为学校字段和学校地址字段有相互依赖关系改为

学号姓名学校
   

学校学校地址
  

三大范式降低了数据的冗余(减少了存储空间),体现了数据的完整性、一致性。


数据库的物理结构是由数据库的操作系统文件所决定的,Oracle数据库物理结构由 数据文件、日志文件、控制文件组成。

Oracle的逻辑结构包括

表空间(多个数据文件)

段(功能使用、数据、索引、日志)

区(段空间不足,分配单位)

块(IO读写单位(8K、16K)) 


提一下 varchar char 区别

他们都是用来存储字符串的,char有固定的长度,varchar属于可变长的数据类型

如 存储字符串 "abc"  varchar(5)存储只要3字节,而char(5)存储要5字节。

varchar 节省存储空间,但存储效率较低

char  不节省存储空间,但效率低


varchar nvarchar 区别

varchar 是按字节存储数据,比如"abcdef"、"哈哈哈"

nvarchar 是按字符存储数据,比如"abcdef"、"哈哈哈哈哈哈"

注:1、存储中文占的字节是根据编码方式而定,utf-8 是一个中文占3字节,一般数据库是一个中文占两字节

如果用nvarchar 存储英文字符,会浪费一半以上存储空间。


函数和过程的区别

函数的参数可以 In(输入),过程的参数可以In、out、InOut(可以传入传出)

函数只能在sql语句中执行,过程可独立运行

函数不会改变原始数据,过程会改变原始数据

函数有返回值,过程没有返回值



数据库连接两张表的方式

内连接(等值连接)、外连接(左连接、右连接、全连接)

左连接就是使左表中的数据全部显示出来,如果右表中没有与之匹配数据,就会显示NULL,右连接刚好相反。

全连接就是是左表和右表中的数据全部显示出来。


分析函数  : 会出现新的一列 ,做排名

row_number()   的排名显示:1、 2、 3、 4

rank() 的排名显示:1、 2、 2、 4

desen_rank() 的排名显示:1 、2 、2 、3 

根据实际情况选择分析函数


写一些常用的字段 distinct(sal)(删除重复的)、round(sal,1)(四舍五入)、truncate(sal,1)(trunc)(截断)

nvl(sal,0) 表示若sal为空,则用0表示 、 max,min,avg,sum,count,

两个select语句之间用 union (并集,无重复内容) , union all(追加,有重复内容),minus(上面结果减掉下面的,上面有的下面没有)

intersect(交集,公共部分)


注:查询语句中有两个字段,其中一个字段是聚合函数,需要分组,用不是聚合函数的字段来分组, 

例:select job,count(ename)from emp group by job;


这些只是数据库常用基础知识的一部分,更多的以后学会了会写出来。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值