第二章 数据库的SQL语句操作讲解
1.数据库的SQL语句
数据表是关系型数据库MySQL的基本存储单元,它与生活中使用的Excel表格类似。在实际的生产环境中,因为需要控制硬件成本,所以在安装操作系统时都是进行最小化安装,并不提供图形化界面,因此MySQL也不能像在Excel中那么便捷地修改数据。为了能够对数据进行管理,MySQL中提供了SQL语句来支持数据操作。

2.SQL语句简介
结构化查询语言(Structure Query Language,SQL)可以实现和数据库建立联系、进行沟通的功能,同时也支持数据库的查询和程序设计,还可以用于存储数据以及查询、更新和管理关系型数据库。20世纪80 年代初,美国国家标准局(AmericanNational Standards Institute,ANSI)制定了关于SQL的标准,从此SQL被作为关系型数据库管理系统的标准语言。随着计算机领域的发展,标准也被不断修改,更趋完善。

3.SQL语句分类
在数据库中,根据执行条件的不同,SQL语句主要可以划分为以下4个类别。
(1)DDL语句
DDL(Data Definition Language,数据定义语言)用在定义或改变表的结构数据类型、表之间的链接和约束等初始化工作上。常用的语句关键字包括CREATE(创建库或表)、DROP(删除库或表)、ALTER(修改表内容)等。
(2)DML语句
DML(Data Manipulation Language,数据操纵语言)用于添加、删除、更新和查询数据库记录。常用的语句关键字有INSERT(插入)、UPDATE(更新)、DELETE(删除表),是开发以数据为中心的应用程序必会使用到的指令。
(3)DCL语句
DCL(Data Control Language,数据控制语言)用于对数据访问权限进行控制,定义数据库、表、字段、用户的访问权限和安全级别。主要关键字包括GRANT(授权)、REVOKE(取消授权)等。
(4)DQL语句
DQL(Data Query Language,数据查询语言)主要用于对数据的查询。主要关键字包括SELECT(查询)、FROM(什么表)、WHERE(查找限制条件)。

4.数据类型
MySQL支持所有标准的SQL数据类型,包括严格数据类型(如INTEGER、 SMALLINT、DECIMAL和NUMBERIC)。MySQL提供了多种数据类型,包括整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型和二进制数据类型。不同的数据类型有各自的特点,使用范围不相同,存储方式也不一样。
(1)数值类型
数值类型包括整数类型、浮点类型、定点数类型、位类型。标准SQL支持的整数类型包括INTEGER和SMALLINT,MySQL不仅支持这两种类型,还扩展支持TINYINT、MEDIUMINT和BIGINT。MySQL常用的数值类型如表所示。
图片 1.png
MySQL支持的5个整数类型TINYINT、SMALLINT、MEDIUMINT、INT 和BIGINT在很大程度上是相同的,只是它们存储的值的大小是不相同的。FLOAT数值类型用于表示单精度浮点数值,DOUBLE 数值类型用于表示双精度浮点数值。

(2)字符串类型
MySQL提供了8个基本的字符串类型,分别为CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET,可以存储简单的字符或二进制字符串数据。MySQL常用的字符串类型如表所示。
图片 2.png
表中列出了常见的字符串类型,其中有些类型比较相似。下面将详细介绍这些类型的区别与联系。
1.CHAR和VARCHAR
CHAR用于存储固定长度的字符串,基本格式为CHAR( * ),必须要在圆括号内定义长度。“ * ”表示指示器,也可以理解为字节数,取值范围为0~255,可以有默认值。
VARCHAR用于存储可变长度的数据,基本格式为CHAR(*),并且也必须带有一个取值范围为0~255的指示器。
CHAR和VARCHAR的不同之处在于MYSQL处理指示器的方式。CHAR把指示器大小视为值的大小,在长度不足的情况下用空格补足。而VARCHAR类型把它视为最大值,只使用存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值,所以短于指示器长度的VARCHAR 数据不会被空格填补,但长于指示器的数据仍然会被截短。例如,定义一个CHAR(10)和一个VARCHAR(10),如果存进去“ABCD”四个字符,CHAR的长度依然为10,除了字符“abcd”之外,后面还跟了六个空格,而VARCHARR的长度显示为“4”。在读取数据的时候,CHAR要去掉多余的空格,而VARCHAR是不需要的。
由于VARCHAR可以根据实际内容动态改变存储值的长度,因此在不能确定字段需要多少字符时,使用VARCHAR可以大大地节约磁盘空间、提高存储效率。VARCHAR在使用BINARY修饰符时与CHAR完全相同。
2.TEXT和BLOB
对于字段长度超过255个字节的情况,MySQL提供了TEXT和BLOB两种数据类型,根据存储数据的大小又分为不同的子类型。它们用于存储文本块或图像、声音文件等二进制数据。TEXT和BLOB的相同点如下。
(1)在TEXT列或BLOB列的存储或检索过程中不存在大小写转换,当未运行在严格模式下时,如果为TEXT列或BLOB列分配一个超过该列类型的最大长度的值,则值会被截取。如果截掉的字符不是空格,将会产生一条警告。
(2)TEXT列或BLOB列都不能有默认值,当保存或检索TEXT列或BLOB列的值时,不删除尾部空格。
(3)对于TEXT列或BLOB列的索引,必须指定索引前缀的长度。
TEXT和BLOB的不同点如下:
(1)TEXT是大小写不敏感的,而BLOB是大小写敏感的。
(2)TEXT被视为非二进制字符串,而BLOB被视为二进制字符串。
(3)TEXT列有一个字符集,并且根据字符集的校对规则对值进行排序和比较;BLOB 列没有字符集。
(4)BLOB可以储存图片,而TEXT只能储存纯文本。

(3)日期和时间类型
在处理日期和时间类型的值时,MySQL有不同的数据类型供用户选择。这些类型可以划分为简单的日期和时间类型、混合的日期和时间类型。根据要求的精度,子类型在每个分类型中都可以使用。日期和时间类型同样有对应的字节数和取值范围,MySQL所支持的日期和时间类型如表所示。
图片 3.png
日期和时间类型根据不同的使用需求可以分为以下 4 种使用情况。
(1)需要表示年月日,使用DATE。
(2)需要表示年月日时分秒,使用DATETIME。
(3)需要经常插入或者更新日期为当前系统时间,使用TIMESTAMP。
(4)需要表示时分秒,使用TIME。
日期和时间类型的使用方法如例所示。
MariaDB [(none)]> use mysql (使用mysql库,或者进入到mysql库中,后面可以不带“;”,建议还是带上“;”。)
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]>

MariaDB [mysql]> create table test(f_date date, f_datetime datetime, f_timestamp timestamp, f_time time,f_year year);(注意创建一个test表定义内容为日期信息)
Query OK, 0 rows affected (0.006 sec)

MariaDB [mysql]> select curdate(),now(),time(now()),year(now()) \G (查看日期信息,以输入查看信息的指令为主进行显示)
*************************** 1. row ***************************
curdate(): 2022-03-03
now(): 2022-03-03 21:43:23
time(now()): 21:43:23
year(now()): 2022
1 row in set (0.000 sec)
MariaDB [mysql]>

MariaDB [mysql]> insert into test values(curdate(),now(),now(),time(now()),year(now())); (插入对应的信息以之前定义表内容的格式)
Query OK, 1 row affected (0.001 sec)

MariaDB [mysql]> select * from test\G; (以定义的表内容信息进行显示效果)
*************************** 1. row ***************************
f_date: 2022-03-03
f_datetime: 2022-03-03 21:45:28
f_timestamp: 2022-03-03 21:45:28
f_time: 21:45:28
f_year: 2022
1 row in set (0.000 sec)
ERROR: No query specified
MariaDB [mysql]>
例首先创建了一个包含日期和时间类型的表,并使用SELECT语句查看相关函数的输出,方便与后面的数据进行对比;然后使用INSERT语句插入相关数值;最后是对应的输出格式。通过此例,读者可以了解日期和时间类型的使用方法。

