MySQL咋用啊(数据库基础操作大全)

数据库

也叫做数据库管理系统(Database Management System),简称DBMS。是由数据库及其管理软件组成的系统,用来集中,结构化的管理数据。

数据库常见名词:
数据库(Database)
数据库管理系统(Database Management System)[简称:DBMS]
数据库管理员(Database Administrator)[简称DBA]
数据库开发人员(Database Developer)[简称DBD]

和在linux中一样,数据库中也是通过一条条命令来对数据进行操作的。linux中有命令,而MySQL数据库是通过SQL语句来对其进行操作的,你想玩MySQL,就得先搞明白这是个啥语句。

对于数据库和数据表,你可以把其当成是一本书和其中的章节。一个数据库是一本书,数据库中的每一个数据表都是一个章节,一个章节中可以有若干内容。

SQL语句

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL从功能上可以分为3部分:数据定义、数据操纵和数据控制。

结构化查询语言包含6个部分

1、数据查询语言(DQL):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出,使用SELECT来实现。

2、数据操作语言(DML):其语句包括动词INSERT、UPDATE和DELETE。它们分别用于记录的添加、修改和删除。

3、事务控制语言(TCL):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。

4、数据控制语言(DCL):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。

5、数据定义语言(DDL):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。

6、指针控制语言(CCL):用于对一个或多个表单独行的操作。

登录MySQL

注:数据库版本8.0.13

对于刚安装完成的MySQL,默认是空密码登录,直接输入mysql即可进入到数据库中。

mysql

