数据库DB之MySQL&Oracle

本文详细介绍了数据库的基础知识,包括数据库、DBMS、DBS的概念,重点讲解了关系模型,包括关系的基本概念、完整性约束、规范化等。接着深入探讨了MySQL的数据类型、数据完整性、SQL操作,以及Oracle的特点和数据库启动关闭操作。通过对比MySQL和Oracle,阐述了两者在数据存储、管理及查询上的异同。
摘要由CSDN通过智能技术生成

数据库基础

数据库技术所研究的问题:

  • 如何科学地组织和存储数据
  • 如何高效地获取和处理数据(核心:管理数据)

SQL的定义

  • SQL是Structured Query Language(结构化查询语言)。
  • SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言
  • 在使用SQL时,只需要发出"做什么"的命令,“怎么做"是不用使用者考虑的。

Data 数据

数据 (Data) 定义:对客观事物的符号表示,如图形符号、数字、字母等,数据是数据库中存储的基本对象。
数据的种类:文字、图形、图象、声音。
数据的形式不能完全表达其内容。

Database 数据库

数据库 (Database) DB,定义:

  • 长期储存在计算机内的、有组织的、可共享的数据集合
  • 数据库中的数据按一定的数据模型组织、 描述和储存。
  • 数据库中数据特征:具有较小的冗余度(数据重复)、较高的数据独立性(互不影响)和易扩展性(可修改),并可为各个用户共享

DBMS 数据库管理系统

数据库管理系统(DBMS)定义:

  • 位于应用程序与存储数据的之间的一层数据管理软件。
  • 是基础软件,是一个大型复杂的软件系统。

DBMS的用途
科学地组织和存储数据、高效地获取和维护数据。

四方面功能:

  1. 数据库的定义功能
    在SQL语言中——DDL语言(数据库定义语言),提供了三个语句:create创建、alter修改、drop删除,操作的对象是数据库的基本架构——表。以表的形式来组织和存放各种数据。

  2. 数据库的操作功能
    借助于SQL语言中——DML语言(数据库操作语言),对数据库中存储的数据进行增(insert)删(delete)改(update)查(select)。即单独数据操纵语言DML及其编译程序,实现对数据库的基本操作。基本操作有两类检索和更新。

  3. 数据库的保护功能
    数据库的数据恢复、数据库的并发控制、数据完整性控制和数据安全性控制。

  4. 数据库的维护功能
    数据库的数据导入、转换、存储、数据库性能监控等,以及表结构的维护。

优点:

  • 相互关联数据的集合
  • 较少的数据冗余
  • 程序与数据相互对立
  • 保证数据的安全、可靠、正确
  • 数据可以并发使用,并能同时保证一致性

DBS 数据库系统

数据库系统 (DBS) 定义:一般由数据库(DB)、数据库管理系统(DBMS)及其开发工具、应用系统、数据库管理员和用户构成。
DBS = DB + DBMS + 应用系统 + DBA + 用户

关系图:
在这里插入图片描述
数据库系统的发展经历了3个阶段:

  • 网状数据库:采用网状模型(图形结构)作为数据的组织方式。
  • 层次数据库:采用层次模型(树形结构)
  • 关系数据库:采用关系模型(简单二维表结构)

信息和数据:
信息:是指数据经过加工处理后所获取的有用知识。信息是以某种数据形式表现的。

信息的3种世界:

  1. 现实世界:存在于人脑之外的客观世界。
  2. 信息世界:现实世界在人们头脑中的反映,又称观念世界。
  3. 数据世界:信息世界中的信息数据化后对应的产物,就是将信息世界中的信息经过抽象和组织,按照特定的数据结构,将数据存储在计算机中。

实体—联系模型

实体—联系模型 → E–R图

  • 实体
    客观事物在信息世界中称为实体 ( Entity ) ,它是现实世界中任何可区分、识别的事物。实体集,是实体的集合,具有相同属性的实体。
  • 属性
    描述实体或者联系的性质或特征的数据项。(实体特征的表现)
  • 联系
    反映事物内部或事物之间的关联集合。
    常见的实体联系有三种:一对一联系(单独辅导)、一对多联系(老师对学生)和多对多联系(学生对课程)。(没有多对一)

关系模型

关系模型(重点)
指关系型数据库中数据的组织方式。

