数据库(MySQL库表操作)

目录

[1.1 SQL语句基础(SQL命令)](#1.1 SQL语句基础(SQL命令))

[1.1.1 SQL的简介](#1.1.1 SQL的简介)

[1.1.2 SQL语句的分类](#1.1.2 SQL语句的分类)

[1.1.3 SQL语句的书写规范](#1.1.3 SQL语句的书写规范)

[1.2 数据库操作](#1.2 数据库操作)

[1.2.1 查看](#1.2.1 查看)

[1.2.2 自建库](#1.2.2 自建库)

[1.2.3 切换数据库](#1.2.3 切换数据库)

[1.2.4 删库](#1.2.4 删库)

[1.3 MySQL字符集](#1.3 MySQL字符集)

[1.3.1 MySQL字符集包括:](#1.3.1 MySQL字符集包括:)

[1.3.2 utf8 和 utf8mb4 的区别](#1.3.2 utf8 和 utf8mb4 的区别)

[1.4 数据库设计与数据库对象](#1.4 数据库设计与数据库对象)

[1.4.1 数据库设计的步骤](#1.4.1 数据库设计的步骤)

[1.4.2 如何绘制 E-R图](#1.4.2 如何绘制 E-R图)

[1.4.3 使用三大范式实现数据库设计规范化](#1.4.3 使用三大范式实现数据库设计规范化)


1.1 SQL语句基础(SQL命令)

1.1.1 SQL的简介

SQL:

结构化查询语言,在关系型数据库上执行数据操作,数据检索以及数据维护的标准化语言

程序员和数据库管理员可以完成以下任务:

1、改变数据库的结构

2、更改系统的安全设置

3、增加用户对数据库或表的许可权限

4、在数据库中检索需要的信息

5、对数据库的信息进行更新、备份、还原

1.1.2 SQL语句的分类

在MySQL数据库中,SQL语句主要分为以下几类:

1、DDL(Data Definition Language):

数据库定义语言。定义对数据库对象(库、表、列、索引)的操作

关键字CREATE、DROP、ALTER、RENAME等

2、DML(Data Manipulation Language):

数据操作语言。定义对数据库记录的操作

关键字:INSERT、DELETE、UPDATE等

3、DCL(Data Control Language):

数据控制语言。定义对数据库、表、字段、用户的访问权限和安全级别

关键字:GRANT、REVOKE等

4、DQL(Data Query Language):

数据查询语言。检索并获取数据

关键字:SELECT

1.1.3 SQL语句的书写规范

在数据库系统中,SQL语句是不区分大小写的

字符串常量区则分大小写

SQL语句支持单行 | | 多行 书写,但是 必须以 ; 结尾

关键字 | | 词汇不能跨行书写

支持空格或缩进 以便提升语句的可读性

子语句通常位于独立行,便于编辑,提高可读性

1.2 数据库操作

1.2.1 查看

SHOW DATABASES [LIKE wild] ;

功能:

列出MySQL主机上的数据库

MySQL自带数据库(系统库):

information_schema:

主要存储了系统中的一些数据库对象信息,如用户信息、列消息、权限信息、字符集信息、分区信息等(数据字典)

performance_schema:

主要存储了数据库服务器的性能参数

mysql:

主要存储了系统的用户权限信息和帮助文档

sys:

5.7后新增加的产物,是 information_schema 和 performance_schema 的结合体,而且是以视图的形式显示出来的,查询出更加令人容易理解的数据

注意:

原则:不轻易访问!不轻易修改!不轻易删除!

1.2.2 自建库

创建个人数据库

语法如下:
    CREATE DATABASE IF NOT EXISTS 数据库名;
    CREATE DATABASE IF NOE EXISTS MySchool_db;

一个数据库的构成由:

表、视图、函数、查询、备份 所构成

其中,表 则是重中之重

1.2.3 切换数据库

使用 USE 关键字进行切换

语法如下:
    USE 数据库名;

作用:

指定数据库作为我们的默认数据库,用于后期建表或者其他的使用

其他:

1、查看当前访问的数据库

SELECT DATABASE();

2、查看当前数据库服务器的版本

SELECT VERSION();

3、查看当前登录的用户

SELECT USER();

4、查看用户详细信息

SELECT User,Host [,PassWord] FROM mysql.user;

1.2.4 删库

功能:

删除当前数据库>>>里面的结构 数据 全部都会消失

语法如下;
    DROP DATABASE [IF EXISTS] 数据库名;

1.3 MySQL字符集

1.3.1 MySQL字符集包括:

基字符集(CHARACTER)、校对规则(COLLATION)

latin1 支持西欧字符、希腊字符等
gbk 支持中文简体字符
big5 支持中文繁体字符
utf8 几乎支持全世界所有国家的字符
utf8mb4 是真正意义上的 uft-8

可以使用命令查看当前数据库默认的字符集

SHOW VARIABLES like 'character%';

character_set_client MySQL :

客户机字符集

character_set_connection:

数据通信链路字符集,当MySQL客户机向服务器发送请求时,请求数据以该字符集进行编码

character_set_database:

数据库字符集

1.3.2 utf8 和 utf8mb4 的区别

utf8mb4是MySQL 5.5.3后才增加的,其中 mb4 的意思是 most bytes 4 的意思,专门用来兼容四字节的 unicode

utf8mb4 是 utf8 的超集,除了将编码改为 utf8mb4 以外,不需要做任何其他的转换,但是为了节省空间一般使用 utf8 就行了

为什么 utf8 能够存储下大部分的中文汉字,为什么还要推出 utf8mb4 并且使用呢?

因为MySQL支持的 utf8 编码最大字符长度为 3字节 ,如果遇到 4字节的宽字符就会插入异常。3字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中基本多文种平面(BMP)

也就是说,任何不在基本多文本平面的 Unicode 字符,都无法使用 MySQL 的 utf8 字符集存储,包括Enoji表情,和很多不常用的汉字,以及任何新增的 Unicode 字符

所以在8.0之后,都建议使用 utf8mb4 编码

1.4 数据库设计与数据库对象

1.4.1 数据库设计的步骤

为什么要进行数据的设计:

糟糕的数据库设计 VS 成熟的数据库设计

数据冗余,存储空间造成浪费 VS 节省数据的存储空间

内存、日志、空间浪费 VS 完整性高,数据原子性强

数据的更新和插入时时刻刻伴随着风险和异常 VS 方便进行数据库应用和系统开发

数据库设计的步骤如下:

1、需求分析阶段:旨在分析客户的业务和数据处理的需求

2、概要设计阶段:设计出数据库的E-R图,确认需求信息的 正确性 和 完整性

3、详细设计阶段:运用数据库三大范式越泽,规范审核数据库结构,形成数据库模型图

4、代码编写阶段:物理实现数据库,代码实现应用

5、测试阶段:实践 || 实验

6、备份还原阶段

1.4.2 如何绘制 E-R图

绘制 E-R实体关系图的三要素:

矩形   含义:实体,一般是名词
椭圆图    含义:实体,一般是名词
菱形    含义:关系,一般是动词

例题:酒店管理系统的基本功能

第一步:收集信息

客人办理入住手续:后台数据库需要存放入住客人的信息以及客房信息

客房信息:后台数据库需要存放客房的相关信息,如:客房号、床位数量、房间价格等

客房管理信息:后台数据需要保存 客房类型信息 和 客房当前的状态信息

第二步:标识出实体

客人:入住的旅客,办理入职手续时所填写的客户信息

客房:酒店为客人提供休息的住所

第三步:标识出每个实体的属性

客人属性:姓名,身份证号等

客房属性:编号,名称,床位等

第四步:标识出实体和实体之间的关系

实体和实体之间的关系,通常使用动词去描述

入住关系

客人和客房之间存在主从关系 客房为主 是 1 客人为从 是N

1对N关系 被引用 引用关系

关系型数据库常见的映射基数

转化成 E-R图形成数据库模型图

1、将各实体转化为对应的各表,将各属性对应成为各表的列

2、标识出每个表的主键列(非空 + 唯一),一张表有且只有一个主键列

3、在表之间建立主外键,形成引用被引用关系

1.4.3 使用三大范式实现数据库设计规范化

三大范式原则:

第一范式:

目标:

确保每列的原子性

如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式

第二范式:

第二范式要求每个表只描述一件事情

第三范式:

如果一个关系满足2 NF,并且除了主键意外的其他列都不传递依赖于主键列,则满足第三范式

相关推荐
程序员大金24 分钟前
基于SSM+Vue+MySQL的酒店管理系统
前端·vue.js·后端·mysql·spring·tomcat·mybatis
Kk.61628 分钟前
SQL编程题复习(24/9/20)
数据库·sql·pta考试·专本贯通
程序员大金33 分钟前
基于SpringBoot的旅游管理系统
java·vue.js·spring boot·后端·mysql·spring·旅游
Yz987641 分钟前
Hadoop-MapReduce的 原理 | 块和片 | Shuffle 过程 | Combiner
大数据·数据库·数据仓库·hadoop·mapreduce·big data
加油=^_^=1 小时前
MySQL基础篇的补充
数据库·python·mysql
porkczr1 小时前
oracle rac多个实例就相当于多个数据库系统程序
数据库·oracle
码java的秃头阿姨2 小时前
SpringBoot设置mysql的ssl连接
spring boot·mysql·ssl
程序员大金2 小时前
基于SpringBoot+Vue+MySQL的养老院管理系统
java·vue.js·spring boot·vscode·后端·mysql·vim
大白菜和MySQL2 小时前
mysql mha高可用集群搭建
数据库·mysql
QQ爱剪辑2 小时前
MySQL基础(13)- MySQL数据类型
数据库·mysql