三MySQL 数据库的基本操作
Posted Amo Xiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三MySQL 数据库的基本操作相关的知识,希望对你有一定的参考价值。
文章目录
启动并连接 mysql 服务器后,即可对 MySQL 数据库进行操作。操作 MySQL 数据库的方法非常简单,本文将详细介绍如何创建数据库、查看数据库、选择数据库、修改数据库和删除数据库。本章知识架构及重难点如下:
操作数据库,我们可以使用图形化管理工具,但为了更好的掌握 MySQL,建议大家刚开始学习 MySQL 数据库的时候使用 SQL 语言去进行的操作。 本文对数据库的操作也是通过 SQL 语言来进行演示。
一、前置知识
一、数据库开发与实战专栏导学及数据库基础概念入门
二、MySQL 介绍及 MySQL 安装与配置
二、SQL 语言
2.1 SQL 语言的兴起与语法标准
SQL Structured Query Language 结构化查询语言是对 IBM 公司 San Jose,California 研究实验室的埃德加·科德的关系模型的第一个商业化语言实现,这一模型在其 1970 年的一篇具有影响力的论文《一个对于大型共享型数据库的关系模型》
中被描述。尽管 SQL 并非完全按照科德的关系模型设计,但其依然成为最为广泛运用的数据库语言。
1970 年代初,由埃德加·科德发表将资料组成表格的应用原则(Codd’s Relational Algebra)。
1974年,同一实验室的 D.D.Chamberlin 和 R.F. Boyce对Codd’s Relational Algebra 在研制关系数据库管理系统 System R 中,研制出一套规范语言-SEQUEL(Structured English Query Language)。
1976年11月的 IBM Journal of R&D 上公布新版本的 SQL(叫SEQUEL/2)。1980年改名为 SQL。
1979年 ORACLE 公司首先提供商用的 SQL,IBM 公司在 DB2 和 SQL/DS 数据库系统中也实现了SQL。
1986年10月美国国家标准学会 ANSI 采用 SQL 作为关系数据库管理系统的标准语言(ANSI X3. 135-1986)。
1987年成为国际标准化组织(ISO)采纳为国际标准。
1989年美国 ANSI 采纳在 ANSI X3.135-1989 报告中定义的关系数据库管理系统的 SQL 标准语言,称为 ANSI SQL 89。后续 SQL 标准经过了一系列的增订,加入了大量新特性,有各种版本: ANSI SQL,SQL-1986,SQL-1989,SQL-1992,SQL-1999,SQL-2003,SQL-2008,SQL-2011。
目前,所有主要的关系数据库管理系统支持某些形式的 SQL,大部分数据库至少遵守 ANSI SQL89 标准,虽然有这一标准的存在,但大部分的 SQL 代码在不同的数据库系统中并不具有完全的跨平台性,业内标准微软和 Sybase的 T-SQL,Oracle 的 PL/SQL。
标准 SQL 是指符合国际标准的 SQL,而非某个数据库厂商的 SQL 语法(如:Microsoft SQL Server 的 T-SQL,Oracle 的 PL/SQL,MySQL)。标准 SQL 可以在任何数据库中使用,而数据库厂商的 SQL 只适合它们对应的数据库,如 T-SQL 只适合 Microsoft SQL Server。本教程讲解的 SQL 是专门针对 MySQL 的,虽然多数语法也适用于其它 DBMS,但不是所有 SQL 语法都是完全可移植的。
2.2 SQL 是什么及 SQL 能做什么
什么是 SQL(百度百科):结构化查询语言 (Structured Query Language)简称 SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言。用于存取数据以及查询、更新和管理关系数据库系统。 SQL 语言是目前广泛使用的关系数据库标准语言,是各种数据库交互方式的基础。
著名的大型商用数据库 Oracle、DB2、Sybase、SQL Server,开源的数据库 PostgreSQL、MySQL,甚至一些小型的数据库 Access 等都支持 SQL。近些年蓬勃发展的 NoSQL 系统最初是宣称不再需要 SQL 的,后来也不得不修正为 Not Only SQL,来拥抱 SQL。
SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。与其他程序设计语言(如 C语言、Java 等)不同的是,SQL 由很少的关键字组成,每个 SQL 语句通过一个或多个关键字构成。SQL 具有如下优点:
- 一体化:SQL 集数据定义、数据操作和数据控制于一体,可以完成数据库中的全部工作。
- 使用方式灵活:SQL 具有两种使用方式,可以直接以命令方式交互使用;也可以嵌入使用,嵌入 C、C++、Fortran、COBOL、Java、Python 等语言中使用。
- 非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机
做什么
,而不需要告诉它怎么做
,存储路径的选择和操作的执行由数据库管理系统自动完成。 - 语言简洁、语法简单:该语言的语句都是由描述性很强的英语单词组成,而且这些单词的数目不多。
2.3 SQL 语言规范
1、 在数据库系统中,SQL 语句不区分大小写,虽然可以根据个人喜好选择大写还是小写(或大小写混杂),但为了理解起来更加容易,本专栏 MySQL 所有教程使用以下规则来书写 SQL 语句。
关键字大写 数据库名、表名和列名等小写
解释: SQL 不区分关键字的大小写。例如,不管写成 SELECT 还是 select,解释都是一样的。表名和列名也是如此。需要注意的是,插入到表中的数据是区分大小写的。例如,向数据库中插入单词 Computer、COMPUTER 或 computer,这三个是不一样的数据。
2、 SQL 语句可单行或多行书写,默认以 ;
结尾。
在 RDBMS(关系型数据库) 当中,SQL 语句是逐条执行的,一条 SQL 语句代表着数据库的一个操作。我们通常在句子的句尾加注标点表示这句话结束,中文句子以句号
。
结尾,英文以点号.
结尾,而 SQL 语句则使用英文分号;
结尾。
3、 关键字不能跨多行或简写。
提示:关键字是数据库事先定义的,有特别意义的单词。
4、 用空格和 TAB 缩进来提高语句的可读性。SQL 语句的单词之间必须使用 半角空格(英文空格) 或换行符来进行分隔。没有分隔的语句会发生错误,无法正常执行。下面是分隔和未分隔的 SQL 语句:
CREATE TABLE student(正确)
CREATETABLE student(错误)
CREATE TABLEstudent(错误)
不能使用全角空格(中文空格)作为单词的分隔符,否则会发生错误,出现无法预期的结果。SQL 语句中的标点符号必须都是英文状态下的,即半角字符。
5、 子句通常位于独立行,便于编辑,提高可读性。
6、 常数的书写方式是固定的。SQL 语句常常需要直接书写字符串、日期或者数字。例如,书写向表中插入字符串、日期或者数字等数据的 SQL 语句。在 SQL 语句中直接书写的字符串、日期或者数字等称为常数。常数的书写方式如下所示:
SQL 语句中含有字符串的时候,需要像 'abc' 这样,使用英文单引号'将字符串括起来,用来标识这是一个字符串。
SQL 语句中含有日期的时候,同样需要使用英文单引号将其括起来。日期的格式有很多种('26 Jan 2010' 或者'10/01/26' 等),
本专栏所有 MySQL 教程统一使用 '2022-12-31' 这种'年-月-日'的格式。
在 SQL 语句中书写数字的时候,不需要使用任何符号标识,直接写成 1000 这样的数字即可。
注意:列名不是字符串,不能使用单引号。在MySQL 中可以用倒引号`把表名和列名括起来。
获取SQL 命令使用帮助(官方帮助):https://dev.mysql.com/doc/refman/8.0/en/sql-statements.html
查看 SQL 帮助:mysql> HELP KEYWORD
2.4 SQL 语句分类
1、数据定义语言(Data Definition Language,DDL)。 用来创建或删除数据库以及表等对象,主要包含以下几种命令:
DROP: 删除数据库和表等对象
CREATE: 创建数据库和表等对象
ALTER: 修改数据库和表等对象的结构
2、数据操作语言(Data Manipulation Language,DML)。 用来变更表中的记录,主要包含以下几种命令:
SELECT:查询表中的数据
INSERT:向表中插入新数据
UPDATE:更新表中的数据
DELETE:删除表中的数据
3、数据查询语言(Data Query Language,DQL)。 用来查询表中的记录,主要包含 SELECT 命令,来查询表中的数据。
4、数据控制语言(Data Control Language,DCL)。 用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对数据库中的用户设定权限。主要包含以下几种命令:
GRANT:赋予用户操作权限
REVOKE:取消用户的操作权限
COMMIT:确认对数据库中的数据进行的变更
ROLLBACK:取消对数据库中的数据进行的变更
TCL:Transaction Control Language 事务控制语言 COMMIT,ROLLBACK,SAVEPOINT
三、认识数据库
在进行数据库操作前,首先需要对其有一个基本的了解。本小节再次对数据库的基本概念、数据库常用对象和系统数据库进行详细介绍。
3.1 数据库基本概念
数据库(DataBase) 是按照数据结构来组织、存储和管理数据的仓库,是存储在一起的相关数据的集合。其优点主要体现在以下几个方面。
- 减少数据的冗余度,节省数据的存储空间。
- 具有较高的数据独立性和易扩充性。
- 实现数据资源的充分共享。
下面介绍与数据库相关的几个概念:
1、数据库系统。 数据库系统(DataBase System,DBS)是采用数据库技术的计算机系统,是由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)和软件平台(软件)5个部分构成的运行实体。其中,数据库管理员(DataBase Administrator,DBA)是对数据库进行规划、设计、维护和监视等的专业管理人员,在数据库系统中起着非常重要的作用。
2、数据库管理系统。 数据库管理系统(DataBase Management System,DBMS)是数据库系统的一个重要组成部分,是位于用户与操作之间的一层数据管理软件,负责数据库中的数据组织、数据操纵、数据维护和数据服务等,主要具有如下功能。
- 数据存取的物理构建:为数据模式的物理存取与构建提供有效的存取方法与手段。
- 数据操纵功能:为用户使用数据库的数据提供方便,如查询、插入、修改、删除等以及简单的算术运算和统计。
- 数据定义功能:用户可以通过数据库管理系统提供的数据定义语言(Data Definition Language,DDL)方便地对数据库中的对象进行定义。
- 数据库的运行管理:数据库管理系统统一管理数据库的运行和维护,以保障数据的安全性、完整性、并发性和故障的系统恢复性。
- 数据库的建立和维护功能:数据库管理系统能够完成初始数据的输入和转换、数据库的转储和恢复、数据库的性能监视和分析等任务。
3、关系数据库。 关系数据库是支持关系模型的数据库。关系模型由关系数据结构、关系操作集合和完整性约束3个部分组成。
- 关系数据结构:在关系模型中数据结构单一,现实世界的实体以及实体间的联系均用关系来表示,实际上关系模型中数据结构就是一张二维表。
- 关系操作集合:关系操作分为关系代数、关系演算、具有关系代数和关系演算双重特点的语言(SQL)。
- 完整性约束:包括实体完整性、参照完整性和用户定义完整性。
3.2 数据库常用对象
在 MySQL 的数据库中,表、字段、索引、视图和存储过程等具体存储数据或对数据进行操作的实体都被称为数据库对象。下面介绍几种常用的数据库对象。
1、表。 表是包含数据库中所有数据的数据库对象,由行和列组成,用于组织和存储数据。
2、字段。 表中每列称为一个字段,字段具有自己的属性,如字段类型、字段大小等。其中,字段类型是字段最重要的属性,它决定了字段能够存储哪种数据。SQL 规范支持5种基本字段类型:字符型、文本型、数值型、逻辑型和日期时间型。
3、索引。 索引是一个单独的、物理的数据库结构。它是依赖于表建立的,有了它,数据库程序无须对整个表进行扫描,就可以在其中找到所需的数据。
4、视图。 视图是从一张或多张表中导出的表(也称虚拟表),是用户查看数据表中数据的一种方式。表中包括几个被定义的数据列与数据行,其结构和数据建立在对表的查询基础之上。
5、存储过程。 存储过程(Stored Procedure)是一组为了完成特定功能的 SQL 语句集合(包含查询、插入、删除和更新等操作),经编译后以名称的形式存储在 MySQL 服务器端的数据库中,由用户通过指定存储过程的名字来执行。当这个存储过程被调用执行时,这些操作也会同时执行。
3.3 系统数据库
系统数据库是指安装完 MySQL 服务器后,会附带一些数据库。例如,在默认安装的 MySQL 中,会默认创建如下图所示的4个数据库,这些数据库就称为系统数据库。系统数据库记录一些必需的信息,用户不能直接修改。
下面将对上图中所示的系统数据库分别进行介绍:
1、information_schema 数据库。 information_schema 数据库主要用于存储 MySQL 服务器所有数据库的信息,如数据库的名、数据库的表、访问权限、数据库表的数据类型、数据库索引的信息等。
2、mysql 数据库。 mysql 数据库是 MySQL 的核心数据库,主要负责存储数据库的用户、权限设置、关键字等 MySQL 自己需要使用的控制和管理信息。
3、performance_schema 数据库。 performance_schema 数据库主要用于收集数据库服务器性能参数,可用于监控服务器在一个较低级别的运行过程中的资源消耗、资源等待等情况。
4、sys 数据库。 sys 数据库中所有的数据源来自 performance_schema,目标是把 performance_schema 的复杂度降低,让 DBA 能更好地阅读这个库里的内容,让 DBA 更快地了解 DB 的运行情况。
四、创建数据库
在 MySQL 中,可以使用 CREATE DATABASE 语句和 CREATE SCHEMA 语句创建 MySQL 数据库,其语法如下:
CREATE DATABASE|SCHEMA [IF NOT EXISTS] 数据库名
[
[DEFAULT] CHARACTER SET [=] 字符集 |
[DEFAULT] COLLATE [=] 校对规则名称
];
说明:在语法中,花括号
表示必选项;中括号
[]
表示可选项;竖线|
表示分隔符两侧的内容为或
的关系。在上面的语法中DATABASE|SCHEMA 表示要么使用关键字 DATABASE,要么使用SCHEMA,但不能全不使用。
参数说明如下:
- [IF NOT EXISTS]:可选项,表示在创建数据库前进行判断,只有该数据库目前尚未存在时才执行创建语句。
- 数据库名:必须指定。在文件系统中,MySQL 的数据存储区将以目录方式表示 MySQL 数据库。因此,这里的数据库名必须符合操作系统文件夹的命名规则,而在 MySQL 中是不区分大小写的。
- [DEFAULT]:可选项,表示指定默认值。
- CHARACTER SET [=]字符集:可选项,用于指定数据库的字符集。如果不想指定数据库所使用的字符集,那么就可以不使用该项,这时 MySQL 会根据 MySQL 服务器默认使用的字符集来创建该数据库。这里的字符集可以是 GB2312 或者GBK(简体中文)、UTF8(针对 Unicode 的可变长度的字符编码,也称万国码)、BIG5(繁体中文)、Latin1(拉丁文) 等。其中最常用的就是UTF8和GBK。
- COLLATE [=]校对规则名称:可选项,用于指定字符集的校对规则。例如,utf8_bin或者gbk_chinese_ci。
在创建数据库时,数据库命名有以下几项规则:
1、不能与其他数据库重名,否则将发生错误。
2、名称可以由任意字母、阿拉伯数字、下画线(_)和 $
组成,可以使用上述的任意字符开头,但不能使用单独的数字,否则会与数值相混淆。
3、名称最长可为 64 个字符,而别名可长达 256 个字符。
4、不能使用 MySQL 关键字作为数据库名、表名。
5、默认情况下,在 Windows 下数据库名、表名的大小写是不敏感的,而在 Linux 下数据库名、表名的大小写是敏感的。为了便于数据库在平台间进行移植,建议读者采用小写字母来定义数据库名和表名。
【示例1】通过 CREATE DATABASE 语句创建一个名称为 db_admin 的数据库。
【示例2】通过 CREATE SCHEMA 语句创建一个名称为 db_admin1 的数据库。
提示: 上述创建数据库两者的功能是一样的。在使用 MySQL 官网中提供的 MySQL Workbench 图形化工具创建数据库时,使用的就是这种方法。
【示例3】通过 CREATE DATABASE 语句创建一个名称为 db_test 的数据库,并指定其字符集为 utf8mb4。
补充: utf8mb4 是 utf8 的超集并完全兼容 utf8,能够用4个字节存储更多的字符。标准的 UTF-8 字符集编码是可以使用 1~4 个字节去编码21位字符,这几乎包含了世界上所有能看见的语言。MySQL 里面实现的 utf8 最长使用3个字符,包含了大多数字符但并不是所有。例如,emoji 表情和一些不常用的汉字 (如墅) 需要 utf8mb4 才能支持。
【示例4】通过 CREATE DATABASE 语句创建一个名称为 db_test1 的数据库,并在创建前判断该数据库名称是否存在,只有不存在时才进行创建。
五、查看数据库
成功创建数据库后,使用 SHOW 命令查看MySQL服务器中的所有数据库信息,语法如下:
SHOW DATABASES|SCHEMAS
[LIKE '模式' WHERE 条件];
参数说明如下:
- DATABASES|SCHEMAS:表示必须有一个是必选项,用于列出当前用户权限范围内所能查看到的所有数据库名称。这两个选项的结果是一样的,使用哪个都可以。
- LIKE:可选项,用于指定匹配模式。
- WHERE:可选项,用于指定数据库名称查询范围的条件。
【示例5】使用 SHOW DATABASES 语句查看 MySQL 服务器中的所有数据库名称。
【示例6】筛选以 db_ 开头的数据库名称。
六、选择数据库
在 MySQL 中,使用 CREATE DATABASE 语句创建数据库后,该数据库并不会自动成为当前数据库。如果想让它成为当前数据库,需要使用 MySQL 提供的 USE 语句。USE 语句可以实现选择一个数据库,使其成为当前数据库。只有使用 USE 语句指定某个数据库为当前数据库后,才能对该数据库及其存储的数据对象执行操作。USE 语句的语法格式如下:
USE 数据库名;
说明: 使用 USE 语句将数据库指定为当前数据库后,当前数据库在当前工作会话关闭(即断开与该数据库的连接)或再次使用 USE 语句指定数据库时,结束工作状态。
【示例7】 选择名称为 db_admin 的数据库,设置其为当前默认的数据库。
七、修改数据库
在 MySQL 中,创建一个数据库后,还可以对其进行修改,不过这里的修改是指可以修改数据库的相关参数,并不能修改数据库名。修改数据库可以使用 ALTER DATABASE 或者 ALTER SCHEMA 语句来实现,语法格式如下:
ALTER DATABASE | SCHEMA [数据库名]
[DEFAULT] CHARACTER SET [=] 字符集
| [DEFAULT] COLLATER [=] 校对规则名称
参数说明如下:
- DATABASES|SCHEMAS:表示必须有一个是必选项,这两个选项的结果是一样的,使用哪个都可以。
- [数据库名]:可选项,如果不指定要修改的数据库,那么将修改当前(默认)的数据库。
- [DEFAULT]:可选项,表示指定默认值。
- CHARACTER SET [=]字符集:可选项,用于指定数据库的字符集。
- COLLATE [=]校对规则名称:可选项,用于指定字符集的校对规则。例如,utf8_bin 或者 gbk_chinese_ci。
【示例8】修改创建的数据库 db_admin,设置默认字符集和校对规则。
八、删除数据库
在 MySQL 中,可以通过使用 DROP DATABASE 或者 DROP SCHEMA 语句来删除已经存在的数据库。使用该命令删除数据库的同时,该数据库中的表,以及表中的数据也将永久删除,因此,在使用该语句删除数据库时一定要小心,以免误删除有用的数据库。DROP DATABASE 或者 DROP SCHEMA 语句的语法格式如下:
DROP DATABASE|SCHEMA [IF EXISTS] 数据库名;
参数说明如下:
- DATABASE|SCHEMA:表示必须有一个是必选项,这两个选项的结果是一样的,使用哪个都可以。
- [IF EXISTS]:用于指定在删除数据前,先判断该数据库是否存在,只有存在时,才会执行删除操作,这样可以避免删除不存在的数据库时产生异常。
注意:
在使用DROP DATABASE或者DROP SCHEMA语句时,用户必须具有对数据库进行删除的权限。
在删除数据库时,该数据库上的用户权限是不会被自动删除的。
删除数据库时应谨慎,一旦执行该操作,数据库的所有结构和数据都会被删除,没有恢复的可能,除非数据库有备份。
【示例9】通过 DROP DATABASE 语句删除名为 db_admin 的数据库。
【示例10】通过 DROP DATABASE IF EXISTS 语句删除名称 为 db_admin 的数据库(该数据库不存在)。
注意: 安装 MySQL 后,系统会自动创建两个名称分别为 performance_schema 和 mysql 的系统数据库,MySQL 把与数据库相关的信息存储在这两个系统数据库中,如果删除了这两个数据库,那么 MySQL 将不能正常工作,所以这两个数据库一定不能删除。
九、实践与练习
【练习1】通过 CREATE SCHEMA 语句创建一个名称为 db_amo 的数据库,并指定其字符集为 UTF-8。
【练习2】通过 DROP SCHEMA 语句删除第1题中创建的数据库 db_amo,并且指定只有该数据库存在时才删除。
【练习3】通过 SHOW SCHEMAS 语句筛选以 db_ 开头的数据库名称。
至此今天的学习就到此结束了,笔者在这里声明,笔者写文章只是为了学习交流,以及让更多学习数据库的读者少走一些弯路,节省时间,并不用做其他用途,如有侵权,联系博主删除即可。感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!
好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请点赞
、评论
、收藏
一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注
我哦!
以上是关于三MySQL 数据库的基本操作的主要内容,如果未能解决你的问题,请参考以下文章
Web前端自制精简版的思源黑体ttf(728kb) - 包含2630个常用汉字+字母+数字+常用符号