关系的基本概念

  • 关系:一个关系是一张二维表,通常将一个没有重复行、重复列的二维表看成一个关系,每个关系都有一个关系名(即表名)。
  • 元组:二维表的每一在关系中称为元组,也称记录。 在MySQL中,一个元组对应表中一个记录。
  • 属性:二维表的每一在关系中称为属性,也称字段。每个属性都有一个属性名(即列名/字段名),属性值则是各个元组属性的取值。
  • :属性(列)的取值范围称为域。域作为属性值的集合,其类型与范围具体由属性的性质及其所表示的意义确定。同一属性只能在相同域中取值。
  • 关键字:关系中能唯一区分、 确定不同元组的属性或属性组合,称为该关系的一个关键字。(一列或多列) 关键字 ⟺ 唯一、不重复、不能为空
    在这里插入图片描述

关键字

  1. 主键(主关键字):针对一个表中某个列来说的,假如把一个表中的某个列设置成主键,那么这个列就一定要求:唯一、不重复、不能为空。
  2. 外键:针对两个表来说,加强表与表之间的联系。外键的设置也是在于列。

关系模式:对关系的描述成为关系模式,其格式为:关系名(属性名1, 属性名2, ……, 属性名n);例如,学生信息表(姓名, 性别, 年龄, 生日) 英文字符

关系的基本特点

在关系模型中,关系具有以下基本特点:
① 关系必须规范化,属性不可再分割。
② 在同一关系中不允许出现相同的属性名。
③ 在同一关系中元组的顺序可以任意。
④ 在同一关系中属性的顺序可以任意。

关系运算

关系运算主要有选择、投影和连接3种。

  • 选择运算:从关系模式中找出满足给定条件的元组组成新的关系。(从的角度进行的运算)
    在这里插入图片描述
  • 投影运算:从关系模式中指定若干属性组成新的关系。 (从的角度进行的运算)在这里插入图片描述
  • 连接运算:从两个关系笛卡儿积中选取属性间满足一定条件的元组,组成新的关系。(冗余)

关系的完整性约束

  1. 实体完整性:主属性值(主键的值)不能为空。
  2. 参照完整性 ( 引用完整性 ) :主键与外键的关系。
    针对两个表(主表和从表),参照关系:从表参照主表(列);从表执行操作需要询问主表意见并允许,且主表需要存在相应内容。
  3. 域完整性 ( 用户定义完整性 ) :限制了某些属性中出现的值,把属性限制在一个有限的集合中。如若属性类型是正整数,那么输入值则不能为小数等其它任何非整数。

关系模型的规范化(范式)

关系模式要满足的条件称为规范化形式,简称范式NF

关系模型规范化的目的:
消除存储异常,减少数据冗余,保证数据的完整性和存储效率,一般规范为3NF

  1. 第一范式 1NF

如果关系R的所有属性均为简单属性,即每个属性都是不可再分的,则称R满足第一范式。

  1. 第二范式 2NF

如果关系R满足第一范式,且非主键字段完全依赖于主键,则称R满足第二范式。

  1. 第三范式 3NF

如果关系R满足第二范式,且非主键字段之间不存在依赖关系,则称R满足第三范式。

一个基本的关系型数据库要满足第一范式,一个完整的关系型数据库要满足第三范式。

E-R 图

E-R图也称实体联系图( Entity Relationship Diagram ),提供了表示实体
类型、属性和联系的方法,用来描述现实世界的概念模型。

  • 用矩形表示实体型,矩形框内写明实体名
  • 用椭圆表示实体属性,椭圆内写明实体属性名
  • 用菱形表示实体型间的联系,在菱形内写明联系名
  • 用线段连接起来

(n,m为多,1为一)
一对一 1:1,一对多 1:m,多对多 n:m
在这里插入图片描述

常见的数据库

  • Oracle
    应用广泛、功能强大,分布式数据库系统,可移植性好
  • MySQL
    开源、免费、与PHP组成经典的L AMP组合
    快速的、可靠的和易于使用
  • SQL Server
    Web上最流行的用于存储数据的数据库
    易用性好但只能在Windows上运行

MySQL

Mysql数据库是一种关系型数据库管理系统,是一种开源软件由瑞典MySQL AB公司开发,08年1月16日被Sun公司收购,09年Sun公司又被Oracle公司收购。端口3306
优点:体积小、速度快、总体拥有成本低、开源、可移植(跨平台)、可以在不同的操作系统中使用,轻量级数据库。

