一、什么是数据库
数据库是一个系统化的、存储数据的集合,用于高效地管理、存取、更新和处理信息。它可以被视为一个电子化的数据仓库,允许用户以结构化的方式组织和存储数据。
1.1 数据库的主要特点
1.结构化存储:
数据库通常以表的形式组织数据,每个表由行(记录)和列(字段)组成。这样的结构使得数据易于理解和访问。
2.数据管理:
数据库管理系统(DBMS)是用于创建和管理数据库的软件。常见的数据库管理系统包括 MySQL、PostgreSQL、Oracle 和 Microsoft SQL Server 等。
3.数据完整性:
数据库通常有约束条件(如主键、外键、唯一性等)来确保数据的准确性和一致性。
4.多用户访问:
数据库支持多个用户同时访问和操作数据,并提供事务处理机制来保证数据的一致性和完整性。
5.数据安全:
数据库可以通过权限控制来保护数据,确保只有授权用户才能访问或修改特定的数据。
1.2 数据库系统的组成
1. 数据库管理系统(DBMS)
- 定义:数据库管理系统是用于创建、管理和操作数据库的软件。它提供了一系列功能,包括数据存储、数据检索、数据更新和数据安全。
- 功能:
- 数据定义:创建和修改数据库的结构(如表、索引、视图等)。
- 数据操控:提供数据的插入、查询、更新和删除功能。
- 数据控制:管理用户权限,确保数据安全。
2. 数据库
- 定义:数据库是存储和组织数据的集合。它由多个表组成,表内数据按行和列的方式排列。
- 组成:
- 表:数据的基本单位,包含行和列。
- 行:记录,表示一条完整的数据项。
- 列:字段,表示数据的一个属性。
3. 数据模型
- 定义:数据模型定义了数据的结构和关系。它描述了数据的逻辑结构和操作。
- 类型:
- 关系模型:使用表格结构来表示数据和关系。
- 非关系模型:如文档模型、键值模型等,用于存储更灵活的数据结构。
4. 查询处理器
- 定义:查询处理器负责解析、优化和执行用户提交的查询(SQL语句)。
- 功能:
- 解析:将SQL语句转换为内部表示。
- 优化:优化查询执行计划,以提高执行效率。
- 执行:实际执行查询并返回结果。
5. 存储管理
- 定义:存储管理负责数据在物理存储介质上的组织和管理。
- 功能:
- 数据文件管理:处理数据的存储位置和文件结构。
- 缓存管理:通过内存缓存提高数据访问速度。
- 数据备份和恢复:提供数据备份和恢复机制,确保数据安全。
6. 事务管理
- 定义:事务管理确保数据库操作的完整性和一致性。
- 功能:
- 事务控制:支持原子性、一致性、隔离性和持久性(ACID)特性。
- 错误处理:处理系统故障和错误,确保数据不受损失。
7. 安全管理
- 定义:安全管理负责保护数据库中的数据不被未授权访问。
- 功能:
- 用户身份验证:确保只有授权用户才能访问数据库。
- 权限控制:定义用户对数据库对象的访问权限。
8. 用户界面
- 定义:用户界面是用户与数据库系统交互的媒介,通常包括图形用户界面(GUI)和命令行界面(CLI)。
- 功能:
- 提供用户输入查询、查看结果和管理数据库的工具。
二、MYSQL
MySQL 是一种开源的关系数据库管理系统(RDBMS),由 Oracle 公司维护。它广泛应用于 web 开发和数据存储,因为其性能、可靠性和易用性。
2.1 MYSQL的特点
- 开源:MySQL 是开源软件,用户可以自由使用和修改其源代码。
- 关系型数据库:使用表格结构(行和列)来存储数据,支持 SQL(结构化查询语言)进行数据操作。
- 高性能:MySQL 提供高效的查询处理和数据存储,适合处理大量数据和高并发的用户请求。
- 可扩展性:可以通过分区和集群等技术来扩展数据库,以满足不断增长的存储需求。
- 多平台支持:可以在多种操作系统上运行,包括 Windows、Linux 和 macOS。
- 数据安全性:提供多种安全机制,包括用户权限管理、数据加密等。
2.2 打开MYSQL
方法一:直接打开root用户
MYSQL安装完成后会出现上图所示程序,打开并输入之前所设的密码
若最后结果如上图,则说明MYSQL安装成功。
方法二:命令行打开root用户
使用命令提示符 WIN+R----->输入cmd
然后输入命令:mysql -u root -p(密码)
方法三:连接指定地址数据库服务
命令:mysql -h 127.0.0.1 -u root -p(密码)
方法四:直接打开MySQL中的数据库
命令:mysql -D数据库名 -h主机名 -u用户名 -p密码
2.3 MYSQL常见命令
1.查看当前所有的数据库
show databases;
使用select database; 查看当前打开的数据库【没打开显示NULL】
2.打开指定的库
use 库名
3.创建数据库
create database 数据库名;
4.查看当前数据库信息
status 或者 \s
修改数据库的字符集 alter database hqyj character set gbk;
5.删除数据库
drop database 数据库名;
6.查看服务器的版本
select version();
7、退出数据库
exit(0) 或者 quit 或者 \q
2.4 SQL语言
各国有各国语言,在数据库的王国也有专门的语言。SQL(Structured Query Language)结构化查询语言 ,是访问和处理数据库的标准的计算机语言。
2.5 SQL常见命令
show databases; 查看所有的数据库
select database(); 查看当前使用的数据库
use 库名; 打开指定 的库
show tables ; 显示库中的所有表
create table 表名( 字段名 字段类型, 字段名 字段类型 ); 创建表
desc 表名; 查看指定表的结构
select * from 表名;显示表中的所有数据
2.6MYSQL语法规范
1.不区分大小写,但建议关键字大写,表名、列名小写
2.每条命令最好用分号结尾
3.每条命令根据需要,可以进行缩进 或换行
4.注释ctrl+/ 单行注释:#注释文字
单行注释:-- 注释文字
多行注释:/* 注释文字 */
2.7MYSQL数据类型
分为数值类型,字符串类型,时间日期类型
2.8MYSQL约束条件
三、navicat连接数据库
此时左侧就能看到你所连接的数据库
一些基本操作如下图
四、MYSQL运用
4.1操作数据表
4.1.1查看数据表
语法格式:SHOW TABLES;
4.1.2创建数据表
注意:要先进入数据库才可创建数据表
语法格式:
CREATE TABLE table_name(
column1(字段名1) datatype(数据类型)[contrai(约束条件)],
column2(字段名2) datatype(数据类型)[contrai (约束条件)],
.....
columnn(字段名n) datatype(数据类型)[contrai(约束条件)], PRIMARY KEY(one or more columns)
)[character set 字符集];
字符集不设置的话是默认设置
4.1.3查看表的创建语句
语法格式:
SHOW CREATE TABLE 表名;
4.1.4查看表结构
语法格式:
DESC 表名 ;
4.1.5修改表名
语法格式:
RENAME TABLE 原表名 TO 新表名;
【注意:有时出错是因为没有获得修改权限,可以使用下面修改方式:
ALTER TABLE 原表名 RENAME TO 新表名; 】
4.1.6增加数据表字段
语法格式:
ALTER TABLE 表名
ADD 列名 类型 [约束条件];
4.1.7修改数据表字段
语法格式:
ALTER TABLE 表名
CHANGE 原字段名 新字段名 类型 [约束];
注意:如果原字段名和新字段名一样的,表示不改字段名,只改字段的类型和约束,此时和modify作用一样
ALTER TABLE 表名
MODIFY 列名 类型 [约束];
4.1.8 删除数据表字段
语法格式:
ALTER TABLE 表名
DROP 字段名;
4.1.9删除数据表
语法格式:
drop table 表名;
4.2数据表范式
数据库中使用数据表范式的主要目的是为了减少数据冗余、提高数据的一致性和完整性,并简化数据的维护操作。通过范式设计,可以将数据分解到不同的表中,使得每份数据只在一个地方存储,从而大大减少了数据冗余。
范式设计的作用主要体现在以下几个方面:
- 减少数据冗余:在数据库设计中,数据冗余意味着在数据库中存储了重复的数据,这不仅占用更多的存储空间,还增加了维护的复杂性。范式设计通过将数据分解到不同的表中,确保每个数据只存储一次,从而减少了存储空间的浪费和维护的复杂性。
- 避免插入异常:如果数据库设计不合理,可能会遇到无法插入数据的情况。例如,一个存储学生和课程信息的表,如果一个新学生还没有选课,就无法添加这个学生的信息。范式设计通过将相关数据分开存储,可以避免这种插入异常。
- 避免更新异常:不合理的设计可能会导致更新数据的困难。例如,如果需要修改一门课程的信息,可能需要在多个地方进行修改。范式设计通过将相关数据分开存储,可以简化更新操作。
- 避免删除异常:不合理的设计可能会导致删除数据的困难。例如,如果需要删除一门课程,可能会意外删除相关的学生信息。范式设计通过将相关数据分开存储,可以避免这种删除异常。
数据库范式的具体内容如下:
- 第一范式(1NF):确保数据表中每个字段的值具有原子性,即不可再拆分的最小数据单元。
- 第二范式(2NF):在第一范式的基础上,确保非主属性完全依赖于码。
- 第三范式(3NF):在第二范式的基础上,确保非主属性不依赖于其他非主属性。