5.库与表的基本操作
(1)库操作
创建数据库实际上是在数据库系统中划分出一部分空间,用来存储和区分不同的数据。创建数据库是进行表操作的基础,也是进行数据管理的基础。库与表的关系如图所示。
图片 3.png
MySQL的库操作分为以下四种。
1.创建库
在MySQL中,创建数据库需要通过SQL语句CREATE DATABASE实现,其语法形式如下。
create database 数据库名 数据库选项;
其中,“数据库名”表示需要创建的数据库名称。数据库命名需要注意以下几点。
(1)数据库名称是唯一的,且区分大小写。
(2)可以由字母、数字、下画线、@、#、$组成。
(3)不能使用关键字。
(4)不能单独使用数字。
(5)最长 128 位。
数据库选项为[CHARACTER SET=<字符集> COLLATE=<排序规则>]。在安装MySQL 时默认使用的字符编码为 Latin-1。Latin-1编码是单字节编码,而一般汉字需要两个字节来存储,所以这个编码格式不支持汉字,而UTF-8编码支持中文显示。常见的字符集有 GBK、UTF-8、Latin-1。
字符集的基本使用方法如下。创建数据库,指定默认的字符编码为UTF-8,排序规则为utf8mb4_general_ci。
create database 数据库名 default charset utf8mb4 collate utf8mb4_general_ci

创建数据库,指定默认的字符编码为 GBK,排序规则为gbk_chinese_ci。
create database 数据库名 default character set gbk collate gbk_chinese_ci

2.查看库
查看数据库的SQL语句为SHOW DATABASES。在使用数据库时,还可以用SELECT命令查看当前使用的是哪个数据库(用于确定当前位置)。两种情况的语法形式如下。
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)

MariaDB [(none)]>
MariaDB [(none)]> select database();
+------------+
| database() |
+------------+
| NULL |
+------------+
1 row in set (0.000 sec)

MariaDB [(none)]>

3.使用库
使用数据库需要通过 SQL 语句 USE DATABASE 实现,其语法形式如下。
MariaDB [(none)]> use database数据库名;

4.删除库
删除数据库的SQL语句形式如下所示,“数据库名”同样是需要删除的数据库名称。
MariaDB [(none)]>drop database 数据库名;
举例:
MariaDB [(none)]> show databases;(查看数据库中的所有库)
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)

MariaDB [(none)]> create database yunjisuan;(创建一个云计算的库)
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> show databases;(查看数据库中的所有库)
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| yunjisuan |
+--------------------+
4 rows in set (0.000 sec)

MariaDB [(none)]> drop database yunjisuan; (删除云计算这个库)
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> show databases;(查看数据库中的所有库)
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)

MariaDB [(none)]>
从上方代码可以看出,在初始情况下,MySQL默认的数据库包括information_schema库、mysql库、performance_schema库、sys库,关于这四个库的说明如表所示。此处需要注意,MySQL默认的库文件不可以删除,删除后可能会造成MySQL文件系统的损坏。
图片 4.png
在例的代码可以看出,使用SQL语句分别成功创建“yunjisuan”库文件。SQL语句的输出结果也清楚地表现出数据库的名称区分大小写。随后的SQL语句成功删除了yunjisuan库。

(2)表操作
表是数据库存储数据的基本单位,在表中可以存储不同的字段和数据记录。表的基本操作包括新建表、修改表和删除表。创建表的过程是规定数据列属性的过程,同时也是实现数据库数据完整性和约束性的过程。接下来介绍有关表的操作。
1.创建表
创建表的基本格式如下所示。
create table 表名(字段名1 数据类型,字段名2 数据类型,字段名3 数据类型,字段名4 数据类型 ....... 字段名n 数据类型)表选项;
创建表格式关键字说名明表所示。
图片 5.png
在创建表之前需要使用“USE 数据库名”切换到要操作的数据库。
2.创建表指定默认值
在表中设置列属性时,列可以指定默认值。在表中插入数据时如果未主动设置,则该列会自动添加默认值。基本用法如下。
create table tb1(id int not null,age int not null default 20);
在上方代码中null表示为空值,并不是字符串类型。not null表示不为空值,在添加数据时必须给值。
3.创建表指定自增
如果设置某列为自增列,插入数据时无须设置此列的值,默认此列的数值自增。需要注意,一个表中只能存在一个自增列。使用方法如下。
create table 表名(id int auto_increment primary key);
其中auto_increment表示自增,primary key表示外键约束。数据表的创建如例所示。
图片 6.png
查看数据库yunjisuan是否存在。如果存在,则进入yunjisuan数据库来创建 stu表;如果不存在,则创建yunjisuan数据库。
MariaDB [(none)]> show databases;(查看数据库中的所有库)
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| yunjisuan |
+--------------------+
4 rows in set (0.000 sec)

MariaDB [(none)]>
MariaDB [(none)]> use yunjisuan;
Database changed

出现Database changed提示表示已经成功切换到了数据库yunjisuan。接下来创建数据表stu,SQL语句如下所示。
MariaDB [yunjisuan]>create table stu(id int auto_increment primary key, name varchar(200),gender varchar(200));
Query OK, 0 rows affected (0.000 sec)
此时可以查看数据表是否创建成功,使用SHOW TABLES语句即可。SQL语句如下所示。
MariaDB [yunjisuan]> show tables;
+---------------------+
| Tables_in_yunjisuan |
+---------------------+
| stu |
+---------------------+
1 row in set (0.000 sec)

MariaDB [yunjisuan]>
从上方代码的执行结果可看出,数据库yunjisuan中已经成功创建stu表。
4.查看数据表属性
数据表创建完成后,可以使用SHOW CREATE TABLE命令查看数据表的属性,其语法格式如下所示。
MariaDB [yunjisuan]>show create table 表名;
查看前面创建的stu表,SQL语句如下所示。
MariaDB [yunjisuan]> show create table stu;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| stu | CREATE TABLE stu (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(200) DEFAULT NULL,
gender varchar(200) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.001 sec)

MariaDB [yunjisuan]>
从上方执行结果中可看出,SHOW CREATE TABLE不仅可以查看表中的列,还可以查看表的字符编码等信息,但是显示的格式非常混乱。可以在查询语句后加上参数“\G”进行格式化, SQL 语句如下所示。
MariaDB [yunjisuan]> show create table stu\G
*************************** 1. row ***************************
Table: stu
Create Table: CREATE TABLE stu (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(200) DEFAULT NULL,
gender varchar(200) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.000 sec)

MariaDB [yunjisuan]>
执行结果中,显示的格式明显比先前整齐很多。另外,如果只想查看表中列的相关信息,可以使用DESCRIBE语句,语法格式如下所示。
MariaDB [yunjisuan]> describe 表名;

还可以使用DESCRIBE的简写形式DESC进行查看,SQL语句如下所示
MariaDB [yunjisuan]> desc stu;
+--------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(200) | YES | | NULL | |
| gender | varchar(200) | YES | | NULL | |
+--------+--------------+------+-----+---------+----------------+
3 rows in set (0.001 sec)

MariaDB [yunjisuan]>
这两种查询方式结果是一样的,因此一般使用简写的方式来查询。
5.删除数据表
在MySQL中使用DROP TABLE语句删除数据表中的内容和表结构,这里可以理解为彻底删除表,其语法格式如下所示。
MariaDB [yunjisuan]> drop table 表名;

将表stu删除,SQL语句如下所示。
MariaDB [yunjisuan]> show tables;
+---------------------+
| Tables_in_yunjisuan |
+---------------------+
| stu |
+---------------------+
1 row in set (0.000 sec)
MariaDB [yunjisuan]>
MariaDB [yunjisuan]> drop table stu;
Query OK, 0 rows affected (0.012 sec)
MariaDB [yunjisuan]>
从上方代码的执行结果可以看出信息表stu被成功删除。在实际生产环境中,需要对所删除的信息核对无误后再进行删除操作,此语句需谨慎执行,避免数据丢失。

6.表的高级操作
数据表基本结构创建完成后,即可在表中插入或者修改数据。插入数据可以分为向所有列插入数据、向指定的列插入数据、批量插入数据等。修改表可以分为修改表结构、修改表名或删除表中指定数据等。下面将详细介绍这些关于表的高级操作。
关系型数据库在操作数据时需要保持数据的一致性,在数据表中插入数据需要保持字段与值的一一对应,即一个字段对应一个值。MySQL数据库插入数据使用INSERT语句,基本用法分为以下两种。
1.为所有列插入数据
使用 INSERT 语句列出表的所有字段可以向表中插入数据,根据数据量不同分为以下两种情况。
(1)插入一条数据的语法格式如下。
insert into 表名(字段名1,字段名2,......) values(值1,值2,......);
(2)同时插入多条数据的语法格式如下。
insert into 表名(字段名1,字段名2,......) values(值1,值2,......),(值1,值2,......);
INSERT语句格式中,“字段名 1,字段名 2”是数据表中的字段名称,VALUES中的“值 1,值 2”是对应每个字段添加的数据。需要注意,这里必须列出表中所有字段的名称,且值的顺序、类型必须与语句中的字段名顺序对应。
举例:
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| yunjisuan |
+--------------------+
4 rows in set (0.001 sec)