(系统自带库不做修改,不能删除):
在这里插入图片描述
查看现有数据库
使用show databases;命令 (在cmd端注意分号)

新建自己的数据库
使用create database 库名;命令

删除自己的数据库
使用drop database 库名;命令

数据类型

在这里插入图片描述
整数类型:int
小数类型其格式:decimal(总长度, 小数位) 例如,decimal(5, 2) 123.45

日期和时间类型

  • 日期和时间类型为DATETIMEDATETIMESTAMPTIMEYEAR
  • 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MlySQL不能表示的值时使用"零"值。

字符串类型

  • 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。
  • CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。
  • BINARY和VARBINARY类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。
  • BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。
  • 有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。
    在这里插入图片描述
    char 和 varchar 的区别:(重点)
    例如,姓名长度给定为10,使用3个字符。
  • char中剩余的空间不会释放,系统会用空格给填充满;
  • varchar中会将剩余的7个字符空间释放。

数据库建表方式和原则

创建表
语法:

create table 表名 (
	属性名1 数据类型 [约束条件],
	字段名2 数据类型 [约束条件],
	列名3 数据类型 [约束条件]
);

切换数据库:use 库名

[]中括号中的内容是可选可不选内容,最后一个属性后没有逗号
单行注释:-- ;多行注释:/* */
打开表:查看是否存入数据;设计表:查看表结构

删除表
语法:drop table 表名1, 表名2, 表名3..., 表名n;

修改表

  • 添加列(属性)
    alter table 表名 add 属性名 数据类型;
  • 删除列(属性)
    alter table 表名 drop 属性名;
  • 修改属性∶
    alter table 表名 modify 属性名 新数据类型;
  • 修改字段名∶
    alter table 表名 change 旧字段名 新字段名 (新)数据类型;
    同时也可以修改数据类型。

显示表
查看表结构:desc 表名;

注:数据库sql语句通常答案不唯一,无标准答案。刷新时刷新库

练习:

  • 自己动手使用工具创建一张表并插入一条数据。 在这里插入图片描述
    在这里插入图片描述

数据的完整性

数据的完整性指存储在数据库中的数据应该保持准确性可靠性。如出现学号相同的数据就是不准确的。

关于Key

  1. 如果Key是,那么该列值的可以重复,表示该列没有索引,或者是一个非唯一的复合索引的非前导列;
  2. 如果Key是PRI,那么该列是主键的组成部分;
  3. 如果Key是UNI, 那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL);
  4. 如果Key是MUL, 那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL。

如果对于一个列的定义,同时满足上述4种情况的多种,比如一个列既是PRI,又是UNI,那么desc 表名的时候,显示的Key值按照优先级按照PRI>UNI>MUL规则。那么此时,显示PRI。

一个唯一性索引列可以显示为PRI,并且该列不能含有空值,同时该表没有主键。一个唯一性索引列可以显示为MUL,如果多列构成了一个唯一性复合索引,因为虽然索引的多列组合是唯一的。

实体完整性

  • 实体完整性是对关系中的记录唯一性。
  • 定义表中的所有行有唯一的标识。
  • 表中主属性(字段)不能为null且不能有相同值。
  • 一般用主键、唯一索引、unique关键字来实现。

实体完整性之主键约束 primary key

  • 主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。
  • 创建表时指定主键。
  • 一个表中有且只有一个主键约束。
  1. 创表,并设置主键 PK_主键约束名
create table 表名 ( -- 格式一 : 通用格式(即多种数据库都可使用MySQL、Oracle等)
	列名 数据类型 primary key,
	列名2 数据类型
);
create table student ( -- 举例格式一
	id varchar(10) primary key, -- 若学号重复或为空,不可保存会报错
	name varchar(10),
	age int
);
create table 表名 ( -- 格式二
	列名1 数据类型,
	列名2 数据类型,
	constraint 主键约束的名字 primary key (列名)
);
create table student ( -- 举例格式二
	id varchar(10),
	name varchar(10),
	age int,
	constraint pk_id primary key(id)
);
create table 表名 ( -- 格式三
	列名1 数据类型,
	列名2 数据类型,
	primary key(列名)
);
create table student ( -- 举例格式三
	id varchar(10),
	name varchar(10),
	age int,
	primary key(id)
);
  1. 已存在的表,添加或修改主键:
alter table 表名 modify 列名 数据类型 primary key; -- 格式一

alter table 表名 add 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值