【网络运维】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 的数据操作、查询优化与高级功能。

相关推荐
清平乐的技术专栏2 小时前
电脑参数自检-BIOS
运维·服务器·电脑
bing_feilong2 小时前
windows和ubuntu: ssh失败
网络·ubuntu·ssh
翼龙云_cloud2 小时前
亚马逊云渠道商:用 AWS Lightsail 30 分钟搭建专业作品集网站
运维·服务器·云计算·aws
东东的脑洞2 小时前
【面试突击】PostgreSQL vs MySQL 索引架构深度对比:聚簇索引 vs 堆表
mysql·postgresql·面试
光于前裕于后2 小时前
在AWS Redshift 中使用联邦查询 MySQL
mysql·aws·redshift
半壶清水2 小时前
ubuntu中使用使用Docker-Compose管理MySQL、Apache、PHP容器
mysql·ubuntu·docker·php·apache
IvanCodes2 小时前
openGauss 高级特性:优化器、存储引擎与分区管理
数据库·sql·opengauss
峰顶听歌的鲸鱼2 小时前
19.docker 图形化管理界面
运维·笔记·docker·容器·学习方法
浔川python社2 小时前
快手遭黑灰产猛烈攻击事件暴露出哪些安全漏洞?
网络·安全