史上最简单的 MySQL 教程(四)「SQL 基本操作」

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 史上最简单的 MySQL 教程(四)「SQL 基本操作」

史上最简单的 MySQL 教程(四)「SQL 基本操作」

SQL 基本操作

基本操作:CURD,即增删改查。

根据操作对象的不同,咱们可以将 SQL 的基本操作分为三类,分别为:库操作、表(字段)操作和数据操作。

库操作

1 新增数据库

基本语法:create database + 数据库名称 + [库选项];

其中,库选项是用来约束数据库的,为可选项(有默认值),共有两种,分别为:

字符集设定:charset/ character set+ 具体字符集,用来表示数据存储的编码格式,常用的字符集包括GBK和UTF8等。

校对集设定:collate+ 具体校对集,表示数据比较的规则,其依赖字符集。

示例:create database TBL_ERROR_CODE charset utf8;


其中,数据库的名字不能用关键字(已经被占用的字符,例如 update 和 insert 等)或者保留字(将来可能会用的,例如 access 和 cast 等)。


如果非要使用数据库的关键字或者保留字作为数据库名称,那么必须用反引号将其括起来,例如:


create databaseaccesscharset utf8;


如果还想使用中文作为数据库的名称,那就得保证数据库能够识别中文(强烈建议不要用中文命名数据库的名称),例如:


