文章目录
MySQL的基本操作
前言
在MySQL中,可以创建多个不同名称的数据库存储数据,数据库可以看作是一个专门存储数据对象的容器,每一个数据库都有唯一的名称,数据库的一个重要组成部分就是数据表,每一个数据库都是由若干个数据表组成的,数据表是用来存放数据的;充分了解对数据库和数据表的操作才能更好的管理数据库
数据库的操作
数据库的操作主要包括查看、创建、删除、修改数据库,通过这些操作来管理数据库
查看数据库
语法格式
show databases [LIKE '查看的数据库名'];
[]:可选项
show databases语句用来查看或显示当前用户在权限范围内的数据库,当存在多个数据库时,可以使用LIKE用于匹配指定的数据库名称
LIKE可以进行全部匹配,也可以进行部分匹配
![mysql基本操作查看数据库](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20220119/mysql基本操作查看数据库.2owsjfi424w0.webp)
- information_schema:主要存储了系统中一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息和分区信息
- performance_schema:主要用于收集数据库服务器的性能参数
- mysql:MySQL的核心数据库,主要用于负责存储数据库用户、用户访问权限等MySQL自己需要的控制管理信息
- sys:MySQL 5.7 安装完成后会多一个 sys 数据库,上图是MySQL5.5所以没有sys
- sys数据库主要是用来提供视图,数据都来自于performance_schema,主要是让开发者和使用者更方便的查看性能问题
创建数据库
语法格式
CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>]
[[DEFAULT] COLLATE <校对规则名>];
[]:都是可选项
create database语句用来创建数据库
![mysql基本操作创建数据库](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20220119/mysql基本操作创建数据库.3g34pxd1anm0.webp)
- 数据库名不能以数字开头,因为MySQL的数据存储区是以目录的形式来表示某一个数据库的,所以数据库名的命令必须遵守文件夹命名规则,不能以数字开头
- 当创建数据库时需要判断数据库名是否已经存在可以使用 IF NOT EXISTS
- CHARACTER SET <字符集名>:可以用来指定数据库的字符集,指定字符集是为了避免在数据库存储过程中数据 出现乱码的现象,不指定的话则会使用默认的字符集,字符集定义存储字符串的方式
- COLLATE <校对规则名>:指定字符集的校对规则,校对规则定义了字符串比较的方式
选择数据库
语法格式
use 数据库名;
use语句是用来指定进入某个数据库,可以完成一个数据到另一个数据库的跳转
- database changed:表名数据库之间已经进行了跳转
修改数据库
语法格式
ALTER DATABASE [数据库名] {
[ DEFAULT ] CHARACTER SET <字符集名> |
[ DEFAULT ] COLLATE <校对规则名>}
alter database:可以用来修改已经创建或存在的数据库的相关参数
![mysql基本操作修改数据库](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20220119/mysql基本操作修改数据库.42jtdihs2zm0.webp)
- 使用alter database语句需要获得数据库的alter权限
- alter database语句主要用于更改数据库的全局特性
- CHARACTER SET用于更改数据库字符集
删除数据库
语法格式
DROP DATABASE [ IF EXISTS ] <数据库名>;
drop database语句用来删除已创建的数据库,删除数据库是将已经存在的数据库从磁盘空间上清除,使用Drop database命令时要非常谨慎,在执行该命令时不会给出任何提醒确认信息,Drop database命令执行后,数据库中的数据会被一起删除并且无法恢复
![mysql基本操作删除数据库](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20220119/mysql基本操作删除数据库.4uiifi35p720.webp)
- IF EXISTS:用于防止当数据库不存在时发生错误
- 使用drop 语句时需要获得数据库drop权限
数据表的操作
数据表的操作主要包括有创建数据表、查看数据表结构、修改数据表和删除数据表等
查看数据表
语法格式
show tables;
show tables:用于查看该数据库下所有的表
创建数据表
创建数据表指的是在已经创建的数据库中建立新表
创建数据表的过程是规定数据列的属性的过程,同时也是数据完整性约束的过程
语法格式
CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];
表定义选项为:
<列名1> <类型1> [,…] <列名n> <类型n>
CREATE TABLE 命令语法比较多,其主要是由表创建定义(create-definition)、表选项(table-options)和分区选项(partition-options)所组成的
![mysql基本操作创建数据表](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20220119/mysql基本操作创建数据表.51dnmywjf3s0.webp)
- create table 语句使用时必须获得创建表的权限
- 表定义选项:表创建定义,列名、列的定义以及可能空值情况完整性约束或表索引组成
- 创建表名时不能使用关键字
- 数据表中的多个列的名称和数据类型之间要用逗号隔开
查看表结构
语法格式
DESCRIBE <表名>;
DESC <表名>;
DESCRIBE/DESC 语句会以表格的形式来展示表的字段信息,包括字段名、字段数据类型、是否为主键、是否有默认值等
![mysql基本操作查看表结构](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20220119/mysql基本操作查看表结构.3x8axbuh8u80.webp)
DESCRIBE 和 DESC 查看表 player的表结构
- Null字段:表示该列是否可以存储NULL值
- Key字段:表示该列是否为索引,PRI 表示该列是表主键的一部分,UNI 表示该列是 UNIQUE 索引的一部分,MUL 表示在列中某个给定值允许出现多次
- Default:表示该列是否有默认值,如果有则表示该字段的默认值
- Extra:表示可以获取的与给定列有关的附加信息,如 AUTO_INCREMENT 等
SHOW CREATE TABLE player\G来查看指定数据表的定义,用SQL语句的形式来展示表信息
修改数据表
语法格式
ALTER TABLE <表名> [修改选项]
修改选项为:
{ ADD COLUMN <列名> <类型>
| CHANGE COLUMN <旧列名> <新列名> <新列类型>
| ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
| MODIFY COLUMN <列名> <类型>
| DROP COLUMN <列名>
| RENAME TO <新表名>
| CHARACTER SET <字符集名>
| COLLATE <校对规则名> }
alter table语句用来修改数据库中原有表的结构
![msyql基本操作修改数据表](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20220119/msyql基本操作修改数据表.1z61s8ewu068.webp)
修改字段名称
语法格式
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
CHANGE 也可以只修改数据类型,实现和 MODIFY 同样的效果,方法是将 SQL 语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”
- 旧字段名:指修改前的字段名;
- 新字段名:指修改后的字段名;
- 新数据类型:指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样,但数据类型不能为空
修改字段数据类型
语法格式
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
修改字段的数据类型就是把字段的数据类型转换成另一种数据类型,由于不同类型的数据在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录,因此,当数据表中已经有数据时,不要轻易修改数据类型
- 表名:指要修改数据类型的字段所在表的名称;
- 字段名:指需要修改的字段;
- 数据类型:指修改后字段的新数据类型
删除字段
语法格式
ALTER TABLE <表名> DROP <字段名>;
删除字段是将数据表中的某个字段从表中移除
添加字段
语法格式
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件] FIRST|AFTER 字段名;
MySQL 允许在开头、中间和结尾处添加字段,一个完整的字段包括字段名、数据类型和约束条件
![mysql基本操作添加字段](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20220119/mysql基本操作添加字段.4g2pxqvt0lc0.webp)
- <表名> 为数据表的名字;
- <新字段名> 为所要添加的字段的名字;
- <数据类型> 为所要添加的字段能存储数据的数据类型;
- [约束条件] 是可选的,用来对添加的字段进行约束
- 当添加语句后面为FIRST表示新增的字段的位置为第一个
- 当添加语句后面为AFTER表示新增的字段位置在某一个字段后面
- 若添加语句后面未指定新增字段位置则默认为最后一个字段的位置
删除数据表
语法格式
DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 ...]
DROP TABLE 语句可以删除一个或多个数据表,在删除表的同时,表的结构和表中所有的数据都会被删除,因此在删除数据表之前最好先备份,以免造成无法挽回的损失
![mysql基本操作删除数据表](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20220119/mysql基本操作删除数据表.698tlprw2uc0.webp)
- 表名1, 表名2, 表名3 …表示要被删除的数据表的名称。DROP TABLE 可以同时删除多个表,只要将表名依次写在后面,相互之间用逗号隔开即可。
- IF EXISTS 用于在删除数据表之前判断该表是否存在,如果不加 IF EXISTS,当数据表不存在时 MySQL 将提示错误,中断 SQL 语句的执行;加上 IF EXISTS 后,当数据表不存在时 SQL 语句可以顺利执行,但是会发出警告
- 用户必须拥有执行 DROP TABLE 命令的权限,否则数据表不会被删除。
- 表被删除时,用户在该表上的权限不会自动删除
SQL错误代码
MySQL 出错时反馈的代码代表出错的原因,才能了解 MySQL 数据库的错误,找出原因,解决问,下面介绍 MySQL 服务器和客户端中的错误代码、提示消息的生成方式和查看方法,最后还对 MySQL 中常见的错误代码做了详细说明
服务端客户端错误代码和消息
默认情况下服务器出错代码都是以1开头,客户端出错代码都是以2开头的
当登录MySQL密码输入错误,系统提示1045错误代码,表示不能连接数据库,用户名或密码错误
当停止mysql服务重新登录MySQL时,系统提示2003错误代码 ,表示不能连接到本地的MySQL服务器,未启动MySQL服务
常见的错误代码
服务端错误代码
错误代码 | 说 明 |
---|---|
1004 | 无法创建文件 |
1005 | 无法创建数据表、创建表失败 |
1006 | 无法创建数据库、创建数据库失败 |
1007 | 无法创建数据库,数据库己存在 |
1008 | 无法删除数据库,数据库不存在 |
1009 | 不能删除数据库文件导致删除数据库失败 |
1010 | 不能删除数据目录导致删除数据库失败 |
1011 | 删除数据库文件时出错 |
1012 | 无法读取系统表中的记录 |
1013 | 无法获取的状态 |
1014 | 无法获得工作目录 |
1015 | 无法锁定文件 |
1016 | 无法打开文件 |
1017 | 无法找到文件 |
1018 | 无法读取的目录 |
1019 | 无法为更改目录 |
1020 | 记录已被其它用户修改 |
1021 | 硬盘剩余空间不足,请加大硬盘可用空间 |
1022 | 关键词重读,更改记录失败 |
1023 | 关闭时发生错误 |
1025 | 更改名字时发生错误 |
1032 | 记录不存在 |
1036 | 数据表是只读的,不能对它进行修改 |
1037 | 系统内存不足,请重启数据库或重启服务器 |
1042 | 无效的主机名 |
1044 | 当前用户没有访问数据库的权限 |
1045 | 不能连接数据库,用户名或密码错误 |
客户端错误代码
错误代码 | 说 明 |
---|---|
2000 | 未知 MySQL 错误 |
2001 | 不能创建 UNIX 套接字(%d) |
2002 | 不能通过套接字“ %s”(%d)连接到本地 MySQL 服务器, self 服务未启动 |
2003 | 不能连接到 %s ”(%d )上的 MySQL 服务器,未启动 mysql 服务 |
2004 | 不能创建 TCP/IP 接字(%d) |
2005 | 未知的 MySQL 服务器主机“ %s”(%d) |
2007 | 协议不匹配,服务器版本=%d,客户端版本=%d |
2008 | MySQL 客户端内存溢出 |
2009 | 错误的主机信息 |
2010 | 通过 UNIX 套接字连接的本地主机 |
2012 | 服务器握手过程中出错 |
2013 | 查询过程中丢失了与 SQL 服务器的连接 |
2014 | 命令不同步,现在不能运行该命令 |
2024 | 连接到从服务器时出错 |
2025 | 连接到主服务器时出错 |
2026 | SSL 连接错误 |
总结
在MySQL中,可以创建多个不同名称的数据库存储数据,每一个数据库都是由若干个数据表组成的,数据表是用来存放数据的,了解对数据库和数据表的操作才能我们更好管理数据库
赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤👍,peace&love