MariaDB [(none)]> use yunjisuan;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [yunjisuan]> show tables;
+---------------------+
| Tables_in_yunjisuan |
+---------------------+
| tb1 |
| tb2 |
+---------------------+
2 rows in set (0.000 sec)

MariaDB [yunjisuan]> desc tb1;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| age | int(11) | NO | | 20 | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.001 sec)

MariaDB [yunjisuan]> insert into tb1 values('1','10');
Query OK, 1 row affected (0.003 sec)

MariaDB [yunjisuan]> select * from tb1;
+----+-----+
| id | age |
+----+-----+
| 1 | 10 |
+----+-----+
1 row in set (0.001 sec)

MariaDB [yunjisuan]> insert into tb1 values('1','10'),('2','20'),('3','15');
Query OK, 3 rows affected (0.002 sec)
Records: 3 Duplicates: 0 Warnings: 0

MariaDB [yunjisuan]> select * from tb1;
+----+-----+
| id | age |
+----+-----+
| 1 | 10 |
| 1 | 10 |
| 2 | 20 |
| 3 | 15 |
+----+-----+
4 rows in set (0.001 sec)

MariaDB [yunjisuan]>

2.查看表内容
数据插入后可以通过 SELECT 指令查询表中的信息。语句的基本格式如下。
MariaDB [yunjisuan]> select * from 表名;
举例:
MariaDB [yunjisuan]> select * from tb1;
+----+-----+
| id | age |
+----+-----+
| 1 | 10 |
| 1 | 10 |
| 2 | 20 |
| 3 | 15 |
+----+-----+
4 rows in set (0.001 sec)

MariaDB [yunjisuan]>
从以上执行结果可看出,tb1表中的数据成功插入。因为表中只插入了一条记录,所以只查询到了一条结果。

3.为指定列插入数据
在实际场景中,遇到较多的情况是只需在表中添加某几个字段的数据,即为指定列插入数据,语法格式如下所示。
insert into 表名(字段名1,字段名3,......) values(值1,值3,......);
从上面的代码可以看出,只需要对字段 1、字段 3进行数值插入,字段 2不需要插入数据,在进行操作时字段2的值会默认设为空值。
为tb1表插入数据,且只插入前四个字段的数据,SQL语句如下所示。
MariaDB [yunjisuan]> insert into tb1(id,age) values('4','40'),('5','50'),('6','65');
Query OK, 3 rows affected (0.006 sec)
Records: 3 Duplicates: 0 Warnings: 0

MariaDB [yunjisuan]> select * from tb1;
+----+-----+
| id | age |
+----+-----+
| 1 | 10 |
| 1 | 10 |
| 2 | 20 |
| 3 | 15 |
| 4 | 40 |
| 5 | 50 |
| 6 | 65 |
+----+-----+
7 rows in set (0.000 sec)

MariaDB [yunjisuan]>
MariaDB [yunjisuan]> insert into tb1(id) values('7'),('8'),('9');
Query OK, 3 rows affected (0.002 sec)
Records: 3 Duplicates: 0 Warnings: 0

MariaDB [yunjisuan]> select * from tb1;
+----+-----+
| id | age |
+----+-----+
| 1 | 10 |
| 1 | 10 |
| 2 | 20 |
| 3 | 15 |
| 4 | 40 |
| 5 | 50 |
| 6 | 65 |
| 7 | 20 |
| 8 | 20 |
| 9 | 20 |
+----+-----+
10 rows in set (0.000 sec)

MariaDB [yunjisuan]>

4.DELETE语句
MySQL中可以使用DELETE语句删除表中数据,语法格式如下所示。
delete from 表名 [where 条件表达式];
WHERE条件语句是可选的,用于指定要删除的数据满足的条件。通过DELETE语句可以实现删除全部数据或者删除部分数据,接下来对这两种情况进行详细讲解。
(1)使用DELETE删除全部数据
当DELETE语句中不使用WHERE条件语句时,将会删除表中全部数据。将tb1表中所有数据都删除,首先使用SELECT语句查看表中的数据,SQL语句如下所示。
MariaDB [yunjisuan]> select * from tb1;
+----+-----+
| id | age |
+----+-----+
| 1 | 10 |
| 1 | 10 |
| 2 | 20 |
| 3 | 15 |
| 4 | 40 |
| 5 | 50 |
| 6 | 65 |
| 7 | 20 |
| 8 | 20 |
| 9 | 20 |
+----+-----+
10 rows in set (0.000 sec)

MariaDB [yunjisuan]> delete from tb1;
Query OK, 10 rows affected (0.002 sec)

如上执行结果说明删除成功。为了进一步验证,可以使用 SELECT 语句查看表中的数据, SQL语句如下所示。
MariaDB [yunjisuan]> select * from tb1;
Empty set (0.000 sec)

MariaDB [yunjisuan]>
从以上执行结果可看到表中已经没有数据,证明删除成功。
(2)使用WHERE条件删除部分数据
前面讲解了删除全部数据的方法,但在实际开发中大多数需求是删除表中的部分数据,使用WHERE子句可以指定删除数据的条件。
MariaDB [yunjisuan]> insert into tb1 values('1','10'),('2','20'),('3','15');
Query OK, 3 rows affected (0.003 sec)
Records: 3 Duplicates: 0 Warnings: 0

MariaDB [yunjisuan]> insert into tb1(id,age) values('4','40'),('5','50'),('6','65');
Query OK, 3 rows affected (0.003 sec)
Records: 3 Duplicates: 0 Warnings: 0

MariaDB [yunjisuan]> insert into tb1(id) values('7'),('8'),('9');
Query OK, 3 rows affected (0.002 sec)
Records: 3 Duplicates: 0 Warnings: 0

MariaDB [yunjisuan]> select * from tb1;
+----+-----+
| id | age |
+----+-----+
| 1 | 10 |
| 2 | 20 |
| 3 | 15 |
| 4 | 40 |
| 5 | 50 |
| 6 | 65 |
| 7 | 20 |
| 8 | 20 |
| 9 | 20 |
+----+-----+
9 rows in set (0.000 sec)

MariaDB [yunjisuan]> delete from tb1 where id='6';
Query OK, 1 row affected (0.001 sec)

以上执行结果说明成功删除了一条数据。为了进一步验证,可以使用SELECT语句查看tb1表中的数据,SQL语句如下所示。
MariaDB [yunjisuan]> select * from tb1;
+----+-----+
| id | age |
+----+-----+
| 1 | 10 |
| 2 | 20 |
| 3 | 15 |
| 4 | 40 |
| 5 | 50 |
| 7 | 20 |
| 8 | 20 |
| 9 | 20 |
+----+-----+
8 rows in set (0.002 sec)

MariaDB [yunjisuan]>
从以上执行结果可看到,tb1表中id为“6”的信息记录已经被删除。

将tb1表中age小于20的角色信息删除。
MariaDB [yunjisuan]> select * from tb1;
+----+-----+
| id | age |
+----+-----+
| 1 | 10 |
| 2 | 20 |
| 3 | 15 |
| 4 | 40 |
| 5 | 50 |
| 7 | 20 |
| 8 | 20 |
| 9 | 20 |
+----+-----+
8 rows in set (0.001 sec)

MariaDB [yunjisuan]> delete from tb1 where age<20;
Query OK, 2 rows affected (0.001 sec)

使用SELECT语句查看tb1表中的数据进行验证。
MariaDB [yunjisuan]> select * from tb1;
+----+-----+
| id | age |
+----+-----+
| 2 | 20 |
| 4 | 40 |
| 5 | 50 |
| 7 | 20 |
| 8 | 20 |
| 9 | 20 |
+----+-----+
6 rows in set (0.000 sec)

MariaDB [yunjisuan]>
从以上执行结果可看到,tb1表中age小于20的信息记录已经被删除。

5.TRUNCATE语句
MySQL中还有一种方式可以删除表中的所有数据,这种方式需要用到TRUNCATE关键字,语法格式如下所示。
truncate [table] 表名;

接下来演示TRUNCATE语句的使用。
利用TRUNCATE关键字将tb1表中所有数据删除。
MariaDB [yunjisuan]> select * from tb1;
+----+-----+
| id | age |
+----+-----+
| 2 | 20 |
| 4 | 40 |
| 5 | 50 |
| 7 | 20 |
| 8 | 20 |
| 9 | 20 |
+----+-----+
6 rows in set (0.002 sec)

MariaDB [yunjisuan]> truncate table tb1;
Query OK, 0 rows affected (0.012 sec)

使用 SELECT 语句查看 stu 表中的数据。
MariaDB [yunjisuan]> select * from tb1;
Empty set (0.001 sec)

