【网络运维】SQL 语言:MySQL数据库基础与管理

SQL 语言(上篇):数据库基础与管理

1. 关系型数据库的构成

关系型数据库由多个核心组件构成,每个组件承担不同的功能,共同支撑数据库的运行与管理。下表概括了这些组件及其关键特性:

组件 关键字 说明
数据库 database 表的集合,一个数据库中可以有多个表,在文件系统中表出就是一个目录
表 table 在数据库中以二维表的形式出现,有行和列,数据库中的数据就是存放于表中的
索引 index 索引通常建立在一个列上,用以加快数据查询速度
视图 view 用SQL语言构建的虚拟表,可以临时把两个或多个表以逻辑关系关联上,对外提供查询
存储过程 procedure 存储过程是一组为了完成特定功能的SQL语句集合,客户端可以直接调用
存储函数 function 存储函数和存储过程一样,都是SQL语句集合,但可以使用参数
触发器 tigger 触发器也是有SQL语句的集合组成,但需要达到触发条件才能调用
事件调度器 event scheduler 数据库中的计划任务
用户 user 连接服务端时的用户名
权限 privilege 每个用户可以对哪些数据库或表进行操作,在什么IP能连接

2. SQL 语言介绍

SQL(Structured Query Language) 即结构化查询语言,是关系型数据库的标准操作语言。其发展历程如下:

  • 1970年代初,埃德加·科德提出关系模型。
  • 1974年,D.D.Chamberlin 和 R.F.Boyce 在研制 System R 时开发出 SEQUEL 语言。
  • 1976年更名为 SQL,并逐步成为关系数据库的标准语言。
  • 1986年,ANSI 采纳 SQL 作为关系数据库管理系统的标准语言。
  • 1987年成为 ISO 国际标准。
  • 后续历经多个版本的更新,如 SQL-1992、SQL-1999、SQL-2008、SQL-2011 等。
  • 目前所有主流关系数据库都支持 SQL 标准,但各厂商的扩展实现(如 T-SQL、PL/SQL)存在差异。

2.1 SQL 语言规范

SQL 语句在书写和执行时遵循一定的规范:

  • 不区分大小写,但建议关键字使用大写。
  • 语句可以单行或多行书写,以 ; 结尾。
  • 关键词不能跨行或简写。
  • 使用空格和缩进提高可读性。
  • 子句通常独立成行。

示例:

bash 复制代码
mysql> select @@hostname;
+-----------------------+
| @@hostname            |
+-----------------------+
| localhost.localdomain |
+-----------------------+
1 row in set (0.00 sec)

mysql> SELect @@HOSTname;
+-----------------------+
| @@HOSTname            |
+-----------------------+
| localhost.localdomain |
+-----------------------+
1 row in set (0.00 sec)

2.2 SQL 注释

SQL 支持两种标准注释方式:

mysql 复制代码
-- 单行注释
/* 
   多行注释
   select version()\G
*/
select version()\G

MySQL 还支持 # 作为单行注释:

bash 复制代码
# select version()\G;
select version()\G;

3. 数据库对象与命名

数据库中的对象包括:

复制代码
数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等

命名规则:

  • 可包含字母、数字及 #_$ 三种特殊字符。
  • 不能使用 MySQL 保留字。

4. SQL 语句分类

SQL 语句按功能可分为以下几类:

类型 全称 说明 常用语句
DDL Data Definition Language 数据定义语言 CREATE, DROP, ALTER
DML Data Manipulation Language 数据操纵语言 INSERT, DELETE, UPDATE
DQL Data Query Language 数据查询语言 SELECT
DCL Data Control Language 数据控制语言 GRANT, REVOKE
TCL Transaction Control Language 事务控制语言 BEGIN, COMMIT, ROLLBACK, SAVEPOINT

5. SQL 语句构成

SQL 语句由关键字组成的子句构成,例如:

mysql 复制代码
SELECT host,user,authentication_string   -- SELECT 子句
FROM mysql.user                          -- FROM 子句
WHERE authentication_string = '';        -- WHERE 子句

6. 字符集与排序规则

6.1 字符集

MySQL 8.0 默认使用 utf8mb4 字符集,支持更完整的 Unicode 字符。查看支持的字符集:

mysql 复制代码
SHOW CHARACTER SET;

6.2 排序规则

排序规则决定字符串的比较和排序方式,例如是否区分大小写。查看当前排序规则:

mysql 复制代码
SHOW VARIABLES LIKE 'collation%';

常用规则:

  • utf8mb4_0900_ai_ci:不区分大小写,默认规则。
  • utf8_bin:区分大小写。

7. 管理数据库

7.1 查看数据库

mysql 复制代码
SHOW DATABASES;

7.2 创建数据库

创建时可指定字符集和排序规则:

mysql 复制代码
CREATE DATABASE testdb1;
CREATE DATABASE testdb2 DEFAULT CHARACTER SET latin1;

7.3 修改数据库

例如修改字符集:

mysql 复制代码
ALTER DATABASE testdb2 CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

7.4 删除数据库

mysql 复制代码
DROP DATABASE testdb2;

8. 数据类型

MySQL 支持多种数据类型,合理选择类型有助于优化存储与查询性能。

8.1 数值类型

类型 大小 有符号范围 无符号范围 用途
TINYINT 1 Byte (-128, 127) (0, 255) 小整数值
INT 4 Bytes (-2^31, 2^31-1) (0, 2^32-1) 大整数值
FLOAT 4 Bytes 单精度浮点数 浮点数值
DECIMAL 变长 精确小数,依赖 M、D 高精度小数

8.2 日期时间类型

类型 格式 范围
DATE YYYY-MM-DD 1000-01-01 到 9999-12-31
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 到 9999-12-31 23:59:59
TIMESTAMP YYYY-MM-DD HH:MM:SS 1970-01-01 到 2038-01-19

8.3 字符串类型

类型 最大长度 说明
CHAR 255 字符 定长字符串
VARCHAR 65535 字符 变长字符串
TEXT 65535 字符 长文本数据
BLOB 65535 字节 二进制大对象

9. 小结

本文介绍了 SQL 语言的基础组成部分,包括数据库的构成、SQL 规范、数据类型及基本数据库管理操作。掌握这些内容是进行高效数据库设计与查询的基础。后续内容将继续深入 SQL 的数据操作、查询优化与高级功能。

相关推荐
天启HTTP8 分钟前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
代码什么用20 分钟前
Spring对IoC的实现
数据库·spring
运维行者_24 分钟前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
此时不提桶,更待何时1 小时前
06-14-A-Kafka集群运维与迁移实战详解
运维·kafka
hz567892 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC3 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
程序员Sunday3 小时前
MySQL 为什么使用 B+ 树索引?把范围查询、回表和覆盖索引连起来
数据库·mysql
优橙教育3 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
IT研究所3 小时前
AI-ITR平台如何减少客户问题反复升级?
大数据·运维·人工智能·低代码·自然语言处理·安全架构·企微
半杯咖啡半行码3 小时前
Qt开发实战:数据库、MV 模式、QProcess与串口通信全攻略
数据库·qt