内容导读
- 数据库概述
- 数据库三大范式
- mysql简介与基本操作
一、数据库概述
1.1 数据库概念
数据库(DataBase,简称DB)是长期存储在计算机内部有结构的、大量的、共享的数据集合。
1、长期存储:持久存储
2、有结构
类型:数据库不仅可以存放数据,而且存放的数据还是有类型的
关系:存储数据与数据之间的关系
3、大量:大多数数据库都是文件系统的,也就是说存储在数据库中的数据实际上就是存储在磁盘的文件中
4、共享:多个应用程序可以通过数据库实现数据的共享
1.2 关系型数据库与非关系型数据库
关系型数据库:
关系型数据库,采用了关系模型来组织数据的存储,以行和列的形式存储数据并记录数据与数据之间的关系 —将数据存储在表格中,可以通过建立表格与表格之间的关联来维护数据与数据之间的关系。
学生信息—学生类—学生表
订单信息—订单类—订单表
非关系型数据库:
非关系型数据库,采用键值对的模型来存储数据,只完成数据的记录,不会记录数据与数据之间的关系。
在非关系型数据库中基于其特定的存储结构来解决一些大数据应用的难题。
NoSQL(Not only SQL)数据库来指代非关系型数据库。
1.3 常见的数据库产品
1、关系型数据库产品
MySQL
免费、Oracle
收费、PostgreSQL;
SQL Server、Access、Sybase、SQLite
2、非关系型数据库产品
(1)面向检索的列式存储 Column-Oriented
HaBase (Hadoop子系统)、BigTable (Google)
(2)面向高并发的缓存存储Key-Value
Redis
、MemcacheDB
(3)面向海量数据访问的文档存储 Document-Oriented
MongoDB
、CouchDB
1.4 数据库术语
1、数据库系统(Database System,DBS)
:数据库系统管理员、数据库管理系统及数据库组成整个单元
2、数据库管理系统(Database Management System,DBMS )
:数据库管理系统,是位于用户与操作系统之间的一层数据管理软件
3、数据库(Database)
:存储数据的集合,提供数据存储服务
4、表(table)
:类似于电子二维表格,以行与列方式存储数据的集合
5、记录(record/row)
:表中的一整行数据
6、字段(field/column)
:表中的列数据
二、数据库三大范式
1、范式的定义与作用
简单地说就是创建数据库与表的标准与规范,能够指导我们正确合理创建数据库与表,从而保证程序的正确运行。
2、常见的数据范式(normal form)有五种
按照数据库范式的标准与规范高低有:1NF,2NF、3NF、4NF、5NF(完美范式),掌握到第三范式
3、三大范式解析1NF、2NF、3NF
(1)1NF,创建的表的字段不可再分,简称为字段不可分
以学生基本表为例:
比如: 学号 学生 地址 不符合第一范式
正确:学号 姓名 性别 地址
(2)2NF,创建的表中的字段除了满足第一范式外,还要求每一条记录要由一个主键字段来惟一完全标识(确定),不能是部分标识(确定)。
以学生基本表为例:
学号 姓名 性别 课程号 课程名 学分
101 tom 男 801 高数 4
101 tom 男 802 线代 5
102 bean 男 801 高数 4
103 bean 男 803 大英一 4
主键字段决定其它字段,称为决定,其它字段被主键决定又简称为其它字段依赖主键
不允许其它字段部分依赖主键,需要拆表,否则会出现增删改的异常
以学生基本表为例:
正确:此处的学生基本表要拆成两个表
学生基本信息表: 学号 姓名 性别 出生日期
课程基本表:课程号 课程名 学分 所授教师
(3)3NF,满足第二范式外,创建的表中的字段不能有传递性依赖
以学生基本表为例:
错误:
学号 姓名 性别 学院号 学院名称 院长 院地址
正确:
学生基本信息表:学号 姓名 性别 出生年月
院系基本表: 院系号 院系名称 院系负责人 院系地址
(4)4NF,表中字段要消除非平凡函数依赖。
比如:员工基本信息,此处不符合4NF范式
错误:
工号 姓名 性别 课程号 课程 名称 孩子亲情号 孩子姓名 孩子性别 孩子出生年月
正确:
员工基本信息表:工号 姓名 性别 出生日期
课程基本信息表:课程号 课程名 学分 所授教师
子女基本信息表: 子女亲情号 姓名 性别 出年生月
(5)5NF,完美范式
说明:所谓范式,就是解决正确分表的问题,根据生活经验或项目经验分表。
4、数据库表的键,主键,候选键,外键
键:表中所有字段,有时候称为码
候选键:表中所有能够惟一标识(确定)一条记录的键,也称候选码
主键:惟一标识一条记录的字段(一个或多个),主键来自于候选键,也称主码
外键:一个表的主键是另一个表键,在另一个表中的这个键就叫外键
三、mysql简介与基本操作
3.1 mysql简介
1、MySQL是一款功能强大,速度极快的开源数据库,目前被Oracle收购,它遵循通用的SQL(结构化查询语言)标准。
2、为什么选择它?
开源,全世界顶级程序员都可以维护它的代码,对我们来说,意味着可以免费下载并使用。
SQL是数据库语言的标准,学会标准,就可以掌握其他数据库。
跨平台,windows/linux等都可以部署
2、SQL(Structured Query Language),结构化查询语言,用于查询,更新和管理数据库。
3、SQL语句的分类
3.2 mysql服务的启动与停止
方式一:windows服务中关闭
右键此电脑->管理->服务和应用程序->服务->设置自动启动
方式二:windows命令行
右击windows任务栏win10或win11小图标,以终端管理员身份登录windows命令窗口
输入:net stop mysql57 停止
输入:net start mysql57 启动
如下图所示:
3.3 MySQL中数据的逻辑结构
MySQL可以存储数据,但是存储在MySQL中的数据需要按照特定的方式进行存储,称为mysql的逻辑结构
类似数据有:
图书馆保存书籍
车库存储车辆
数据库保存这些数据,都需要按照特定的方式进行存储
比如:学生基本信息
以上的每一行数据,我们称之为一条记录(record)或一个元组
以上的每一列数据,我们称之为一列(column),每一列上的名称又称为列名或字段名(field)
3.4 SQL结构化查询语言
1、SQL的简介
SQL(Structured Query Language)结构化查询语言,用于存取、查询、更新数据以及管理关系型数据库系统。
SQL是在1981年由IBM公司推出,一经推出基于其简洁的语法在数据库中得到了广泛的应用,成为主流数据库的通用规范。
SQL由ANSI组织确定规范。
在不同的数据库产品中遵守SQL的通用规范,但是也对SQL有一些不同的改进,形成了一些数据库的专有指令,常见有:MySQL、SQLServer 、Oracle
2、SQL分类:根据SQL指令完成的数据库操作的不同,可以将SQL指令分为四类
(1)DDL(Data Definition Language)数据定义语言
用于完成对数据库对象(数据库、数据表、视图、索引等)的创建、删除、修改
(2)DML(Data Manipulation Language)数据操作/操纵语言
用于完成对数据表中的数据的添加、删除、修改操作
(3)DQL(Data Query Language)数据查询语言
用于将数据表中的数据查询出来
(4)DCL(Data Control Language)数据控制语言
用于完成事务管理等控制性操作
3、MySQL基本语法
在MySQL命令行或者navicat mysql等工具中都可以编写SQL指令
SQL指令不区分大小写
每条SQL表达式结束之后都以
;
结束SQL关键字之间以
空格
进行分隔SQL之间可以不限制换行(可以有空格的地方就可以有换行)
MySQL注释:
单行注释:
-- 注释内容
单行注释:
#注释内容
多行注释:
/*注释内容*/
3.5 DDL数据定义语言(指令)
使用DDL语句(指令)可以创建数据库、查询数据库、修改数据库、删除数据库
1、查询数据库
显示当前mysql中的数据库列表
show databases;
显示指定名称的数据的创建的SQL指令
show create database 库名;
2、创建数据库
创建数据库
create database 库名;
创建数据库,当指定名称的数据库不存在时执行创建
create database if not exists 库名;
在创建数据库的同时指定数据库的字符集(数据存储在数据库中采用的编码格式 utf8、gbk)与排序编码
create database 库名 character set 字符集 collate 排序编码;
3、修改数据库的字符集
alter database 库名 character set 字符集;
4、删除数据库
drop database 库名;
如果数据库存在则删除数据库
drop database is exists 库名;
5、使用/切换数据库
use 库名;
6、创建新用户
(1)在mysql.user表中创建
(2)使用create user 创建
create user 'tom'@'localhost' IDENTIFIED by 'abcde';
7、添加表字段,如下
alter table test add sex varchar(16);
8、重置或修改id的自增序列号,如下
alter table test auto_increment=1000;
3.6 MySQL建库建表与基本CURD
案例解析:打开navicat11,连接数据库,可视化操作或命令进行建库建表
熟悉数据库三大范式(normal form):运用生活经验结合范式的规则与标准,正确创建数据库与表。
比如:学生信息管理系统,有如下常见的表
学生基本信息表:student
教师基本信息表:teacher
科目表:subject
学籍表:school
成绩表:result
建库studb:字符集与排序规则
建表student:创建表结构(字段名,类型,长度,小数位,允许空值,主键)
其它表参考student构建即可
友情提示:
1、库由多个表组成的,表是由字段与记录组成
2、要熟练掌握表结构的设计,建表主要是设置好字段的相关信息:名称,类型,长度,小数点,是否空值,主键
3、关于字段
(1)字段名:全部小写英文字符,长字段名用下划线分段。
(2)常用字段类型:int(整型)、float(单精度小数型)、double(双精度小数型)、varchar(动态字符串)、 date/dattime/timestamp(日期型)、text(文本型)、blob(二进制型)。
(3)长度:根据类型的来设置合适的长度,但不能超过类型确定最大长度,一个长度可以存储一个英文字符,一个汉字需要2个单位长度。
(4)小数点:小数点后有几位小数,上边的长度包含小数位在内。
(5)是否空值:主键不能为空,其它字段任选。
(6)主键:字段中能惟一标识每一条记录的字段,比如:学号、工号、卡号、学籍号
更多内容请关注本站!