MariaDB [yunjisuan]>
从以上执行结果可看到,tb1表中全部数据成功删除。
TRUNCATE语句和DELETE语句都能实现删除表中的所有数据,但两者是有一定区别的,它们的区别如下。
(1)DELETE语句是DML语句,TRUNCATE语句通常被认为是DDL语句。
(2)DELETE语句后面可以跟WHERE子句,指定条件从而实现删除部分数据;TRUNCATE语句只能用于删除表中所有的数据。
(3)使用TRUNCATE语句删除表中数据后,再次向表中添加记录时,自增的字段值默认重置为1;而使用DELETE语句删除表中数据后,再次向表中添加记录时,自增的字段值为删除时该字段的最大值加1。

6.修改表名
前面讲解了如何创建和查看数据表,在实际开发中,数据表创建完成后,可能会对数据表的表名、表中的字段名、字段的数据类型等进行修改。接下来对数据表的修改进行详细讲解。
1.修改表名
在MySQL中,修改表名的语法格式如下所示。
alter table 原表名 rename [to] 新表名;
关键字TO是可选的,是否写TO关键字不会影响SQL语句的执行,一般忽略不写。接下来通过具体实例演示表名的修改。
将创建的tb1表的表名修改为stu。
MariaDB [yunjisuan]> show tables;
+---------------------+
| Tables_in_yunjisuan |
+---------------------+
| tb1 |
| tb2 |
+---------------------+
2 rows in set (0.001 sec)

MariaDB [yunjisuan]> alter table tb1 rename stu;
Query OK, 0 rows affected (0.007 sec)

使用SHOW TABLES语句进行验证。
MariaDB [yunjisuan]> show tables;
+---------------------+
| Tables_in_yunjisuan |
+---------------------+
| stu |
| tb2 |
+---------------------+
2 rows in set (0.001 sec)

MariaDB [yunjisuan]>
从以上执行结果可看出,tb1表名成功修改为stu。

2.修改字段名
数据表中的字段名也时常有变更的需求,修改字段名的语法格式如下所示。
alter table 表名 change 原字段名 新字段名 新数据类型;
接下来通过具体实例演示字段名的修改。
将stu表中的age字段修改为type字段,数据类型为VARCHAR(200)。
MariaDB [yunjisuan]> desc stu;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| age | int(11) | NO | | 20 | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.001 sec)

MariaDB [yunjisuan]> alter table stu change age type varchar(200);
Query OK, 0 rows affected (0.036 sec)
Records: 0 Duplicates: 0 Warnings: 0

如上执行结果证明字段名修改完成。使用DESC查看stu表进行验证。
MariaDB [yunjisuan]> desc stu;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| type | varchar(200) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.001 sec)

MariaDB [yunjisuan]>
从以上执行结果可看出,stu表中的age字段成功修改为type字段。

3.修改字段的数据类型
上面讲解了如何修改表中的字段名,但有时并不需要修改字段名,只需修改字段的数据类型。修改表中字段数据类型的语法格式如下所示。
alter table 表名 modify 字段名 数据类型;
将stu表中的type字段的数据类型修改为CHAR。
MariaDB [yunjisuan]> desc stu;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| type | varchar(200) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.001 sec)

MariaDB [yunjisuan]> alter table stu modify type char(200);
Query OK, 0 rows affected (0.022 sec)
Records: 0 Duplicates: 0 Warnings: 0

如上执行结果证明字段数据类型修改完成。为了进一步验证,可以使用DESC查看stu表。
MariaDB [yunjisuan]> desc stu;
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| type | char(200) | YES | | NULL | |
+-------+-----------+------+-----+---------+-------+
2 rows in set (0.001 sec)

MariaDB [yunjisuan]>
从以上执行结果可看出,stu表中的type字段数据类型成功修改为CHAR。

4.添加字段
在实际开发中,随着需求的扩展,表中可能需要添加字段。MySQL中添加字段的语法格式如下所示。
alter table 表名 add 新字段名 数据类型;
在stu表中添加power字段,数据类型为VARCHAR(100)。
MariaDB [yunjisuan]> desc stu;
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| type | char(200) | YES | | NULL | |
+-------+-----------+------+-----+---------+-------+
2 rows in set (0.001 sec)

MariaDB [yunjisuan]> alter table stu add power varchar(100);
Query OK, 0 rows affected (0.001 sec)
Records: 0 Duplicates: 0 Warnings: 0

MariaDB [yunjisuan]>

使用 DESC 查看stu表进行验证。
MariaDB [yunjisuan]> desc stu;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| type | char(200) | YES | | NULL | |
| power | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.001 sec)

MariaDB [yunjisuan]>
从以上执行结果可看出,stu表中添加了power字段,并且该字段的数据类型为VARCHAR(100)。

5.删除字段
删除表中某一字段也是很可能出现的需求, MySQL 中删除字段的语法格式如下所示。
alter table 表名 drop 字段名;
将stu表中power字段删除。
MariaDB [yunjisuan]> desc stu;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| age | int(11) | NO | | 20 | |
| type | char(200) | YES | | NULL | |
| power | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
4 rows in set (0.002 sec)

MariaDB [yunjisuan]> alter table stu drop power;
Query OK, 0 rows affected (0.015 sec)
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [yunjisuan]>

如上执行结果证明字段删除成功。为了进一步验证,可以使用DESC查看stu表,SQL语句如下所示。
MariaDB [yunjisuan]> desc stu;
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| age | int(11) | NO | | 20 | |
| type | char(200) | YES | | NULL | |
+-------+-----------+------+-----+---------+-------+
3 rows in set (0.001 sec)

MariaDB [yunjisuan]>
从以上执行结果可看出,stu表中删除了power字段。

6.修改字段的排列位置
在创建表时,表中字段的位置就已经确定,如果要修改表中字段的位置,同样需要使用ALTER TABLE来修改。MySQL中修改字段排列位置的语法格式如下所示。
alter table 表名 modify 字段名1 数据类型 first|after 字段名2;
“字段名 1”是要修改位置的字段;FIRST是可选参数,表示将字段 1 修改为表的第一个字段;“AFTER 字段名 2”表示将字段 1插到字段 2的后面。在id字段后添加一个age的字段,并且该字段的数据类型为int(11)。
MariaDB [yunjisuan]> desc stu;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| type | char(200) | YES | | NULL | |
| power | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.002 sec)

MariaDB [yunjisuan]> alter table stu add age int(11) not null default 20 after id;
Query OK, 0 rows affected (0.022 sec)
Records: 0 Duplicates: 0 Warnings: 0

使用 DESC 查看stu表进行验证。
MariaDB [yunjisuan]> desc stu;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| age | int(11) | NO | | 20 | |
| type | char(200) | YES | | NULL | |
| power | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
4 rows in set (0.001 sec)

MariaDB [yunjisuan]>
从以上执行结果可看出,stu表中id字段后面添加age字段,并且该字段的数据类型为int(11)。

7.更新数据
计算机随着时间的变化对数据进行不断的处理,数据不会保持一成不变。在MySQL中使用UPDATE语句可以更新表中的数据,语法格式如下所示。
update 表名 set 字段名 1=值1[,字段名 2=值2,......] [where 条件表达式];
如上语法格式中,“字段名”用于指定要更新的字段名称,“值”用于表示字段的新数据,如果要更新多个字段的值,可以用逗号分隔多个字段和值;WHERE条件表达式是可选的,用于指定更新数据需要满足的条件。UPDATE语句可以更新表中的全部数据或部分数据,接下来对这两种情况进行详细讲解。
1.更新全部数据
当UPDATE语句中不使用WHERE条件语句时,表中所有数据的指定字段会全部更新。
将stu表中的所有表示年龄的age字段更新为30。
MariaDB [yunjisuan]> insert into stu (id,age) values('1','20'),('2','20'),('3','15'),('4','10'),('5','12'),('6','18'),('7','21'),('8','22');
Query OK, 8 rows affected (0.001 sec)
Records: 8 Duplicates: 0 Warnings: 0

MariaDB [yunjisuan]> select * from stu;
+----+-----+------+
| id | age | type |
+----+-----+------+
| 1 | 20 | NULL |
| 2 | 20 | NULL |
| 3 | 15 | NULL |
| 4 | 10 | NULL |
| 5 | 12 | NULL |
| 6 | 18 | NULL |
| 7 | 21 | NULL |
| 8 | 22 | NULL |
+----+-----+------+
8 rows in set (0.000 sec)

MariaDB [yunjisuan]>