对于这种直接可以登录的,都设置了相关的路径优化,要么把mysql安装目录/bin/*在PATH路径中创建一个软连接,要么将其写入到了/etc/profile文件中的PATH路径。

对于没有优化路径的数据库,只能通过绝对路径的方式进入

/usr/local/mysql/bin/mysql

直接exit退出数据库

mysql> exit
Bye

设置数据库管理员密码

为了安全考虑,我们需要给root设置一个登录数据库密码(root就是数据库管理员啊),当然对于练习来说,没有太大的必要,不过命令还是要知道的。

mysqladmin -u root password "test.com"
#命令关键字 -u 指定用户 password "密码内容"
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

其中有一个警告,说的是在命令行中显示明文密码不安全,这个不用管,密码已经设置成功了。

再次登录mysql数据库测试

mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

数据库拒绝root访问,在设置完密码后,空密码就无法登录了。

接下来输入密码登录数据库中
不安全登录方式:

mysql -u root -ptest.com 
mysql: [Warning] Using a password on the command line interface can be insecure.
#每次在命令行中输入密码都会输出不安全警告

相对安全登录方式:

mysql -u root -p
Enter password: 

默认存在数据库说明

在初始化数据库后,有四个默认存在的数据库

mysql> show databases;	#查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

information_schema:数据库中的信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。

mysql:存储数据库中用户信息,权限信息及mysql需要使用的控制和管理信息。

performance_schema:主要用于收集数据库服务器性能参数。

sys:sys库里面的表、视图、函数、存储过程可以使我们更方便、快捷的了解到MySQL的一些信息,比如哪些语句使用了临时表、哪个SQL没有使用索引、哪个schema中有冗余索引、查找使用全表扫描的SQL、查找用户占用的IO等,sys库里这些视图中的数据,大多是从performance_schema里面获得的。目标是把performance_schema的复杂度降低,让我们更快的了解DB的运行情况。

数据库基础操作

DDL语句操作

DDL是数据定义语言的缩写,简单来说,就是对数据库内部的对象进行创建,删除,修改等操作的语言。它和DML语句的最大区别是DML只是对表内部数据操作,而不涉及表的定义,结构的修改,更不会涉及其他对象。DDL语句更多地由数据库管理员(DBA)使用,开发人员一般很少使用。

注:数据库中默认不严格区分大小写

查看帮助

这是功能简直是健忘者的福音,和linux中使用命令 --help一样,在linux中也有这个语法帮助。

语法:help 命令

就拿show来说,看看命令可以跟的参数及语法。

mysql> help show;
Name: 'SHOW'
Description:
SHOW has many forms that provide information about databases, tables,
columns, or status information about the server. This section describes
those following:

SHOW {BINARY | MASTER} LOGS
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW CHARACTER SET [like_or_where]
SHOW COLLATION [like_or_where]
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]
SHOW CREATE DATABASE db_name
SHOW CREATE EVENT event_name
SHOW CREATE FUNCTION func_name
SHOW CREATE PROCEDURE proc_name
SHOW CREATE TABLE tbl_name
SHOW CREATE TRIGGER trigger_name
SHOW CREATE VIEW view_name
SHOW DATABASES [like_or_where]
SHOW ENGINE engine_name {STATUS | MUTEX}
SHOW [STORAGE] ENGINES
SHOW ERRORS [LIMIT [offset,] row_count]
SHOW EVENTS
SHOW FUNCTION CODE func_name
SHOW FUNCTION STATUS [like_or_where]
SHOW GRANTS FOR user
SHOW INDEX FROM tbl_name [FROM db_name]
SHOW MASTER STATUS
SHOW OPEN TABLES [FROM db_name] [like_or_where]
SHOW PLUGINS
SHOW PROCEDURE CODE proc_name
SHOW PROCEDURE STATUS [like_or_where]
SHOW PRIVILEGES
SHOW [FULL] PROCESSLIST
SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]
SHOW PROFILES
SHOW RELAYLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW SLAVE HOSTS
SHOW SLAVE STATUS [FOR CHANNEL channel]
SHOW [GLOBAL | SESSION] STATUS [like_or_where]
SHOW TABLE STATUS [FROM db_name] [like_or_where]
SHOW [FULL] TABLES [FROM db_name] [like_or_where]
SHOW TRIGGERS [FROM db_name] [like_or_where]
SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
SHOW WARNINGS [LIMIT [offset,] row_count]

like_or_where:
    LIKE 'pattern'
  | WHERE expr

If the syntax for a given SHOW statement includes a LIKE 'pattern'
part, 'pattern' is a string that can contain the SQL % and _ wildcard
characters. The pattern is useful for restricting statement output to
matching values.

Several SHOW statements also accept a WHERE clause that provides more
flexibility in specifying which rows to display. See
http://dev.mysql.com/doc/refman/8.0/en/extended-show.html.

URL: http://dev.mysql.com/doc/refman/8.0/en/show.html

查看数据库

使用show databases即可查看数据库,后面的;是书写格式,

mysql> show databases;

查看数据库的几种方式

正常查看方式:show databases;

以行的方式查看:show databases \G

也可以在shell环境中查看: mysql -e ‘show databases’ -uroot -ptest.com

-e可以输入sql语句,使用’'扩住,-u输入用户名,-p输入密码

创建数据库

语法:create database 数据库名称;

创建个库试试看

mysql> create database test;
Query OK, 0 rows affected (0.07 sec)

出现Query OK字样就表示执行成功,若出现ERROR字样,你的语句就出现了错误。

在对数据库命名的时候,名称中不能有特殊符号,例如:!@#¥%……等等,_例外。也不能以纯数字命名,而对字母没有限制。

如果非要带有特殊字符或纯数字的话,可以使用``将其括住,那样就创建成功了。

mysql> create database `@_@`;

使用特殊符号创建的库,查看数据库存放目录,我所创建的@_@变成了什么。

 ls  /data/mysql/data/ 		#内容只列举了包含创建库目录的一些内容
@0040_@0040    binlog.index     ib_logfile0         private_key.pem

@0040_@0040就是我创建的@_@,和在数据库中的具体名称不匹配,不建议使用特殊符号。

切换数据库

语法:use 数据库名称;

mysql> use test;

对数据库的所有操作,都是在进入到数据库进行的,默认没有进入任何一个库中,只能对数据库进行创建,进入数据库后,就能添加表,添加数据等数据了。

删除数据库

语法:drop database 数据库名称;

drop database test;

对于数据的删除操作需要谨慎使用,以免对数据造成“不可逆”损失,虽说大多数情况下都可以通过二进制文件恢复或通过备份恢复,但误删除的恢复还是很麻烦不是,删除慎用啊!!!

数据表基础操作

在说明如何创建表之前,要先来了解一下字段类型,类型对于表的创建必不可少,定义了可以存储什么类型的数据。

数据类型

数据类型是数据的一种属性,其可以决定数据的存储格式,有效范围和相应的限制。mysql的数据类型包括整数类型,浮点数类型,日期和时间类型,字符串类型和二进制类型。

浮点数型与整数类型和为一类,字符串类型与二进制类型和为一类。所以大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

类型 大小 范围 用途
TINYINT 1 字节 (-128,127) 小整数值
SMALLINT 2 字节 (-32 768,32 767) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) 大整数值
INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) 大整数值
BIGINT 8 字节 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) 极大整数值
FLOAT 4 字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 单精度,浮点数值
DOUBLE 8 字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度,浮点数值

日期和时间类型

类型 大小 范围 格式 用途
DATE 3字节 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3字节 ‘-838:59:59’/‘838:59:59’ HH:MM:SS 时间值或持续时间
YEAR 1字节 1901/2155 YYYY 年份值
DATETIME 8字节 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4字节 1970-01-01 00:00:00/2038,结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

字符串类型

类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535 字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据

创建数据表

语法:create table 表名(字符名 类型,字段名 类型,字段名 类型);

在创建表的时候,需要进入到库中,否则将会报错,以下是创建一个名为test_table的表

mysql> use test;	
Database changed
mysql> create table test_table(id int(20),name char(20),age int);

对于字段的数据类型,要根据实际情况来自行选择,拿我创建的age字段来说,其数据类型为int,一个人的年龄最多也就130岁,而我给的数据类型范围极大,这就显得类型极不合适,而且其大小为4字节,数据越多,越浪费存储资源。建议将age改为TINYINT类型即可,最大为127,大小为1字节。当然,自己的宝贝疙瘩,想怎么定义怎么定义。

也可为表指定存储引擎和字符集在插入语法后面添加即可。

例如:指定存储引擎为InnoDB,字符集为utf8

mysql> create table test2(id int(10),name char(20),age int) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected, 1 warning (0.10 sec)

其实默认存储引擎和字符集就是InnoDB和utf8,使用show create table 表名即可查看。

查看数据表

使用使用show tables即可查看库中的表

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test_table     |
+----------------+
1 row in set (0.00 sec)

使用desc 表名来查看表的结构

mysql> desc test_table;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(20)  | YES  |     | NULL    |       |
| name  | char(20) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

使用show create table 表名可查看创建表执行了哪些命令

mysql> show create table test_table;

修改数据表

修改表名

语法:alter table 表名 rename 新表名;
将创建的test_table表改为hahaha

mysql> alter table test_table rename hahaha;
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| hahaha         |
+----------------+
1 row in set (0.00 sec)

修改表的字段类型

语法:alter table 表名 modify 要修改的字段名要修改的类型;

先看看原有表中的字段类型

mysql> desc hahaha;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(20)  | YES  |     | NULL    |       |
| name  | char(20) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

修改字段name的char(20)字段类型为char(10)

mysql> alter table hahaha modify name char(10);
Query OK, 0 rows affected (0.46 sec)
Records: 0  Duplicates: 0  Warnings: 0

再次查看表的结构

mysql> desc hahaha;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(20)  | YES  |     | NULL    |       |
| name  | char(10) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

修改表中的字段类型和字段名称

语法:alter table 表名 change 原字段名 新字段名 新字段类型;

将字段id名称改为uid,新字段类型改为int(11)

mysql> alter table hahaha change id uid int(11);
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

再次查看数据表结构

mysql> desc hahaha;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| uid   | int(11)  | YES  |     | NULL    |       |
| name  | char(10) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

CHANGE 和MODIFY的区别:

CHANGE 对列进行重命名和更改列的类型,需给定旧的列名称和新的列名称、当前的类型。 MODIFY 可以改变列的类型,此时不需要重命名(不需给定新的列名称)。

在表中添加字段

语法:alter table 表名 add字段名 字段类型;

在hahaha表中添加sex字段

mysql> alter table hahaha add sex enum('M','W');

这个enum字段类型是枚举,用于限定值的取值范围,只能在值中选择一个,是男不是女,是女不是男。

查看表结构

mysql> desc hahaha;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| uid   | int(11)       | YES  |     | NULL    |       |
| name  | char(10)      | YES  |     | NULL    |       |
| age   | int(11)       | YES  |     | NULL    |       |
| sex   | enum('M','W') | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

sex字段就添加进去了,其类型为enum。

在表中第一列添加字段

mysql> alter table hahaha add id int(10) first;
Query OK, 0 rows affected (0.19 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc hahaha;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | int(10)       | YES  |     | NULL    |       |
| uid   | int(11)       | YES  |     | NULL    |       |
| name  | char(10)      | YES  |     | NULL    |       |
| age   | int(11)       | YES  |     | NULL    |       |
| sex   | enum('M','W') | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

在指定字段位置后面添加字段

语法:alter table 表名 add 字段 字段类型 after 指定字段位置;

先看看现在的表结构

mysql> desc hahaha;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | int(10)       | YES  |     | NULL    |       |
| uid   | int(11)       | YES  |     | NULL    |       |
| name  | char(10)      | YES  |     | NULL    |       |
| age   | int(11)       | YES  |     | NULL    |       |
| sex   | enum('M','W') | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

sex后面添加一个test字段,字段类型为char(10)

mysql> alter table hahaha add test char(10) after sex;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

再次查看表结构

mysql> desc hahaha;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | int(10)       | YES  |     | NULL    |       |
| uid   | int(11)       | YES  |     | NULL    |       |
| name  | char(10)      | YES  |     | NULL    |       |
| age   | int(11)       | YES  |     | NULL    |       |
| sex   | enum('M','W') | YES  |     | NULL    |       |
| test  | char(10)      | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

删除数据表

删除表中字段

语法:alter table 表名 drop 字段名;

将表hahaha中的test字段删除

mysql> alter table hahaha drop test;
Query OK, 0 rows affected (0.10 sec)
Records: 0  Duplicates: 0  Warnings: 0

删除数据表

格式:drop table 表名;

把我们创建的hahaha表删除

mysql> drop table hahaha;
Query OK, 0 rows affected (0.36 sec)

查看数据库中的表

mysql> show tables;
Empty set (0.00 sec)

本来就一个表,删除了之后什么都没得了,还是那句话,删除操作慎用。

if exists和if no exists

这是个if语句,功能如其名称,如果存在则执行什么操作,如果不存在则执行什么操作,可以避免创建或删除数据库时产生的报错。

语法:创建或删除语句 if [not] exists 数据库名称

如果hahaha数据库不存在则创建

mysql> create database if not exists hahaha;
Query OK, 1 row affected (0.14 sec)

如果hahaha数据库存在则删除

mysql> drop database if exists hahaha;
Query OK, 0 rows affected (0.11 sec)

表中数据操作

DML语句操作

DML操作是指对数据库中表记录的操作,主要包括表记录的插入(insert),更新(update),删除(delete)和查询(select),是开发人员日常使用最为频繁的操作

插入记录

语法:insert into 表名 values(字段值1,字段值2,字段值3);

重新创建一个表,用于说明插入字段

mysql> create table staff(id int(20),name char(40),age int);

在其中添加一条记录

insert into staff values(1,'张三',21);

字符串类型字段在插入的时候需要加上引号,要不然就会输出错误。

也可同时插入多条记录

语法:insert into 表名 values(记录1),(记录2)

mysql> insert into staff values(2,'李四',22),(3,'王五',23);

或者分开插入表记录

语法:insert into 表名(字段1,字段2)values(值1,值2)

mysql> insert into staff (id,name,age)values(4,'赵六',24);

查询记录

DQL语句

语法:select * from 表名称
注:*号表示表中所有的字段,可将其换成指定字段

有两种查询方式,1)是进入数据库中查询

mysql> use test;
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
mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   21 |
|    2 | 李四   |   22 |
|    3 | 王五   |   23 |
|    4 | 赵六   |   24 |
+------+--------+------+
4 rows in set (0.00 sec)

2)在其他库中查询表,在刚进入数据库管理系统中,默认是没有进入任何库中的。直接使用select * from staff会产生报错。

mysql> select * from staff;
ERROR 1046 (3D000): No database selected

这个情况,将表名部分修改一下就OK了。

修改后语法:select * from 库名称.表名称
我们使用那种语法试试看

mysql> select * from test.staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   21 |
|    2 | 李四   |   22 |
|    3 | 王五   |   23 |
|    4 | 赵六   |   24 |
+------+--------+------+
4 rows in set (0.00 sec)

这样就OK了。

刚才单独说明了*是查看所有字段,可以单独查询字段记录。

mysql> select id from test.staff;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
+------+
4 rows in set (0.00 sec)

除非有特殊需求,通常情况下都是查看全部记录,当然,输入字段也可实现效果,只不过比较麻烦。

mysql> select id,name,age from test.staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   21 |
|    2 | 李四   |   22 |
|    3 | 王五   |   23 |
|    4 | 赵六   |   24 |
+------+--------+------+
4 rows in set (0.00 sec)

使用select还可以查看一些别的数据,例如:登录用户,系统时间等等。

例如:查看时间,用户和数据库

mysql> select now(),user(),database();
+---------------------+----------------+------------+
| now()               | user()         | database() |
+---------------------+----------------+------------+
| 2020-04-18 16:05:54 | root@localhost | test       |
+---------------------+----------------+------------+
1 row in set (0.00 sec)

更新记录

语法:update 表名 set 新字段=新值 where 原字段=原值

mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   21 |
|    2 | 李四   |   22 |
|    3 | 王五   |   23 |
|    4 | 赵六   |   24 |
+------+--------+------+
4 rows in set (0.00 sec)

结合实例你就理解如何使用了,例如将id为1记录的age更新为31。

mysql> update staff set age=31 where id=1;

update:语句关键字
staff:表名
set:语句关键字
age=31:更新字段
where:条件
id=1:原字段

mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   31 |
|    2 | 李四   |   22 |
|    3 | 王五   |   23 |
|    4 | 赵六   |   24 |
+------+--------+------+
4 rows in set (0.00 sec)

再次查看,字段已经更新了,如果不指定条件,则会对所有记录的字段进行更改。

例如:将所有记录的age字段改为18

mysql> update staff set age=18;
Query OK, 4 rows affected (0.11 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   18 |
|    2 | 李四   |   18 |
|    3 | 王五   |   18 |
|    4 | 赵六   |   18 |
+------+--------+------+
4 rows in set (0.00 sec)

同时更新多个字段的值
在set后面写入更新字段即可,使用,分隔

将赵六的id改为233,age改为23

mysql> update staff set id=233,age=23 where name='赵六';
Query OK, 1 row affected (0.09 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   18 |
|    2 | 李四   |   18 |
|    3 | 王五   |   18 |
|  233 | 赵六   |   23 |
+------+--------+------+
4 rows in set (0.00 sec)

删除记录

语法:delete from 表名 where 字段=值

注:这个其中的where是条件的意思,由你指定删除什么条件的字段,此项可以省略,则会删除所有记录。

删除id为233的记录

mysql> delete from staff where id=233;
Query OK, 1 row affected (0.05 sec)

mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   18 |
|    2 | 李四   |   18 |
|    3 | 王五   |   18 |
+------+--------+------+
3 rows in set (0.00 sec)

删除所有记录

mysql> delete from staff ;
Query OK, 3 rows affected (0.01 sec)

mysql> select * from staff;
Empty set (0.00 sec)

命令总结

主要命令 作用
show 查询库和表
create 创建库和表
use 进入数据库
drop 删除库和表
alter 修改数据表
desc 查询表结构
insert 插入记录
select 查询记录
update 修改记录
delete 删除记录

若觉得对你有帮助,点赞支持一下哦

发布了167 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42534026/article/details/105538826