Mysql必知必会系列二、了解SQL和使用Mysql
文章目录
Mysql必知必会系列二、了解SQL以及Mysql的初步使用
1、数据库基础
-
数据库(DataBase)
这个其实在系列一中已经作出了说明,但由于此概念贯穿学习之路,所以这里再次作出介绍。
数据库是一个以某种有组织的方式存储的数据集合,其本质就是为一个文件系统。理解数据库的一种最简单的办法就是将其想象成一个文件柜。此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织的。
-
表(table)
表是一种结构化的文件,可用来存储某种特定类型的数据。这里最关键的一点在于,存储在表中的数据是一种类型的数据或一种清单。我们需要做到的一点就是,表中的每一个分量必须是一个不可分的数据项,也就是说不允许表中还有表。
-
模式(schema)
关于数据库和表的布局及特性的信息。注意有的人会将模式误解为数据库,实际上并不是,我们需要区分两者。
-
列(column)和数据类型(datatype)
列是表中的一个字段。所有的表都是由一个或多个列组成的。理解列的最好办法就是将数据库想象成一个网格。网格中的每一列都存储着一条特定的信息。数据库中的每一个列都有相应的数据类型。这和其他语言中的数据类型理解方式是一致的。这里不作解释。
-
行(row)
表中的数据都是按行存储的,所保存的每个记录存储在自己的行内。通俗的来讲行其实就是记录。但我们讲究标准这里还是说行。
-
主键(primary key)
一列(或一组列),其值能够唯一的区分表中的每个行。表中的任何列都可以作为主键,只要它满足一下条件:
- 任意两行都不具有相同的主键值;
- 每个行都必须具有一个主键值(主键列不允许NULL值)。
-
外键(foreign key)
外键为某个表中的一列,它包含另一个表的主键值,其定义了两个表之间的关系。
-
视图(view)
视图是从一个或几个基本表导出的表。它本身不独立存储在数据库中,即数据库中只存放视图的定义而不存放视图对应的数据。这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。但视图在概念上和基本表等同,用户可以在视图上再定义视图。
-
索引(index)
索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
2、SQL
我们学的不是mysql吗?为什么这里还需要介绍 S Q L SQL SQL语句呢?
因为SQL是关系数据库的标准语言,Mysql几乎支持所有的SQL语法,了解SQL对我们之后学习Mysql要方便很多。
2.1、SQL概述
SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持标准sql。 但是截至目前,没有一个操作系统能够支持SQL标准的所有概念和特性。所以我们在学习具体的 D B M S DBMS DBMS和操作系统时要参考其 a p i api api文档或用户手册。
2.2、SQL功能
SQL功能 | 动词 |
---|---|
数据查询 | SELECT |
数据定义 | CREATE,DROP,ALTER |
数据操纵 | INSERT,UPDATE,DELETE |
数据控制 | GRANT,REVOKE |
这些功能在mysql中同样适用。
2.3、SQL规范
- 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;
- SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。
- 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。
- 注释:单行注释:-- …,多行注释:/…/。(这里特别说明,在mysql中不仅兼容这两种注释,还可以单行注释还可以为:#…)
- sql语句可以折行操作,这在mysql中同样适用。
2.4、数据定义
关系数据库系统支持三级模式结构,其模式、外模式和内模式中的基本对象有模式、表、视图和索引等。因此SQL的数据定义功能包括模式定义、表定义、视图和索引的定义。如下表所示:
创建 | 删除 | 修改 | |
---|---|---|---|
模式 | CREATE SCHEMA | DROP SCHEMA | |
表 | CREATE TABLE | DROP TABLE | ALTER TABLE |
视图 | CREATE VIEW | DROP VIEW | |
索引 | CREATE INDEX | DROP INDEX | ALTER INDEX |
SQL标准不停供修改模式定义和修改视图定义的操作。 所以用户如果想修改这些对西昂,就必须删了重建。
这里特别说明一下模式,在mysql中其实就是数据库框架。我们怎么理解模式的定义呢?实际上就是定义个命名空间namespace。在这个命名空间中,你可以创建基表,视图,和有关的授权等等。正如在C++中, 你可以在你的命名空间中,定义你自己的类和结构体,以及其他的信息。
2.5、数据类型
数据类型 | 描述 |
---|---|
CHARACTER(n) | 字符/字符串。固定长度 n。 |
VARCHAR(n) 或 CHARACTER VARYING(n) | 字符/字符串。可变长度。最大长度 n。 |
BINARY(n) | 二进制串。固定长度 n。 |
BOOLEAN | 存储 TRUE 或 FALSE 值 |
VARBINARY(n) 或 BINARY VARYING(n) | 二进制串。可变长度。最大长度 n。 |
INTEGER§ | 整数值(没有小数点)。精度 p。 |
SMALLINT | 整数值(没有小数点)。精度 5。 |
INTEGER | 整数值(没有小数点)。精度 10。 |
BIGINT | 整数值(没有小数点)。精度 19。 |
DECIMAL(p,s) | 精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数,小数点后有 2 位数的数字。 |
NUMERIC(p,s) | 精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同) |
FLOAT§ | 近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。 |
REAL | 近似数值,尾数精度 7。 |
FLOAT | 近似数值,尾数精度 16。 |
DOUBLE PRECISION | 近似数值,尾数精度 16。 |
DATE | 存储年、月、日的值。 |
TIME | 存储小时、分、秒的值。 |
TIMESTAMP | 存储年、月、日、小时、分、秒的值。 |
INTERVAL | 由一些整数字段组成,代表一段时间,取决于区间的类型。 |
ARRAY | 元素的固定长度的有序集合 |
MULTISET | 元素的可变长度的无序集合 |
XML | 存储 XML 数据 |
3、使用mysql
这一部分,我们只是基础的使用mysql。系列一中已经介绍了如何启动mysql服务以及登录mysql,这里不在作解释。
3.1、选择数据库
当你连接到数据库中,并没有任何数据库打开供你使用。在你能执行任意数据库操作前,需要选择一个数据库。这里即可使用 S H O W SHOW SHOW和 U S E USE USE关键字(由于mysql的关键字过多,我们仅在用到的时候列举出关键字)。
数据库、表、列、用户、权限等的信息被存储在数据库和表中。不过,内部的表一般不直接访问。可用 MySQL的SHOW命令来显示这些信息(MySQL从内部表中提取这些信息)。
我们输入SHOW DataBases;
即可返回可用数据库的一个列表。包含在这个列表中的可能是mysql内部使用的数据库,如其中的information_schema、mysql、performance_schema、test
,这里不介绍这四个数据库。
那么,我们需要选择数据库后才可以对数据库进行操作。我们通过USE 数据库名;
来使用数据库,该数据库保持为默认数据库,直到语段的结尾,或者直到发布一个不同的USE语句。例如这里我们需要使用myemployees
数据库,我们输入以下内容:
USE myemployees;
程序就会返回Database changed
,需要注意的是,
U
S
E
USE
USE语句并不返回任何结果。而是依赖于使用的客户机,显示某种形式的通知。例如这里显示出的Database changed
消息是mysql命令行实用程序在数据库选择成功后显示的。
谨记:必须先使用USE打开数据库,才能读取其中的数据。
3.2、查看数据库
当我们选择好数据库之后,为了获得一个数据库内的可用表的列表,我们就可以使用SHOW Tables
,如下所示:
当然,SHOW
也可以用来使用表列,使用方法是:SHOW Columns FROM 表名;
这里的
F
R
O
M
FROM
FROM同样是关键字,含义即同其本意,从…获取,即给出相应地址供使用。在myemployees
中我们可以查看employees
表。如下:
我们发现,它对每个字段返回一行,行中包含字段名、数据类型、是否允许NULL、键信息、默认值以及其他信息(如字段employess_id
的auto_increment
)。
auto_increment(自动增量):某些表列需要唯一值。例如,订单编号、雇员ID或(如上面例子中所示的)顾客ID。在每个行添加到表中时,MySQL可以自动地为每个行分配下一个可用编号,不用在添加一行时手动分配唯一值(这样做必须记住最后一次使用的值)。这个功能就是所谓的auto_increment。如果需要它,则必须在用CREATE语句创建表时把它作为表定义的组成部分。我们在之后会介绍
CREATE
语句。
3.3、其他SHOW语句
除了以上的SHOW
语句,mysql还支持其他的语句。例如:
SHOW Status
,用于显示广泛的服务器状态信息。SHOW CREATE DataBase
和SHOW CREATE Table
,分别用来显示创建特定数据库或表的Mysql语句。SHOW GRANTS
,用来显示授权用户(所有用户或特定用户的安全权限)。GRANT语句也会在之后介绍。SHOW ERRORS
和SHOW WARNINGS
,用来显示服务器错误或警告消息。
这里列举的都是比较常用的,当然SHOW
语句并不只有这么点,我们可以执行命令HELP SHOW
来查看允许的SHOW
语句。
来显示授权用户(所有用户或特定用户的安全权限)。GRANT语句也会在之后介绍。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)