从以上执行结果可看到,表中共有8条数据,现在要将所有表示年龄的age字段更新为30,SQL语句如下所示。
MariaDB [yunjisuan]> update stu set age=30;
Query OK, 8 rows affected (0.003 sec)
Rows matched: 8 Changed: 8 Warnings: 0

MariaDB [yunjisuan]>

从执行结果可看到,执行完成后提示“Changed: 8”,说明成功更新了8条数据。为了进一步验证,可以使用SELECT语句查看表中的数据。
MariaDB [yunjisuan]> select * from stu;
+----+-----+------+
| id | age | type |
+----+-----+------+
| 1 | 30 | NULL |
| 2 | 30 | NULL |
| 3 | 30 | NULL |
| 4 | 30 | NULL |
| 5 | 30 | NULL |
| 6 | 30 | NULL |
| 7 | 30 | NULL |
| 8 | 30 | NULL |
+----+-----+------+
8 rows in set (0.001 sec)

MariaDB [yunjisuan]>
从以上执行结果可看到,表中所有的age字段都更新为30,证明更新成功。

2.更新部分数据
在实际开发中,大多数需求是更新表中的部分数据,这里就要使用到WHERE子句来指定更新数据的条件。
将stu表中“6”的年龄值修改为50。
将“6”的年龄值改为50,也就是将age字段修改为50,SQL语句如下所示。
MariaDB [yunjisuan]> select * from stu;
+----+-----+------+
| id | age | type |
+----+-----+------+
| 1 | 30 | NULL |
| 2 | 30 | NULL |
| 3 | 30 | NULL |
| 4 | 30 | NULL |
| 5 | 30 | NULL |
| 6 | 30 | NULL |
| 7 | 30 | NULL |
| 8 | 30 | NULL |
+----+-----+------+
8 rows in set (0.001 sec)

MariaDB [yunjisuan]> update stu set age=50 where id='6';
Query OK, 1 row affected (0.001 sec)
Rows matched: 1 Changed: 1 Warnings: 0

MariaDB [yunjisuan]>

从执行结果可看到,执行完成后提示“Changed: 1”,说明成功更新了1条数据。为了进一步验证,可以使用SELECT语句查看表中的数据,SQL语句如下所示。
MariaDB [yunjisuan]> select * from stu;
+----+-----+------+
| id | age | type |
+----+-----+------+
| 1 | 30 | NULL |
| 2 | 30 | NULL |
| 3 | 30 | NULL |
| 4 | 30 | NULL |
| 5 | 30 | NULL |
| 6 | 50 | NULL |
| 7 | 30 | NULL |
| 8 | 30 | NULL |
+----+-----+------+
8 rows in set (0.000 sec)

MariaDB [yunjisuan]>
从以上执行结果可看到,stu表中,“6”的年龄值变成了50。
将stu表中所有年龄值在30的原有基础上增加5。SQL语句的执行过程如下所示。
MariaDB [yunjisuan]> select * from stu;
+----+-----+------+
| id | age | type |
+----+-----+------+
| 1 | 30 | NULL |
| 2 | 30 | NULL |
| 3 | 30 | NULL |
| 4 | 30 | NULL |
| 5 | 30 | NULL |
| 6 | 50 | NULL |
| 7 | 30 | NULL |
| 8 | 30 | NULL |
+----+-----+------+
8 rows in set (0.001 sec)

MariaDB [yunjisuan]> update stu set age=age+5 where age='30';
Query OK, 7 rows affected (0.001 sec)
Rows matched: 7 Changed: 7 Warnings: 0

MariaDB [yunjisuan]>
从执行结果可看到,执行完成后提示“Changed: 7”,说明成功更新了7条数据。为了进一步验证,可以使用SELECT语句查看stu表中的数据。
MariaDB [yunjisuan]> select * from stu;
+----+-----+------+
| id | age | type |
+----+-----+------+
| 1 | 35 | NULL |
| 2 | 35 | NULL |
| 3 | 35 | NULL |
| 4 | 35 | NULL |
| 5 | 35 | NULL |
| 6 | 50 | NULL |
| 7 | 35 | NULL |
| 8 | 35 | NULL |
+----+-----+------+
8 rows in set (0.000 sec)

