数据库概论

数据库概论
数据库是指长期存储在计算机内有组织可共享的数据集合。数据库中的数据以及数据之间的关系按照一 定的数据模型 组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并在一定的范围 内可以被多个用户共享
数据模型:层次模型、网状模型、关系模型,据说下一代是对象模型
关系型数据库是建立在关系数据模型基础上的数据库,借助集合代数的概念和方法处理数据库中的数 据,同时也是一个被组织成具有描述的二维表格,表格的实质就是装载数据项的收集器,这些表格中的 数据能以不同的方式被存取或者重新召集,而不需要更新组织数据库的表格。
目前常见 RDBMS 主要有 Oracle 收费【运行稳定、性能优异、大型企业级应用开发首选】、 MySQL 免费 【开源免费、体积小、速度快、适用于中小型企业应用开发】、DB2 收费【速度快、可靠性好、适用于 海量数据存储,主要用于在使用IBM 组件时】、 SQLServer 【主要在 .net 应用】、 Sybase 【电信行业历 史原因使用】
DBMS 数据库管理系统
是位于用户和操作系统之间的一层数据管理软件。科学地组织和存储数据,高效地获取和维护数据
基础功能:数据定义功能 DDL 、数据操纵功能 DML 、数据库的运行管理、数据库的建立和维护功能
数据库特点:
数据库中的数据尽可能不重复,以最优化的方式为多种应用服务
数据结构独立于应用
对数据的 CRUD 由统一软件进行管理和控制 DBMS
数据模型
数据模型从应用开发的角度上来说可以分为 2 个不同的层次
概念模型或者逻辑模型,从用户的观点来对数据和信息进行建模,可以使用 ER 图进行描述
E 实体(矩形),属性列采用椭圆表示,采用无定向线连接实体和属性
R 关系 ( 菱形框 ) ,数据和数据之间的关系有三种: 1:1 1:n 或者 n:1 n:m
容易出现的错误:不能分析出主外键(主键是标识属性,不可能有外键)
物理模型。在概念模型的基础上考虑各种具体的技术实现因素,进行数据库体系结构设计。需要确
定所有的表和列,定义主外键,基于用户需求考虑范式的问题
数据库选型 ---SQL 语句
关系模式 --- 带表头【元数据】的二维表格。具体存储位置对用户透明 关系模型的特点
建立在严格的数学概念之上【唯一】 实体和各类联系都用关系表示
数据的操纵对象是关系,返回结果也是关系 关系模型的存取路径对用户透明,优点在于数据独立性、高安全性,简化编程
缺点:存储路径对用户透明导致查询效率不如非关系型数据库
SQL
SQL 结构化查询语言是一种数据库操作的非过程式编程语言,用于存取数据以及查询、更新和管理关系 型数据库系统,一般脚本文件后缀为.sql
经过 ANSI ISO 标准化组织结构进行标准化,但是各个数据库管理系统都对标准 SQL 规范进行了编改和 扩充,扩展部分各个数据库不通用,标准部分通用
SQL 的特点:
统合统一、高度非过程化
面向集合的操作方式
以同一种语法结构提供两种使用方法,命令行方式交互和嵌入主语言
语法简单,其中只有 94 个英文单词,核心功能只有 6 个单词【 insert update delete select
NoSQL
NoSQL 泛指非关系型数据库,主要用于针对超大规模和高并发的社交 SNS 类型网站的解决方案
常见的 NoSQL 数据库有 4 种类型:
key-value 数据库,使用 hash 表存储数据。例如 Redis
列存储数据库,主要针对分布式的海量数据,例如 HBase
文档型数据库,主要存储版本化的文档信息,例如 MongoDB
图形化数据库,主要用于计算数据之间的关系,例如 Neo4j
NoSQL 适用场景
数据模型比较简单
需要灵活性很强的 IT 系统中
对数据库性能要求较高
不需要高度数据一致性
SQL vs NoSQL
复杂查询 SQL 数据库比较擅长
SQL 数据库不适合分层次的数据存储, NoSQL 可以很好的实现数据的分层次存储,更适合大数据
对于要求数据严格一致性的应用中 SQL 非常使用,而且稳定,能够保证数据操作的原子性和一致
性;而 NoSQL 对事务的处理能力有限,一般保证最终一致性 SQL厂商支持,而 NoSQL 是社区支持
性能对比中, NoSQL 明显优于 SQL 数据库,一般 NoSQL 都充分的利用系统的内存资源
NoSQL 数据库开发方便,不用考虑数据关系和格式
MySQL 数据库
MySQL 使用的是 SQL 语句,体积小、速度快、免费开源的关系型数据库 MySQL 可以支持 6 万多张表,约 50 亿行的企业级数据库应用
每个表可以最多支持 64 个索引,每个所以可以由 1-16 个列构成,最大索引宽度为为 1000 字节
正常字符串的比较不区分大小写
MySQL 数据库最大限制取决于操作系统对文件大小的限制,不是 MySQL 内部限制
使用 MySQL8
MySQL8 MySQL5.7 2
MySQL 体系结构概述
MySQL 是由 SQL 接口、解析器、优化器、缓存、存储引擎
1 、客户端向 MySQL 服务器发送一个 SQL 语句
2 、服务器首先检查缓存,如果命中则立刻返回存储在缓存中的结果,否则下一步
3 、服务器首先进行 SQL 语句解析、预处理,再由优化器生成对应的执行计划
4 MySQL 服务器根据执行计划,调用存储引擎的 API 执行查询
5 、最后将查询结果返回客户端,同时缓存查询结果
MySQL 基本使用
windows
1 、下载 https://dev.mysql.com/downloads/mysql/
MySQL 本来是完全免费的产品,被 Oracle 收购后,现在分为 3 个不同的版本:
MySQL 企业版,收费或者试用
MySQL 社区版,免费的
MySQL 高级集群版,收费
MySQL 经典版,老版本,免费
在线安装
需要网络支持
选择安装类型,这里选择使用
选择需要安装的产品和特征
开始执行环境配置
绿色安装
解压压缩文件 mysql-8.0.15-winx64.zip ,将解压得到的目录可以移动到任何位置
执行初始化操作,首先进入 mysql bin 目录,在 cmd 窗口中执行命令
mysqld --initialize --console 注意:如果 data 目录已经存在,则需要删除 data 目录后再执行命令
在执行初始化操作过程中会显示一个临时生成的口令
使用 mysqld -- install mysql 添加到系统服务中,默认当机器启动时会自动启动 mysql 服务
使用 net start mysql 启动数据库服务
使用命令 mysql - uroot - p 打开客户端连接已经启动的数据库服务,这里需要输入上面生成的临时口令
修改口令 alter user 'root'@'localhost' identified with mysql_native_password by ' 新口
'
关闭服务器 net stop mysql
删除 mysql 系统服务 mysqld -- remove
常用命令
启动客户端:在 bin 目录下 mysql - uroot - p123456
命令格式为: mysql -u 用户名 -p 口令 -P 端口号 -h 主机名称 。在实际应用中,不建议直接使用 -p
令的这种格式
如果正常启动,则可以看到命令提示符 mysql>
如果需要在任意目录都可以打开客户端,则需要将 bin 的绝对目录添加到 path 系统环境变量中
查看所有的数据库 show databases ;
注意 information_schema mysql sys performance_schema 都属于系统数据库,不要直接操
作这些数据库
切换当前数据库 use 数据库名称 ;
查看当前数据库下的所有数据表 show tables ;
查看某个数据表的结构定义 desc 数据表名称 ;
放弃正在输入的命令 \c
显示命令清单 \h
退出客户端 \q ,也可以使用 exit 或者 quit
查看服务器的状态信息 \s
退出客户端 quit
SQL 语句
MySQL 中可以将 SQL 分为 4 大类
DDL 数据定义语言, create 创建、 alter 修改、 drop 删除、 truncate 截断
DML 数据操纵语言, insert 插入、 update 修改、 delete 删除
DQL 数据查询语言, select 查询
DCL 数据控制语言, grant 授权、 revoke 回收权限 DDL 数据定义语言
用于定义数据库对象的操作语句
数据库操作
创建操作
注意: DATABASE 不能改名。一些可视化工具可以改名,它是建新库,把所有表复制到新库,再
删旧库完成
语法规则 create database 数据库名称 default character set utf8 ,一般默认编码字符集为
latin1
如果数据库创建成功,则自动在数据文件夹 data 下新增一个 test 目录
删除操作
语法规则 drop database 数据库名称 ;
查看所有数据库 show databases ;
mysql 中允许同时打开多个数据库,不同的数据库管理系统不一样
切换当前数据库 use 数据库名称 ;
查看当前操作的数据库
查看数据库的创建语句
create database test default character set utf8; -- 创建数据库,名称为 test ,默认编码
字符集为 utf-8
-- 如果数据库已经存在,则再次创建会报错
create database if not exists test default character set utf8; -- 如果 test 已经存在
则不执行创建操作,同时不会报错
drop database test; -- 删除指定数据库;如果数据库不存在则报错
drop database if exists test; -- 如果存在则删除,如果不存在也不报错
use test; -- 如果数据库存在则切换到指定的数据库 test 下进行操作;如果不存在则报错
select database();
show create datbase test; 注意:要操作表格和数据之前必须先说明是对哪个数据库进行操作,否则就要对所有对象加上
据库名 .” 更改数据库字符集
默认系统数据库
系统数据库就是供 DBMS 使用的数据库,如果损坏则会导致 DBMS 无法正常启动,所以一般不建议直接操作
information_schema 记录所有数据库和数据库中表的信息
mysql 记录时区、权限之类的配置信息
sys 保存和锁、统计相关的信息
performance_schema 用于实现对运行过程的资源的使用情况的统计
test 非系统数据库,仅供测试样例
数据表的操作
创建数据表基本语法: create table 数据表的名称 ( 数据列的名称 数据类型 约束规则 ,......)engine=
存储引擎名称 default charset utf8 ;
数据表创建完成,则会发现在 data/test 目录下出现一个文件 tb_student.ibd
一般使用的存储引擎 engine 常见的有 innodb myisam 两种,如果使用 myisam 则会创建两个文件,
1 .myd 数据信息文件,其中包含表的数据; 2 .myi 索引信息文件,是用于提高查询效率的索引数查看表中的列定义 desc tb_student ;
查看具体的列定义 show create table tb_student ;
ALTER DATABASE 数据库名 CHARACTER SET 字符集 ; # 比如: gbk utf8
create table tb_student( -- 这里可以加入 if not exists 表示不存在时才进行创建。注意在一
个数据库中的表名称不允许重复。按照阿里的规范,要求基表名称必须使用【 tb_ 表】
id bigint primary key auto_increment,
name varchar ( 20 ) not null ,
sex boolean default 1 -- mysql 数据库中有一些属性数据类型的别名
) engine=innodb default charset utf8; -- 实际上从 MySQL5.5 开始默认存储引擎就是 innodb
但是一般建议还是添加上存储引擎的设置 标识符命名
数据库涉及的字符规范,注意不是语法规则,属于建议性质的规则
采用 a-z 英文字母、数字 0-9 和下划线 _ 组成,共 63 个字符,不能出现其他字符,除非是注释
不区分大小写 使用中文字符实际上是不会有语法错误的,但是不建议
一般命名长度不要超过 30 个字符的系统限制,变量名称由于需要使用 @ 标识符,所以长度限制为 29 数据库对象、变量的命名都采用英文字符,禁止使用中文命名,绝对不允许在对象名称中间出现空格 如果在命名过程中破坏规则实际上引入反引号就好` ,注意不是单引号
create table `t 1`(id int) ;
小心保留字,尽量保证命名中不采用保留字,避免容易产生冲突
注意开发中字段名称和类型名称的一致性
数据类型
定义数据类型就是定义列,数据类型决定数据的特性
数据类型主要分为字符串类型,浮点书类型和定点数类型,日期类型以及二进制类型
数据类型在不同的存储引擎上表现不同
根据所采用的数据类型,需求和数据特性选择数据类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值