⭐⭐⭐⭐⭐⭐
Github主页👉https://github.com/A-BigTree
笔记链接👉https://github.com/A-BigTree/Code_Learning
⭐⭐⭐⭐⭐⭐
如果可以,麻烦各位看官顺手点个star~😊
如果文章对你有所帮助,可以点赞👍收藏⭐支持一下博主~😆
1 数据库概述
1.1 为什么使用数据库
- 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成;
- 持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中;
1.2 数据库的相关概念
1.2.1 数据库相关概念
- 数据库(Database,DB):存储数据的仓库,其本质是一个文件系统,它保存了一系列有组织的数据;
- 数据库管理系统(Database Management System,DBMS):操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据;
- 结构化查询语言(Structure Query Language,SQL):专门用来与数据库通信的语言;
1.2.2 数据库与数据库管理系统的关系
数据库管理系统(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体用户的数据。
数据库管理系统、数据库和表的关系如图所示:
1.2.3 常见数据库
MySQL、Oracle、db2、SQLServer
1.3 MySQL介绍
- MySQL是一个
开放源代码的关系型数据库管理系统
,由瑞典MySQL AB(创始人Michael Widenius)公司,1995年开发,迅速成为开源数据库的 No.1; - 2008被
Sun
收购(10亿美金),2009年Sun被Oracle
收购。MariaDB
应运而生。(MySQL 的创造者担心 MySQL 有闭源的风险,因此创建了 MySQL 的分支项目 MariaDB); - MySQL6.x 版本之后分为
社区版
和商业版
; - MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性;
- MySQL是开源的,所以你不需要支付额外的费用;
- MySQL是可以定制的,采用了
GPL(GNU General Public License)
协议,你可以修改源码来开发自己的MySQL系统; - MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库;
- MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持
4GB
,64位系统支持最大的表文件为8TB
; - MySQL使用
标准的SQL数据语言
形式; - MySQL可以允许运行于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP和Ruby等。
1.4 RDBMS与非RDBMS
1.4.1 关系型数据库(RDBMS)
实质
- 这种类型的数据库是
最古老
的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系
(即二维表格形式); - 关系型数据库以
行(row)
和列(column)
的形式存储数据,以便于用户理解。这一系列的行和列被称为表(table)
,一组表组成了一个库(database); - 表与表之间的数据记录有
关系(relationship)
。现实世界中的各种实体以及实体之间的各种联系均用关系模型
来表示。关系型数据库,就是建立在关系模型
基础上的数据库;
优势
- 复杂查询。可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询;
- 事务支持。使得对于安全性能很高的数据访问要求得以实现。
1.4.2 非关系型数据库
非关系型数据库,可看成传统关系型数据库的功能 阉割版本
,基于键值对存储数据,不需要经过SQL层的解析, 性能非常高
。同时,通过减少不常用的功能,进一步提高性能。
2 MySQL环境搭建
2.1 MySQL下载、安装、配置、卸载
这里不再描述,网上有很多教程😀
2.2 MySQL登录
2.2.1 服务的启动和停止
用管理员身份
打开windows命令行:
# 启动MySQL
net start MySQL服务名
# 停止MySQL
net stop MySQL服务名
2.2.2 登陆与退出
用管理员身份
打开windows命令行:
mysql -h 主机名 -P 端口号 -u 用户名 -p密码
-p
与密码之间不能有空格
退出登录:
exit
或
quit
3 基本的SELECT语句
3.1 SQL概述
SQL语言在功能上主要分为如下3大类:
- DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。主要的语句关键字包括
CREATE
、DROP
、ALTER
等; - DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记录,并检查数据完整性。主要的语句关键字包括
INSERT
、DELETE
、UPDATE
、SELECT
等。SELECT
是SQL语言的基础,最为重要; - DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括
GRANT
、REVOKE
、COMMIT
、ROLLBACK
、SAVEPOINT
等;
因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类:
DQL
(数据查询语言)。还有单独将
COMMIT
、ROLLBACK
取出来称为TCL(Transaction Control Language,事务控制语言)。
3.2 SQL语言的规则与规范
3.2.1 基本规则
- SQL可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进;
- 每条命令以
;
或\g
或\G
结束; - 关键字不能被缩写也不能分行关于标点符号必须保证所有的
()
、单引号
、双引号
是成对结束的必须使用英文状态下的半角输入方; - 字符串型和日期时间类型的数据可以使用单引号
(' ')
表示 - 列的别名,尽量使用双引号
(" ")
,而且不建议省略AS
;
3.2.2 SQL大小写规范
- MySQL 在 Windows 环境下是大小写不敏感的;
- MySQL 在 Linux 环境下是大小写敏感的
- 数据库名、表名、表的别名、变量名是严格区分大小写的;
- 关键字、函数名、列名(或字段名)、列的别名(字段的别名) 是忽略大小写的;
- 推荐采用统一的书写规范:
- 数据库名、表名、表别名、字段名、字段别名等都
小写
; - SQL 关键字、函数名、绑定变量等都
大写
;
- 数据库名、表名、表别名、字段名、字段别名等都
3.2.3 注释
# 单行注释(MySQL特有)
-- 单行注释(需空格
/* 多样注释 */
3.2.4 命名规则
- 数据库、表名不得超过
30
个字符,变量名限制为29
个; - 必须只能包含
A–Z
,a–z
,0–9
,_
共63个字符; - 数据库名、表名、字段名等对象名中间不要包含空格;
- 同一MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名;
- 必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用 `(着重号)引起来;
- 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了;
3.2.5 数据导入
mysql> source d:\mysql.sql
3.3 基本的SELECT语句
3.3.1 SELECT...FROM
语法
SELECT 标识选择列
FROM 标识从哪个表中选择
一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符
*
。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。通配符的优势是,当不知道所需要的列的名称时,可以通过它获取它们。在生产环境下,不推荐直接使用
SELECT *
进行查询。
3.3.2 列的别名
- 重命名一个列;
- 便于计算;
- 紧跟列名,也可以在列名和别名之间加入关键字
AS
,见名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写; AS
可以省略;- 建议别名简短,见名知意;
3.3.3 去除重复行
语法
SELECT DISTINCT 标识选择列
FROM 标识从哪个表中选择
3.4 显示表结构
DESCRIBE 表名
或
DESC 表名
3.5 过滤数据
SELECT 字段1, 字段2
FROM 表名
WHERE 过滤条件
⭐⭐⭐⭐⭐⭐
Github主页👉https://github.com/A-BigTree
笔记链接👉https://github.com/A-BigTree/Code_Learning
⭐⭐⭐⭐⭐⭐
如果可以,麻烦各位看官顺手点个star~😊
如果文章对你有所帮助,可以点赞👍收藏⭐支持一下博主~😆