MariaDB [yunjisuan]>
从以上执行结果可看到,stu表中所有age字段的原来值为30的都增加了5。
特例:创建可以写入中文表内容的数据库及表操作
[root@localhost ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.3.28-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database yun default character set utf8;(将数据库默认字符类型修改为utf8格式)
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| yun |
+--------------------+
5 rows in set (0.001 sec)

MariaDB [(none)]> use yun
Database changed
MariaDB [yun]>
MariaDB [yun]> create table tb2 (序号 int auto_increment primary key,名字 varchar(200) not null,年龄 int not null default 80,班级 varchar(200) null);
Query OK, 0 rows affected (0.007 sec)

MariaDB [yun]> desc tb2;
+--------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+----------------+
| 序号 | int(11) | NO | PRI | NULL | auto_increment |
| 名字 | varchar(200) | NO | | NULL | |
| 年龄 | int(11) | NO | | 80 | |
| 班级 | varchar(200) | YES | | NULL | |
+--------+--------------+------+-----+---------+----------------+
4 rows in set (0.002 sec)

MariaDB [yun]> insert into tb2 (序号,名字,年龄,班级) values('1','妲己','1000','商一班'),('2','姜子牙','80','周一班'),('3','庄周','1000','商二班'),('4','狄仁杰','50','商三班'),('5','彭祖','800','周一班');
Query OK, 5 rows affected (0.002 sec)
Records: 5 Duplicates: 0 Warnings: 0

MariaDB [yun]>
MariaDB [yun]> select * from tb2;
+--------+-----------+--------+-----------+
| 序号 | 名字 | 年龄 | 班级 |
+--------+-----------+--------+-----------+
| 1 | 妲己 | 1000 | 商一班 |
| 2 | 姜子牙 | 80 | 周一班 |
| 3 | 庄周 | 1000 | 商二班 |
| 4 | 狄仁杰 | 50 | 商三班 |
| 5 | 彭祖 | 800 | 周一班 |
+--------+-----------+--------+-----------+
5 rows in set (0.001 sec)

MariaDB [yun]>

数据库的查看与增加使用操作
1.查看数据库
[root@localhost ~]# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.3.17-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)

MariaDB [(none)]>
2.进入数据库
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]>
3.显示数据库中的所有表
MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| column_stats              |
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| gtid_slave_pos            |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| index_stats               |
| innodb_index_stats        |
| innodb_table_stats        |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| roles_mapping             |
| servers                   |
| slow_log                  |
| table_stats               |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| transaction_registry      |
| user                      |
+---------------------------+
31 rows in set (0.001 sec)
MariaDB [mysql]>
4.查询表中的数据
MariaDB [mysql]> select * from user;
+-----------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+---------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+------------------+---------+--------------+--------------------+
| Host      | User | Password                                  | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | Delete_history_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin | authentication_string | password_expired | is_role | default_role | max_statement_time |
+-----------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+---------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+------------------+---------+--------------+--------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                | Y          | Y            | Y                      | Y                   |          |            |             |              |             0 |           0 |               0 |                    0 |        |                       | N                | N       |              |           0.000000 |
| 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                | Y          | Y            | Y                      | Y                   |          |            |             |              |             0 |           0 |               0 |                    0 |        |                       | N                | N       |              |           0.000000 |
| ::1       | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                | Y          | Y            | Y                      | Y                   |          |            |             |              |             0 |           0 |               0 |                    0 |        |                       | N                | N       |              |           0.000000 |
+-----------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+---------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+------------------+---------+--------------+--------------------+
3 rows in set (0.000 sec)
MariaDB [mysql]>
5.查询指定地段内容
MariaDB [mysql]> select  host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| ::1       | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------+-------------------------------------------+
3 rows in set (0.000 sec)
MariaDB [mysql]>
6.创建一个数据库
MariaDB [mysql]> create database runtime;
Query OK, 1 row affected (0.000 sec)
MariaDB [mysql]>
7.进入库中创建一个表
MariaDB [mysql]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| runtime            |
+--------------------+
4 rows in set (0.000 sec)
MariaDB [mysql]>
8.进入库中,创建一个表为Linux,随后显示表结构
MariaDB [mysql]> use runtime;
Database changed
MariaDB [runtime]> create table linux(username varchar(6) not null,passwd varchar(6) not null);
Query OK, 0 rows affected (0.002 sec)
MariaDB [runtime]> show tables;
+-------------------+
| Tables_in_runtime |
+-------------------+
| linux             |
+-------------------+
1 row in set (0.000 sec)
MariaDB [runtime]> desc linux;
+----------+------------+------+-----+---------+-------+
| Field    | Type       | Null | Key | Default | Extra |
+----------+------------+------+-----+---------+-------+
| username | varchar(6) | NO   |     | NULL    |       |
| passwd   | varchar(6) | NO   |     | NULL    |       |
+----------+------------+------+-----+---------+-------+
2 rows in set (0.001 sec)
MariaDB [runtime]>
9.在表中插入数据,并查看表中的所有数据
MariaDB [runtime]> insert into linux values ('user1','123'),('user2','456'),('user3','789');
Query OK, 3 rows affected (0.001 sec)
Records: 3  Duplicates: 0  Warnings: 0
MariaDB [runtime]> desc linux;
+----------+------------+------+-----+---------+-------+
| Field    | Type       | Null | Key | Default | Extra |
+----------+------------+------+-----+---------+-------+
| username | varchar(6) | NO   |     | NULL    |       |
| passwd   | varchar(6) | NO   |     | NULL    |       |
+----------+------------+------+-----+---------+-------+
2 rows in set (0.001 sec)
MariaDB [runtime]> select * from linux;
+----------+--------+
| username | passwd |
+----------+--------+
| user1    | 123    |
| user2    | 456    |
| user3    | 789    |
+----------+--------+
3 rows in set (0.000 sec)
MariaDB [runtime]>
数据库的修改操作
1.新创建一张表,在表中写入内容,随后更改表名
MariaDB [runtime]> create table class5(username varchar(6) not null,age varchar(6) not null,score varchar(6) not null,studyid varchar(6) not null);
Query OK, 0 rows affected (0.003 sec)
MariaDB [runtime]> show tables;
+-------------------+
| Tables_in_runtime |
+-------------------+
| class5            |
| linux             |
+-------------------+
2 rows in set (0.000 sec)
MariaDB [runtime]> desc class5;
+----------+------------+------+-----+---------+-------+
| Field    | Type       | Null | Key | Default | Extra |
+----------+------------+------+-----+---------+-------+
| username | varchar(6) | NO   |     | NULL    |       |
| age      | varchar(6) | NO   |     | NULL    |       |
| score    | varchar(6) | NO   |     | NULL    |       |
| studyid  | varchar(6) | NO   |     | NULL    |       |
+----------+------------+------+-----+---------+-------+
4 rows in set (0.001 sec)
MariaDB [runtime]> insert into class5 values('user1','19','99','1949'),('user2','20','90','1950');
Query OK, 2 rows affected (0.001 sec)
Records: 2  Duplicates: 0  Warnings: 0
MariaDB [runtime]> select * from class5;
+----------+-----+-------+---------+
| username | age | score | studyid |
+----------+-----+-------+---------+
| user1    | 19  | 99    | 1949    |
| user2    | 20  | 90    | 1950    |
+----------+-----+-------+---------+
2 rows in set (0.000 sec)
MariaDB [runtime]>
MariaDB [runtime]> show tables;
+-------------------+
| Tables_in_runtime |
+-------------------+
| class5            |
| linux             |
+-------------------+
2 rows in set (0.000 sec)
MariaDB [runtime]> alter table class5 rename compute5;
Query OK, 0 rows affected (0.002 sec)
MariaDB [runtime]> show tables;
+-------------------+
| Tables_in_runtime |
+-------------------+
| compute5          |
| linux             |
+-------------------+
2 rows in set (0.000 sec)
MariaDB [runtime]> select * from compute5;
+----------+-----+-------+---------+
| username | age | score | studyid |
+----------+-----+-------+---------+
| user1    | 19  | 99    | 1949    |
| user2    | 20  | 90    | 1950    |
+----------+-----+-------+---------+
2 rows in set (0.000 sec)
MariaDB [runtime]>
2.增加表格内容id,且放在username后面
MariaDB [runtime]> alter table compute5 add id varchar(6) not null after username;
Query OK, 0 rows affected (0.009 sec)
Records: 0  Duplicates: 0  Warnings: 0
MariaDB [runtime]> select * from compute5;
+----------+----+-----+-------+---------+
| username | id | age | score | studyid |
+----------+----+-----+-------+---------+
| user1    |    | 19  | 99    | 1949    |
| user2    |    | 20  | 90    | 1950    |
+----------+----+-----+-------+---------+
2 rows in set (0.000 sec)
MariaDB [runtime]>
3.设置user1的id内容
MariaDB [runtime]> update compute5 set id='1' where username='user1';
Query OK, 1 row affected (0.001 sec)
Rows matched: 1  Changed: 1  Warnings: 0
MariaDB [runtime]>
MariaDB [runtime]> select * from compute5;
+----------+----+-----+-------+---------+
| username | id | age | score | studyid |
+----------+----+-----+-------+---------+
| user1    | 1  | 19  | 99    | 1949    |
| user2    |    | 20  | 90    | 1950    |
+----------+----+-----+-------+---------+
2 rows in set (0.000 sec)
MariaDB [runtime]>
4.删除Linux表里的age内容
MariaDB [runtime]> select * from compute5;
+----------+----+-----+-------+---------+
| username | id | age | score | studyid |
+----------+----+-----+-------+---------+
| user1    | 1  | 19  | 99    | 1949    |
| user2    |    | 20  | 90    | 1950    |
+----------+----+-----+-------+---------+
2 rows in set (0.000 sec)
MariaDB [runtime]> alter table compute5 drop age;
Query OK, 0 rows affected (0.006 sec)
Records: 0  Duplicates: 0  Warnings: 0
MariaDB [runtime]> select * from compute5;
+----------+----+-------+---------+
| username | id | score | studyid |
+----------+----+-------+---------+
| user1    | 1  | 99    | 1949    |
| user2    |    | 90    | 1950    |
+----------+----+-------+---------+
2 rows in set (0.000 sec)
MariaDB [runtime]>
课后练习
1.查看当前系统中存在的所有数据库
[root@localhost ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.28-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.001 sec)

MariaDB [(none)]> 
2.查询当前使用的是哪个数据库
MariaDB [(none)]> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.000 sec)

MariaDB [(none)]> 
3.创建一个名为yun的中文字符集的库
MariaDB [(none)]> create database yun default character set utf8;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| yun                |
+--------------------+
4 rows in set (0.001 sec)

MariaDB [(none)]> 
4.使用yun这个库
MariaDB [(none)]> use yun;
Database changed
MariaDB [yun]> select database();
+------------+
| database() |
+------------+
| yun        |
+------------+
1 row in set (0.000 sec)

MariaDB [yun]> 
5.创建一个名为stu的表,其中包含序号、姓名、性别、年龄、班级(其中序号不为空,其他值均可为空)
MariaDB [yun]> create table stu (序号 int not null,名字 varchar(200) null,性别 varchar(200) null,年龄 int null default 8,班级 varchar(200) null);
Query OK, 0 rows affected (0.011 sec)

MariaDB [yun]> show tables;
+---------------+
| Tables_in_yun |
+---------------+
| stu           |
+---------------+
1 row in set (0.000 sec)

MariaDB [yun]> 
6.创建一个名为tb1的表,其中包含id、name、sale、age、class(其中id不为空,其他值均可为空)
MariaDB [yun]> create table tb1 (id int not null,name varchar(200) null,sale varchar(200) null,age int null default 8,class varchar(200) null);
Query OK, 0 rows affected (0.011 sec)

MariaDB [yun]> show tables;
+---------------+
| Tables_in_yun |
+---------------+
| stu           |
| tb1           |
+---------------+
2 rows in set (0.001 sec)

MariaDB [yun]> 
7.创建一个名为tb2的表,其中包含id、name、sale、age、class
MariaDB [yun]> create table tb2 (id int not null,name varchar(200) null,sale varchar(200) null,age int null default 8,class varchar(200) null);
Query OK, 0 rows affected (0.011 sec)

MariaDB [yun]> show tables;
+---------------+
| Tables_in_yun |
+---------------+
| stu           |
| tb1           |
| tb2           |
+---------------+
3 rows in set (0.001 sec)

MariaDB [yun]> 
8.查看当前库中存在的所有表
MariaDB [yun]> show tables;
+---------------+
| Tables_in_yun |
+---------------+
| stu           |
| tb1           |
| tb2           |
+---------------+
3 rows in set (0.000 sec)

MariaDB [yun]> 
9.查看当前库中所有表的属性信息及列信息
MariaDB [yun]> show create table stu\G
*************************** 1. row ***************************
       Table: stu
Create Table: CREATE TABLE `stu` (
  `序号` int(11) NOT NULL,
  `名字` varchar(200) DEFAULT NULL,
  `性别` varchar(200) DEFAULT NULL,
  `年龄` int(11) DEFAULT 8,
  `班级` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.001 sec)