-- 设置中文名称的方法,其中 gbk 为当前数据库的默认字符集
set names gbk;
create database 北京 charset gbk;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-elptLe6l-1648096895147)(https://github.com/guobinhit/mysql-tutorial/blob/master/images/sql-operation/set-name-gbk.png)]


2 查询数据库


查看全部 --> 基本语法:show databases;


查看部分(模糊查询)–> 基本语法:show databases like 'pattern';


其中,pattern是匹配模式,有两种,分别为:


%:表示匹配多个字符;

_:表示匹配单个字符。

此外,在匹配含有下划线_的数据库名称的时候,需要在下划线前面加上反斜线\_进行转义操作。


示例:show databases like 'TBL%';表示匹配所有TBL开头的数据库。


查看数据库的创建语句 --> 基本语法:show create database + 数据库名称;


在这里,查看的结果有可能与咱们书写的 SQL 语句不同,这是因为数据库在执行 SQL 语句之前会优化 SQL,系统保存的是优化后的结果。


3 更新数据库


在这里,需要注意:数据库的名字不可以修改。


数据库的修改仅限库选项,即字符集和校对集(校对集依赖字符集)。


基本语法:alter database + 数据库名称 + [库选项];


charset/character set[=] 字符集;

collate[=] 校对集;

示例:alter database TBL_ERROR_CODE charset gbk;表示修改此数据库的字符集为gbk.


4 删除数据库


基本语法:drop database + 数据库名称;


在这里,需要注意:在删除数据库之前,应该先进行备份操作,因为删除为不可逆操作,所以不要随意删除数据库。


表操作

1 新增表


基本语法:

create table [if not exists] + 表名(
  字段名称 数据类型,
  ……
  字段名称 数据类型 /* 最后后一行,不需要加逗号 */
)[表选项];

其中,if not exists表示


如果表名不存在,就执行创建代码;如果表名存在,则不执行创建代码。

表选项则是用来控制表的表现形式的,共有三种,分别为:


字符集设定:charset/ character set+ 具体字符集,用来表示数据存储的编码格式,常用的字符集包括GBK和UTF8等。

校对集设定:collate+ 具体校对集,表示数据比较的规则,其依赖字符集。

存储引擎:engine+具体存储引擎,默认为InnoDB,常用的还有MyISAM.

由于任何表都归属于某个数据库,因此在创建表的时候,都必须先指定具体的数据库。在这里,指定数据库的方式有两种,分别为:


第 1 种:显式的指定表所属的数据库,示例

create table if not exists test.student(
  name varchar(10),
  age int,            /* 整型不需要指定具体的长度 */
  grade varchar(10) /* 最后后一行,不需要加逗号 */
)charset utf8;

第 2 种:隐式的指定表所属的数据库,示例

use test;       /* use + 数据库名称,表示切换到指定的数据库,这句命令其实不加分号也可以,但不建议这么做 */
create table if not exists student(
  name varchar(10),
  age int,            /* 整型不需要指定具体的长度 */
  grade varchar(10) /* 最后后一行,不需要加逗号 */
)charset utf8;

2 查询表


查看全部 --> 基本语法:show tables;


查看部分(模糊查询)–> 基本语法:show tables like 'pattern';


其中,pattern是匹配模式,有两种,分别为:


%:表示匹配多个字符;

_:表示匹配单个字符。

此外,在匹配含有下划线_的表名的时候,需要在下划线前面加上反斜线\_进行转义操作。


示例:show tables like '%t';表示匹配所有以t结尾的表。


查看表的创建语句 --> 基本语法:show create table + 表名;


在这里,咱们也可以用\g和\G代替上述语句中的;分号,其中\g等价于分号,\G则在等价于分号的同时,将查的表结构旋转90度,变成纵向结构。


查看表中的字段信息 --> 基本语法:desc/describe/show columns from + 表名;


3 更新表


在这里,需要注意:表的修改,分为修改表本身和修改表中的字段。


第 1 类:修改表本身


修改表名,基本语法:rename table 旧表名 to 新表名;

修改表选项,基本语法:alter table + 表名 + 表选项[=] + 值;

第 2 类:修改表中的字段,新增、修改、重命名和删除


新增字段,基本语法:alter table + 表名 + add + [column] + 字段名 + 数据类型 + [列属性][位置];

其中,位置表示此字段存储的位置,分为first(第一个位置)和after + 字段名(指定的字段后,默认为最后一个位置).

示例:alter table student add column id int first;

修改字段,基本语法:alter table + 表名 + modify + 字段名 + 数据类型 + [列属性][位置];

其中,位置表示此字段存储的位置,分为first(第一个位置)和after + 字段名(指定的字段后,默认为最后一个位置).

示例:alter table student modify name char(10) after id;

重命名字段,基本语法:alter table + 表名 + change + 旧字段名 + 新字段名 + 数据类型 + [列属性][位置];

其中,位置表示此字段存储的位置,分为first(第一个位置)和after + 字段名(指定的字段后,默认为最后一个位置).

示例:alter table student change grade class varchar(10);

删除字段,基本语法:alter table + 表名 + drop+ 字段名;

示例:alter table student drop age;

注意:如果表中已经存在数据,那么删除该字段会清空该字段的所有数据,而且不可逆,慎用。

4 删除表


基本语法:


-- 可以一次删除多张表

drop table + 表1, 表2 ... ;


在这里,需要注意:此删除为不可逆操作,希望大家谨慎使用。


数据操作

1 新增数据


对于数据的新增操作,有两种方法。


第 1 种:给全表字段插入数据,不需要指定字段列表,但要求数据的值出现的顺序必须与表中的字段出现的顺序一致,并且凡是非数值数据,都需要用引号(建议使用单引号)括起来。

基本语法:insert into + 表名 + values(值列表)[,(值列表)];

示例:insert into test valus('charies',18,'3.1');

第 2 种:给部分字段插入数据,需要选定字段列表,字段列表中字段出现的顺序与表中字段的顺序无关,但值列表中字段值的顺序必须与字段列表中的顺序保持一致。

基本语法:insert into + 表名(字段列表) + values(值列表)[,(值列表)];

示例:insert into test(age,name) valus(18,'guo');

2 查询数据


查看全部 --> 基本语法:select * from + 表名 + [where 条件];


示例:select * from test;

查看部分 --> 基本语法:select + 字段名称[,字段名称] + from + 表名 + [where 条件];


示例:select name,age,grade from test where age = '18';

3 更新数据


基本语法:update + 表名 + set + 字段 = 值 + [where 条件];


示例:update test set age = 20 where name = 'guo';

在这里,建议尽量加上where条件,否则的话,操作的就是全表数据。


此外,判断更新操作是否成功,并不是看 SQL 语句是否执行成功,而是看是否有记录受到影响,即affected的数量大于1时,才是真正的更新成功。


4 删除数据


基本语法:delete from + 表名 + [where 条件];


示例:delete from test where grade = '3.1';

当然,我们也可以用drop来实现删除操作,不过与delete相比,drop的威力更强,其在执行删除操作的时候,不仅会删除数据,还会删除定义并释放存储空间;而delete在执行删除操作的时候,仅会删除数据,并不会删除定义和释放存储空间。


温馨提示:用符号[]括起来的内容,表示可选项;符号+,则表示连接的意思。


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
13天前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
27天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
122 26
|
1月前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
29天前
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
126 3
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
4月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
6月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
143 13
|
6月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
6月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
78 6
|
6月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
491 1