MariaDB [yun]> desc stu;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| 序号   | int(11)      | NO   |     | NULL    |       |
| 名字   | varchar(200) | YES  |     | NULL    |       |
| 性别   | varchar(200) | YES  |     | NULL    |       |
| 年龄   | int(11)      | YES  |     | 8       |       |
| 班级   | varchar(200) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
5 rows in set (0.003 sec)

MariaDB [yun]> show create table tb1\G
*************************** 1. row ***************************
       Table: tb1
Create Table: CREATE TABLE `tb1` (
  `id` int(11) NOT NULL,
  `name` varchar(200) DEFAULT NULL,
  `sale` varchar(200) DEFAULT NULL,
  `age` int(11) DEFAULT 8,
  `class` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.001 sec)

MariaDB [yun]> desc tb1;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   |     | NULL    |       |
| name  | varchar(200) | YES  |     | NULL    |       |
| sale  | varchar(200) | YES  |     | NULL    |       |
| age   | int(11)      | YES  |     | 8       |       |
| class | varchar(200) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
5 rows in set (0.002 sec)

MariaDB [yun]> show create table tb2\G
*************************** 1. row ***************************
       Table: tb2
Create Table: CREATE TABLE `tb2` (
  `id` int(11) NOT NULL,
  `name` varchar(200) DEFAULT NULL,
  `sale` varchar(200) DEFAULT NULL,
  `age` int(11) DEFAULT 8,
  `class` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.001 sec)

MariaDB [yun]> desc tb2;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   |     | NULL    |       |
| name  | varchar(200) | YES  |     | NULL    |       |
| sale  | varchar(200) | YES  |     | NULL    |       |
| age   | int(11)      | YES  |     | 8       |       |
| class | varchar(200) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
5 rows in set (0.001 sec)

MariaDB [yun]> 
10.删除tb2这个表
MariaDB [yun]> drop table tb2;
Query OK, 0 rows affected (0.006 sec)

MariaDB [yun]> show tables;
+---------------+
| Tables_in_yun |
+---------------+
| stu           |
| tb1           |
+---------------+
2 rows in set (0.001 sec)

MariaDB [yun]> 
11.在stu表中插入5行数据,分别为1 张三 男 20 云一班,2 李四 男 21 云一班,3 小明 男 19 云一班,4 小红 女 20 云一班,1 小兰 女 21 云一班。
MariaDB [yun]> insert into stu values('1','张三','男','20','云一班'),('2','李四','男','21','云一班'),('3','小明','男','19','云一班'),('4','小红','女','20','云一班'),('5','小明','女','21','云一班');
Query OK, 5 rows affected (0.003 sec)
Records: 5  Duplicates: 0  Warnings: 0

MariaDB [yun]> 
或者
MariaDB [yun]> insert into stu (序号,名字,性别,年龄,班级) values('11','张三','男','20','云一班'),('22','李四','男','21','云一班'),('33','小明','男','19','云一班'),('44','小红','女','20','云一班'),('55','小明','女','21','云一班');
Query OK, 5 rows affected (0.003 sec)
Records: 5  Duplicates: 0  Warnings: 0

MariaDB [yun]>
12.查看stu表内容
MariaDB [yun]> select * from stu;
+--------+--------+--------+--------+-----------+
| 序号   | 名字   | 性别   | 年龄   | 班级      |
+--------+--------+--------+--------+-----------+
|      1 | 张三   | 男     |     20 | 云一班    |
|      2 | 李四   | 男     |     21 | 云一班    |
|      3 | 小明   | 男     |     19 | 云一班    |
|      4 | 小红   | 女     |     20 | 云一班    |
|      5 | 小明   | 女     |     21 | 云一班    |
+--------+--------+--------+--------+-----------+
5 rows in set (0.001 sec)

MariaDB [yun]> 
或者
MariaDB [yun]> select * from stu;
+--------+--------+--------+--------+-----------+
| 序号   | 名字   | 性别   | 年龄   | 班级      |
+--------+--------+--------+--------+-----------+
|      1 | 张三   | 男     |     20 | 云一班    |
|      2 | 李四   | 男     |     21 | 云一班    |
|      3 | 小明   | 男     |     19 | 云一班    |
|      4 | 小红   | 女     |     20 | 云一班    |
|      5 | 小明   | 女     |     21 | 云一班    |
|     11 | 张三   | 男     |     20 | 云一班    |
|     22 | 李四   | 男     |     21 | 云一班    |
|     33 | 小明   | 男     |     19 | 云一班    |
|     44 | 小红   | 女     |     20 | 云一班    |
|     55 | 小明   | 女     |     21 | 云一班    |
+--------+--------+--------+--------+-----------+
10 rows in set (0.001 sec)

MariaDB [yun]>
13.在stu表中对序号插入数据,并查看stu表内容
MariaDB [yun]> insert into stu (序号) values('111');
Query OK, 1 row affected (0.002 sec)

MariaDB [yun]> select * from stu;
+--------+--------+--------+--------+-----------+
| 序号   | 名字   | 性别   | 年龄   | 班级      |
+--------+--------+--------+--------+-----------+
|      1 | 张三   | 男     |     20 | 云一班    |
|      2 | 李四   | 男     |     21 | 云一班    |
|      3 | 小明   | 男     |     19 | 云一班    |
|      4 | 小红   | 女     |     20 | 云一班    |
|      5 | 小明   | 女     |     21 | 云一班    |
|     11 | 张三   | 男     |     20 | 云一班    |
|     22 | 李四   | 男     |     21 | 云一班    |
|     33 | 小明   | 男     |     19 | 云一班    |
|     44 | 小红   | 女     |     20 | 云一班    |
|     55 | 小明   | 女     |     21 | 云一班    |
|    111 | NULL   | NULL   |      8 | NULL      |
+--------+--------+--------+--------+-----------+
11 rows in set (0.001 sec)

MariaDB [yun]> 
14.将tb1表名修改为stu1
MariaDB [yun]> show tables;
+---------------+
| Tables_in_yun |
+---------------+
| stu           |
| tb1           |
+---------------+
2 rows in set (0.001 sec)

MariaDB [yun]> alter table tb1 rename stu1;
Query OK, 0 rows affected (0.009 sec)

MariaDB [yun]>
15.查看修改后的结果
MariaDB [yun]> show tables;
+---------------+
| Tables_in_yun |
+---------------+
| stu           |
| stu1          |
+---------------+
2 rows in set (0.001 sec)

MariaDB [yun]> 
16.将stu1的age字段换成nianling字段,字符类型为smallint(100)
MariaDB [yun]> desc stu1;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   |     | NULL    |       |
| name  | varchar(200) | YES  |     | NULL    |       |
| sale  | varchar(200) | YES  |     | NULL    |       |
| age   | int(11)      | YES  |     | 8       |       |
| class | varchar(200) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
5 rows in set (0.002 sec)

MariaDB [yun]> alter table stu1 change age nianling smallint(200);
Query OK, 0 rows affected (0.022 sec)              
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [yun]> 
17.查看修改结果
MariaDB [yun]> desc stu1;
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id       | int(11)       | NO   |     | NULL    |       |
| name     | varchar(200)  | YES  |     | NULL    |       |
| sale     | varchar(200)  | YES  |     | NULL    |       |
| nianling | smallint(200) | YES  |     | NULL    |       |
| class    | varchar(200)  | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
5 rows in set (0.001 sec)

MariaDB [yun]> 
18.在stu1表中添加一个wuxin字段,字符类型为varchar(200)
MariaDB [yun]> desc stu1;
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id       | int(11)       | NO   |     | NULL    |       |
| name     | varchar(200)  | YES  |     | NULL    |       |
| sale     | varchar(200)  | YES  |     | NULL    |       |
| nianling | smallint(200) | YES  |     | NULL    |       |
| class    | varchar(200)  | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
5 rows in set (0.002 sec)

MariaDB [yun]> alter table stu1 add wuxin varchar(200);
Query OK, 0 rows affected (0.003 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [yun]> 
19.查看添加结果
MariaDB [yun]> desc stu1;
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id       | int(11)       | NO   |     | NULL    |       |
| name     | varchar(200)  | YES  |     | NULL    |       |
| sale     | varchar(200)  | YES  |     | NULL    |       |
| nianling | smallint(200) | YES  |     | NULL    |       |
| class    | varchar(200)  | YES  |     | NULL    |       |
| wuxin    | varchar(200)  | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
6 rows in set (0.001 sec)

MariaDB [yun]> 
20.在stu1表中删除添加的wuxin字段
MariaDB [yun]> desc stu1;
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id       | int(11)       | NO   |     | NULL    |       |
| name     | varchar(200)  | YES  |     | NULL    |       |
| sale     | varchar(200)  | YES  |     | NULL    |       |
| nianling | smallint(200) | YES  |     | NULL    |       |
| class    | varchar(200)  | YES  |     | NULL    |       |
| wuxin    | varchar(200)  | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
6 rows in set (0.002 sec)

MariaDB [yun]> alter table stu1 drop wuxin;
Query OK, 0 rows affected (0.012 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [yun]> 
21.查看删除结果
MariaDB [yun]> desc stu1;
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id       | int(11)       | NO   |     | NULL    |       |
| name     | varchar(200)  | YES  |     | NULL    |       |
| sale     | varchar(200)  | YES  |     | NULL    |       |
| nianling | smallint(200) | YES  |     | NULL    |       |
| class    | varchar(200)  | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
5 rows in set (0.002 sec)

MariaDB [yun]> 
22.在stu1表中添加一个yunjisuan字段,字符类型为varchar(200),将其放在name字段后面
MariaDB [yun]> desc stu1;
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id       | int(11)       | NO   |     | NULL    |       |
| name     | varchar(200)  | YES  |     | NULL    |       |
| sale     | varchar(200)  | YES  |     | NULL    |       |
| nianling | smallint(200) | YES  |     | NULL    |       |
| class    | varchar(200)  | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
5 rows in set (0.002 sec)

MariaDB [yun]> alter table stu1 add yunjisuan varchar(200) after name;
Query OK, 0 rows affected (0.018 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [yun]> 
23.查看添加结果
MariaDB [yun]> desc stu1;
+-----------+---------------+------+-----+---------+-------+
| Field     | Type          | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| id        | int(11)       | NO   |     | NULL    |       |
| name      | varchar(200)  | YES  |     | NULL    |       |
| yunjisuan | varchar(200)  | YES  |     | NULL    |       |
| sale      | varchar(200)  | YES  |     | NULL    |       |
| nianling  | smallint(200) | YES  |     | NULL    |       |
| class     | varchar(200)  | YES  |     | NULL    |       |
+-----------+---------------+------+-----+---------+-------+
6 rows in set (0.001 sec)

MariaDB [yun]> 
24.将stu表中的年龄全部修改为30
MariaDB [yun]> select * from stu;
+--------+--------+--------+--------+-----------+
| 序号   | 名字   | 性别   | 年龄   | 班级      |
+--------+--------+--------+--------+-----------+
|      1 | 张三   | 男     |     20 | 云一班    |
|      2 | 李四   | 男     |     21 | 云一班    |
|      3 | 小明   | 男     |     19 | 云一班    |
|      4 | 小红   | 女     |     20 | 云一班    |
|      5 | 小明   | 女     |     21 | 云一班    |
|     11 | 张三   | 男     |     20 | 云一班    |
|     22 | 李四   | 男     |     21 | 云一班    |
|     33 | 小明   | 男     |     19 | 云一班    |
|     44 | 小红   | 女     |     20 | 云一班    |
|     55 | 小明   | 女     |     21 | 云一班    |
|    111 | NULL   | NULL   |      8 | NULL      |
+--------+--------+--------+--------+-----------+
11 rows in set (0.001 sec)

MariaDB [yun]> update stu set 年龄=30;
Query OK, 11 rows affected (0.001 sec)
Rows matched: 11  Changed: 11  Warnings: 0

MariaDB [yun]> 
25.查看修改结果
MariaDB [yun]> select * from stu;
+--------+--------+--------+--------+-----------+
| 序号   | 名字   | 性别   | 年龄   | 班级      |
+--------+--------+--------+--------+-----------+
|      1 | 张三   | 男     |     30 | 云一班    |
|      2 | 李四   | 男     |     30 | 云一班    |
|      3 | 小明   | 男     |     30 | 云一班    |
|      4 | 小红   | 女     |     30 | 云一班    |
|      5 | 小明   | 女     |     30 | 云一班    |
|     11 | 张三   | 男     |     30 | 云一班    |
|     22 | 李四   | 男     |     30 | 云一班    |
|     33 | 小明   | 男     |     30 | 云一班    |
|     44 | 小红   | 女     |     30 | 云一班    |
|     55 | 小明   | 女     |     30 | 云一班    |
|    111 | NULL   | NULL   |     30 | NULL      |
+--------+--------+--------+--------+-----------+
11 rows in set (0.001 sec)

MariaDB [yun]> 
26.在stu表中的年龄值在30以上全部增加10
MariaDB [yun]> select * from stu;
+--------+--------+--------+--------+-----------+
| 序号   | 名字   | 性别   | 年龄   | 班级      |
+--------+--------+--------+--------+-----------+
|      1 | 张三   | 男     |     30 | 云一班    |
|      2 | 李四   | 男     |     30 | 云一班    |
|      3 | 小明   | 男     |     30 | 云一班    |
|      4 | 小红   | 女     |     30 | 云一班    |
|      5 | 小明   | 女     |     30 | 云一班    |
|     11 | 张三   | 男     |     30 | 云一班    |
|     22 | 李四   | 男     |     30 | 云一班    |
|     33 | 小明   | 男     |     30 | 云一班    |
|     44 | 小红   | 女     |     30 | 云一班    |
|     55 | 小明   | 女     |     30 | 云一班    |
|    111 | NULL   | NULL   |     30 | NULL      |
+--------+--------+--------+--------+-----------+
11 rows in set (0.002 sec)

MariaDB [yun]> update stu set 年龄=年龄+10 where 年龄=30;
Query OK, 11 rows affected (0.002 sec)
Rows matched: 11  Changed: 11  Warnings: 0

MariaDB [yun]>
27.查看增加结果
MariaDB [yun]> select * from stu;
+--------+--------+--------+--------+-----------+
| 序号   | 名字   | 性别   | 年龄   | 班级      |
+--------+--------+--------+--------+-----------+
|      1 | 张三   | 男     |     40 | 云一班    |
|      2 | 李四   | 男     |     40 | 云一班    |
|      3 | 小明   | 男     |     40 | 云一班    |
|      4 | 小红   | 女     |     40 | 云一班    |
|      5 | 小明   | 女     |     40 | 云一班    |
|     11 | 张三   | 男     |     40 | 云一班    |
|     22 | 李四   | 男     |     40 | 云一班    |
|     33 | 小明   | 男     |     40 | 云一班    |
|     44 | 小红   | 女     |     40 | 云一班    |
|     55 | 小明   | 女     |     40 | 云一班    |
|    111 | NULL   | NULL   |     40 | NULL      |
+--------+--------+--------+--------+-----------+
11 rows in set (0.001 sec)

MariaDB [yun]> 
28.删除stu表中的所有内容并查看删除结果
MariaDB [yun]> select * from stu;
+--------+--------+--------+--------+-----------+
| 序号   | 名字   | 性别   | 年龄   | 班级      |
+--------+--------+--------+--------+-----------+
|      1 | 张三   | 男     |     40 | 云一班    |
|      2 | 李四   | 男     |     40 | 云一班    |
|      3 | 小明   | 男     |     40 | 云一班    |
|      4 | 小红   | 女     |     40 | 云一班    |
|      5 | 小明   | 女     |     40 | 云一班    |
|     11 | 张三   | 男     |     40 | 云一班    |
|     22 | 李四   | 男     |     40 | 云一班    |
|     33 | 小明   | 男     |     40 | 云一班    |
|     44 | 小红   | 女     |     40 | 云一班    |
|     55 | 小明   | 女     |     40 | 云一班    |
|    111 | NULL   | NULL   |     40 | NULL      |
+--------+--------+--------+--------+-----------+
11 rows in set (0.001 sec)

MariaDB [yun]> delete from stu;
Query OK, 11 rows affected (0.003 sec)

MariaDB [yun]> select * from stu;
Empty set (0.001 sec)

MariaDB [yun]> 
29.删除yun库中的所有表并查看删除结果
MariaDB [yun]> show tables;
+---------------+
| Tables_in_yun |
+---------------+
| stu           |
| stu1          |
+---------------+
2 rows in set (0.001 sec)

MariaDB [yun]> drop table stu;
Query OK, 0 rows affected (0.008 sec)

MariaDB [yun]> drop table stu1;
Query OK, 0 rows affected (0.007 sec)

MariaDB [yun]> show tables;
Empty set (0.001 sec)

MariaDB [yun]> 
30.删除yun这个库并查看删除结果
MariaDB [yun]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| yun                |
+--------------------+
4 rows in set (0.001 sec)

MariaDB [yun]> drop database yun;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)

MariaDB [(none)]> 
上一篇 下一篇