超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

我正在参与CSDN《新程序员》有奖征文
茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!

愿你在未来的日子,保持热爱,奔赴山海!

文章目录

1. 数据库的基本知识

1.1 为什么要学习数据库

首先,我们要知道我们保存的数据的方式有几种呢?

  1. 数据保存在内存

    保存在内存的方式有:集合和数组的方式。

    int[] arr = new int[]{1, 2, 3, 4};
    
    ArrayList<Integer>list = new ArrayList<Integer>();
    list.add(1);
    list.add(2);
    

    new出来的对象存储在堆中,堆是内存中的一小块空间。

    优点:内存速度快。
    缺点:断电/程序退出,数据就清除了,不能保证永久保存数据。

  2. 数据保存在普通文件
    优点:永久保存
    缺点:查找,增加,修改,删除数据比较麻烦,效率低

    给大家看看我珍藏多年的照片文件。

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  3. 数据保存在数据库
    优点:

    • 永久保存,实现数据持久化。

    • 使用完整的管理系统统一管理,易于查询,通过SQL语句比较方便的操作数据库,数据库是对大量的信息进行管理的高效的解决方案

可以看到,使用数据库的好处:

  • 持久化数据到本地 。
  • 可以实现结构化查询,方便管理。

1.2 数据库的概念

  1. DB:数据库,存储数据的仓库。它保存了一系列有组织的数据。
  2. DBMS:数据库管理系统,又称为数据库软件(产品)。数据库是通过 DBMS创建和操作的容器,用于管理DB中的数据 。
  3. SQL:结构化查询语言,专门用来与数据库通信的语言即用于和DBMS通信的语言。

1.3 数据库存储数据的特点

  1. 数据库存储方式是将数据放到表中,表再放到库中。

  2. 一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性

  3. 表具有一些特性,这些特性定义了数据在表中如何存储,类似Java中类的设计。

  4. 表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似Java中的属性

  5. 表中的数据是按行存储的,每一行类似于Java中的对象。

1.4 常见的数据库

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  • Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MySQL。

  • MySQL:开源免费的数据库,小型的数据库。已经被Oracle收购了。

  • DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中。

  • SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。

  • SyBase:已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner

  • SQLite: 嵌入式的小型数据库,应用在手机端。

    现在互联网当中,较为常用的数据库:Oracle和MySQL。

    在Web应用中,使用的最多的就是MySQL数据库,原因如下:

    1. 开源、免费。最主要就是免费,也是我们现在着重学习的数据库。
    2. 功能足够强大,足以应付Web应用开发(最高支持千万级别的并发访问)。

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

1.5 数据库的卸载与安装

MySQL安装地址

1.5.1 MySQL目录结构

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

目录结构大概了解下,知道有什么就行啦:

│-- bin:mysql相关的可执行文件*.exe
     │-- MySQLInstanceConfig.exe mysql的配置程序
│-- data: mysql自带的数据库文件(不用关注)
│-- include: c语言的头文件(不用关注)
│-- lib: 存放mysql使用到的dll动态库(相当于jar包,不用关注)
│-- my.ini mysql的配置文件,配置了mysql的相关信息

1.5.2 MySQL服务的启动和停止

MySQL服务的启动和停止有两种方式:

  • 计算机 --> 右击管理 --> 服务

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

    到这里就可以右键启动或停止MySQL服务。

  • 通过cmd进入DOS命令行输入:

    net start mysql 启动服务
    
    net stop mysql 关闭服务
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

1.5.3 登录MySQL服务器和退出

MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,我们在使用安装时设置了密码,这个账号和密码就是超级用户管理员,直接登录就行。

  • 方式1:在 DOS命令行输入:mysql -u用户名 -p密码

    **注意:**u和p后面没有空格。

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  • 方式2 : 在 DOS命令行输入:mysql -hip地址 -u用户名 -p密码

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  • 退出MySQL的方式:exitquit

    演示在上面两个登录也已经演示了。

1.6 服务器与数据库、表、记录的关系

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  • 一个数据库就是一个文件夹
  • 一张表表示一个文件
  • 记录表示的是数据

2. MySQL基本语法

2.1 SQL语句的分类和语法

1. SQL是什么

(Structured Query Language) 结构化查询语言,简称SQL。专门用来与数据库通信的语言。

2. 作用

  • 通过SQL语句我们可以方便的操作数据库、表、数据。

  • SQL是数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

3. 分类

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

其中较为重点的是:DMLDQL。就是增删改查。

4. 规范

  1. MySQL数据库的SQL语句不区分大小写,但建议关键字大写,表名、列名小写 。
  2. SQL语句可以单行或多行书写,以分号结尾,即每条命令最好用分号结尾
  3. 每条命令根据需要,可以进行缩进或换行来增强可读性。
  4. 注释:
    • SQL特有的单行注释:#注释文字
    • 单行注释:-- 注释文字
    • 多行注释:/* 注释文字 */

3. DCL语言的学习

主要对用户的权限的操作。主要了解即可。

我们默认使用的MySQL安装的时候带着的超级管理员用户:root用户,拥有全部的权限。但是,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库。所以,我们应该可以根据不同的项目建立不同的用户,分配不同的权限来管理和维护数据库。

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

1. 创建用户

  • 语法:

    CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
    

    解释:

    • 用户名:将创建的用户名
  • 主机名:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%

    • 密码:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

    演示下:

    -- user1用户只能在localhost这个IP登录mysql服务器
    CREATE USER 'user1'@'localhost' IDENTIFIED BY '123';
    
    -- user2用户可以在任何电脑上登录mysql服务器
    CREATE USER 'user2'@'%' IDENTIFIED BY '123';
    

2. 授权用户

用户创建之后,不像root超级管理员,它基本没什么权限!需要给用户授权。

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  • 语法:

    GRANT 权限1, 权限2... ON 数据库名.表名 TO '用户名'@'主机名';
    

    解释:

  • GRANT 授权关键字。

    • 授予用户的权限,如SELECTINSERTUPDATE 等。如果要授予所的权限则使用ALL
  • 数据库名.表名:该用户可以操作哪个数据库的哪些表。如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*

    • ‘用户名’@‘主机名’: 给哪个用户授权。

    演示下,给user1用户分配对test这个数据库操作的权限:

    GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON test.* TO 'user1'@'localhost';
    

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

3. 撤销授权

  • 语法

    REVOKE 权限1, 权限2... ON 数据库名.表名 FROM '用户名'@'主机名';
    

    解释下:

    • REVOKE 撤销关键字。

    演示下,撤销user1用户对test操作的权限

    REVOKE ALL ON test.* FROM 'user1'@'localhost';
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

4. 查看权限

  • 语法:

    SHOW GRANTS FOR '用户名'@'主机名';
    

    演示下,查看user1用户的权限:

    SHOW GRANTS FOR 'user1'@'localhost';
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

5. 删除用户

  • 语法:

    DROP USER '用户名'@'主机名';
    

    演示下,删除user2

    DROP USER 'user2'@'%';
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

6. 修改密码

需要在未登陆MySQL的情况下操作。而且需要知道原来的密码情况下。

  • 语法

    mysqladmin -uroot -p老密码 password 新密码  -- 新密码不需要加上引号
    

    演示下:

    mysqladmin -uroot -p123 password 123456
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

4. DDL语言的学习

库和表的管理。

1. 库的管理

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

1.1 创建数据库

既然我们MySQL都有了对吧,那不就得创建一个属于我们自己的数据库,那怎么创建呢?这里创建的关键字为:CREATE

CREATE DATABASE 数据库名;

这个可以直接创建数据库,但是如果不确定数据库存不存在,存在还有必要创建吗,而且再创建也会报错,那这个时候就需要一个关键词:IF NOT EXISTS判断是否不存在。

CREATE DATABASE IF NOT EXISTS 数据库名;

在创建的过程中,我们也可以指定一个字符集给这个数据库,默认字符集为UTF-8

CREATE DATABASE 数据名 DEFAULT CHARACTER SET 字符集;

直接演示下:

CREATE DATABASE stu;

CREATE DATABASE IF NOT EXISTS stu;

CREATE DATABASE stu2 CHARACTER SET gbk;

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

1.2 查看数据库

既然创建了数据库,那我们该如何去查看呢?这里查看的关键字为:SHOW

  • 查看所有的数据库

    SHOW DATABASES;
    
  • 也可以查看我们对某个数据库的定义信息

    SHOW CREATE DATABASE 数据名;
    

    演示一下:

    SHOW DATABASES;
    
    SHOW CREATE DATABASE stu2;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

1.3 修改和删除数据库
  • 修改数据库字符集

    修改的关键词:ALTER

    ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
    

    直接演示下,把刚才设置的stu2的数据库的gbk字符集改为uft8。

    ALTER DATABASE stu2 DEFAULT CHARACTER SET utf8;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  • 删除数据库

    删除的关键词:DROP

    DROP DATABASE 数据库名;
    

    一般我们也不知道这个数据库存不存在,我们就可以添加IF EXISTS判断是否存在。

    DROP DATABASE IF EXISTS 数据库名;
    

    演示下,把stu2的数据库删除掉。嘿嘿,删库跑路是不可能滴。

    DROP DATABASE stu2;
    
    SHOW DATABASES;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

1.4 使用数据库
  • 我们现在可以查看正在使用的数据库的是什么

    SELECT DATABASE();
    
  • 接下来就可以使用/切换数据库,就可以进行我们以后的创建表格,或者对表增删改查。

    USE 数据库名;
    

    演示下:

    SELECT DATABASE();
    
    USE stu;
    
    SELECT DATABASE();
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

1.5 小结
DDL语句操作数据库 关键字
创建 CREATE DATABASE 数据库名;
修改 ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
查看 SHOW DATABASES;
删除 DROP DTABASE 数据库名;

2. 表的管理

注意事项:每次要使用表前,都要先使用某个数据库,确定你在那个数据库中!

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

2.1 创建表

我们在创建数据库后,就相当于创建了一个文件夹,那我们就需要创建一个可以来保存的数据的文件对吧,那接下来我们先来创建表。创建的关键词:CREATE

CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2);

是不是觉得这样写觉得不好看,上面有提到SQL规范中,可以适当的缩进或换行来增加可读性:

CREATE TABLE 表名 (
    字段名1 字段类型1,
    字段名2 字段类型2
);

而且如果我们无法判断这个表是否存在,我们也可以用IF NOT EXISTS这个关键词来判断是否不存在。

CREATE TABLE IF NOT EXISTS 表名 (字段名1 字段类型1, 字段名2 字段类型2);

那这其中的字段名是我们起的名字,那这个字段类型有什么类型呢:

  • MySQL常用的数据类型有:

    1. int:整型。
    2. double:浮点型。
    3. varchar:字符串类型。
    4. date:日期类型。只有年月日,没有时分秒。"yyyy-MM-dd"。
  • 比较详细的数据类型如下:

    1. 整型:

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

    2. 字符串类型:

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

    3. 日期和时间类型

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

演示一下创建表格吧:

CREATE TABLE student (
      id INT,
      name VARCHAR(20),
      birthday DATE
);

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

后面我直接用SQLyog这个软件演示吧,毕竟这个DOS命令敲起来没有这个图像客户端方便。

如果没有安装SQLyog的,可以去上面我在安装MySQL里面有教大家,一般如果全跟着完成的话,就有了。如果你还想要DOS命令来训练,当然我不反对。嘿嘿!加油。

2.2 查看表

既然我们创建了表,那就看看我们创建了什么表对吧。查看的关键词:SHOWDESC

  1. 查看我们正在使用的数据库中的所有表:

    SHOW TABLES;
    
  2. 查看表结构即可以看到我们创建表时候的数据类型和字段:

    DESC 表名;
    
  3. 查看创建表的SQL语句:

    SHOW CREATE TABLE 表名;
    

    演示如下:

    SHOW TABLES;
    
    DESC student;
    
    SHOW CREATE TABLE student;
    

    比较方便的我还是用DOS命令演示更为简单。

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

2.3 复制表

复制表,不复制数据内容,相当于把表结构复制过去。

CREATE TABLE 表名 LIKE 其他表;

演示下:

CREATE TABLE s1 LIKE student;

SHOW TABLES;

DESC s1 ;

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

2.4 删除表

直接删除表

DROP TABLE 表名;

如果无法判断表名是否存在,就可以使用IF EXISTS这个关键词来判断是否存在。

DROP TABLE IF EXISTS 表名;

演示一下:

SHOW TABLES;

DROP TABLE s1;

SHOW TABLES;

DROP TABLE s1;

DROP TABLE IF EXISTS s1;

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

2.5 修改表

一般来说,我们创建了表,就不怎么需要修改了,但是需求总是会有。修改的关键词:ALTER。而修改的语句一般都是ALTER TABLE 表名 xxx

  1. 添加表一列,添加关键词ADD

    ALTER TABLE 表名 ADD 字段名 字段类型;
    

    演示,在student表中增加一个age,类型为int的一列。

    ALTER TABLE student ADD age INT;
    
    DESC student;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  2. 修改字段类型,添加关键词MODIFY

    ALTER TABLE 表名 MODIFY 字段名 新类型;
    

    演示一下,把student表中的name字段的改成varchar(10)。

    ALTER TABLE student MODIFY name VARCHAR(10);
    
    DESC student;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  3. 修改字段名,关键词:CHANGE

    ALTER TABLE 表名 CHANGE 老字段名 新字段名 类型;
    

    演示一下,把student表中的name字段的改成sName,类型为varchar(20)。

    ALTER TABLE student CHANGE NAME sName VARCHAR(20);
    
    DESC student;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  4. 删除字段,删除的关键词:DROP

    ALTER TABLE 表名 DROP 字段名;
    

    演示下,删除student表中的字段age。

    ALTER TABLE student DROP age;
    
    DESC student;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  5. 修改表名,即重命名表名,关键词:RENAME

    RENAME TABLE 表名 TO 新表名;
    

    演示一下,将student表改名成student2表。

    RENAME TABLE student TO student2;
    
    SHOW TABLES;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  6. 修改表的字符集,没有设置字符集,默认为utf8。

    ALTER TABLE 表名 DEFAULT CHARACTER SET 新字符集;
    

    演示一下,将student2表的编码修改成gbk>。

    ALTER TABLE student2 DEFAULT CHARACTER SET gbk;
    
2.6 小结
DDL语句操作表 关键字
创建 CREATE TABLE 表名;
修改 ALTER TABLE 表名 xxx;
查看 SHOW TABLES;
删除 DROP TABLE 表名;

5. DML语言的学习

主要对表中的数据进行增删改。

先创建一个beauty表,其中包含了id,name,sex,birthday,phone字段。

CREATE TABLE beauty(
	id INT, 
	NAME VARCHAR(20),
	sex CHAR(2),
	birthday DATE,
	phone VARCHAR(15)
);

这样就先把表创建了,接下来的操作都是对这里面操作。

下面的学习,都对表进行操作更新,现在还没有到学习查询语句,这里先教大家一句查看表中的所有数据:

SELECT * FROM beauty;

1. 插入数据

插入方法有两种,我们一个一个学习:

插入关键词:INSERT INTO

1.1 第一种插入方式
  1. 插入全部字段

    • 所有的字段名都写出来:

      INSERT INTO 表名 (字段名1, 字段名2, 字段名3, ...) VALUES (值1, 值2, 值3, ...);
      
    • 如果按照原来的顺序添加字段值的话,可以不写字段名,直接添加数据:

      INSERT INTO 表名 VALUES (值1, 值2, 值3, ...);
      
  2. 插入部分数据

    只需要指定要插入数据的字段,而且可以随意调换位置,但是字段值得对应列的类型,如果没有添加数据的字段则会使用NULL:

    INSERT INTO 表名 (字段名1, 字段名2...) VALUES (字段值1, 字段值2);
    
  3. 上面的SQL语句一一演示下:

    • 写所有的字段名。

      INSERT INTO beauty (id, NAME, sex, birthday, phone) 
      VALUES(1, "唐艺昕", '女', "1987-10-9", "1899888823");
      
      SELECT * FROM beauty;
      

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

    • 而且这里插入值的类型必须要与列的类型一致或兼容。

      INSERT INTO beauty (id, NAME, sex, birthday, phone) 
      VALUES(2, 唐艺昕, 女, "1987-10-9", 1899888823);
      

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

    • 不写字段名。并且可以为NULL值的列可以插入NULL。

      INSERT INTO beauty VALUES
      (2, "迪丽热巴", '女', "1992-6-3", "1899888824"),
      (3, "古力娜扎", '女', "1992-5-2", NULL);
      
      SELECT * FROM beauty;
      

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

    • 插入部分数据。如果没有插入数据的字段,则会显示为默认值,没有设置默认值,则为NULL。

      INSERT INTO beauty (id, NAME, sex) 
      VALUES(4, "杨幂", '女');
      
      SELECT * FROM beauty;
      

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  4. 特点

    • 字段类型和值类型一致或兼容,而且一对一的对应,个数相同,类型相同。
    • 可以不写一些字段名,添加的时候默认为NULL,除非有设置默认值。
1.2 第二种插入方式

相对第一种,语法更为简单点。

  1. 语法:

    INSERT INTO 表名 set 字段=值, 字段2=值2,...;
    
  2. 应用:

    重新添加一条数据:

    INSERT INTO beauty 
    SET id=5, NAME='诸葛大力', sex='女', birthday='1995-05-23';
    
    SELECT * FROM beauty;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

1.3 两种方式的比较
  1. 方式一支持多行插入,而方式二不支持。

    INSERT INTO beauty VALUES
    (6, '娄艺潇', '女', '1988-12-27', '16689540123'),
    (7, '陈美嘉', '女', '1985-11-21', '16689540123'),
    (8, '刘萌萌', '女', '1990-10-16', '16689540123');
    
    SELECT * FROM beauty;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  2. 方式一支持子查询(后面详细讲解),而方式二不支持。

    INSERT INTO beauty (id, NAME , sex ,birthday) 
    SELECT  9, '赵雯', '女', '1987-10-28';
    
    SELECT * FROM beauty;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

所以方式一的插入方法使用较多。

1.4 在DOS命令窗口操作数据乱码问题

我们现在都是在SQLyog软件进行操作数据,它本身字符集和MySQL服务器的字符集对应了,所以不会出现乱码。但是当我们使用DOS命令行进行SQL语句操作如有有中文会出现乱码,导致SQL执行失败。

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

具体出现的原因:

  • 因为我们MySQL的客户端设置编码是utf8,而系统的DOS命令行编码是gbk,编码不一致导致的乱码。

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

那如何解决呢:

  1. 在DOS命令行下输入:set names gbk;就是让现在服务器使用gbk编码。

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

    注意:以上方式为临时方案,退出DOS命令行就失效了,需要每次都配置。

  2. 修改MySQL安装目录下的my.ini文件,重启服务所有地方生效。此方案将所有编码都修改了,所以并不推荐。

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

2. 修改更新数据

修改表的关键词:UPDATEA

  1. 我们可以不带条件修改数据,这种相当于把所有这个字段名都修改了。

    UPDATE 表名 SET 字段名=字段值;
    
  2. 也可以带条件修改数据,这种相当于只是在WHERE后条件找到的行修改其字段名。

    UPDATE 表名 SET 字段名=字段值 WHERE 条件;
    

    总结语法可以这么写:

    UPDATE 表名 SET 字段名=字段值 【WHERE 条件】; 【】其中的代表可写可不写。 
    
  3. 具体操作演示一下:

    • 不带条件修改数据,将所有的性别改成男。当然女神们怎么可能是男的呢?后面我就修改回来啦。

      UPDATE beauty SET sex = '男';
      
      SELECT * FROM beauty;
      
      UPDATE beauty SET sex = '女';
      

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

    • 带条件修改数据,将id号为5的女神姓名改为成果。其实诸葛大力真名就是成果。

      UPDATE beauty SET NAME = '成果' WHERE id = 5;
      
      SELECT * FROM beauty;
      

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

    • 一次修改多个列,把id号为5的女神姓名改为诸葛大力,并且phone改为155673412312

      UPDATE beauty SET NAME = '诸葛大力', phone = '155673412312' WHERE id = 5;
      
      SELECT * FROM beauty;
      

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

3. 删除表中数据

删除也有两种方式:

  • 第一种的关键词:DELETE。可以带WHERE进行筛选。
  • 第二种的关键词:TRUNCATE。不可以带WHERE进行筛选。直接就是表中数据全部删除。
3.1 第一种删除方式
  1. 带WHERE筛选条件删除数据,删除掉满足条件的数据。

    DELETE FROM 表名 WHERE 条件;
    
  2. 不带WHERE筛选条件删除数据,直接相当于删除表中所有数据。嘿嘿删表删库跑路,真的刺激。

    DELETE FROM 表名;
    
  3. 具体演示下:

    • 带条件删除数据,删除id为9的记录

      DELETE FROM beauty WHERE id = 9;
      
      SELECT * FROM beauty;
      

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

    • 可以删除多条的记录吗:

      DELETE FROM beauty WHERE id = 8, id = 7;
      
      这样肯定不行的,会报错:
      You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' id = 7' at line 1
      
      所以可以这样做:
      DELETE FROM beauty WHERE id IN (7, 8);
      
      SELECT * FROM beauty;
      

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

    • 不带条件删除数据,删除表中的所有数据,这里的表我是有备份的,可以看我操作即可,等后面学到备份再来删除不香吗,或者你还想,然后再添加进去即可。

      DELETE FROM beauty;
      
      SELECT * FROM beauty;
      

      超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

3.2 第二种删除方式

相对第一种而言,它更加的暴力,只能全部删除掉数据了。是不是很暴力。

  1. 语法:

    TRUNCATE TABLE 表名;
    
  2. 应用:

    TRUNCATE TABLE beauty;
    
    SELECT * FROM beauty;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

3.3 两种方式大PK
  • TRUNCATE不能加WHERE条件,而DELETE可以加WHERE条件 。

  • TRUNCATE的效率高一点点 。

    很好理解,这个TRUNCATE是不可以加WHERE条件,所以相对于DELETE来说,执行效率就快上一点。

  • TRUNCATE删除带自增长的列的表后,如果再插入数据,数据从1开始 。

    而DELETE删除带自增长列的表后,如果再插入数据,数据从上一次的断点处开始 ,即上次的删除前的自增长列位置来到1000,不管是删除了全部,还是就一些,下次添加的话就是从1001开始了 。自增长列后续会讲解到。

  • TRUNCATE没有返回值,而DELETE有返回值。

    我们分别执行以下命令:

    DELETE FROM beauty WHERE id > 5;
    
    TRUNCATE TABLE beauty;
    

    超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

  • TRUNCATE删除不能回滚,DELETE删除可以回滚。这个回滚体现在事务中,事务后续也会讲解到。不要慌!

4. 小结

DML语句操作表 关键字
插入 第一种:INSERT INTO 表名 (字段1, 字段2…) values(字段值1, 字段值2…);
第二种:INSERT INTO 表名 SET 字段1 = 字段值1,字段2 = 字段值2;
修改 UPDATE 表名 SET 字段1= 字段值1, 字段2 = 字段值2… 【WHERE 筛选条件】;
删除 第一种:DELETE FROM 表名 【WHERE 筛选条件】;
第二种:TRUNCATE TABLE 表名;

6. 完结

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

相信各位看官看到这里都会MySQL有了一定了解吧,当然还没有涉及到的,由于篇幅限制,查询篇我放在了下一篇中啦。查询对我们还是挺重要,对于初级程序员来说,使用最多就是查询语句了。

而我们在实际应用,MySQL还是占非常大的一个主流,我们今天了解一个MySQL的基础系列,对以后的一些高级应用,调优都是有一定的帮助。并且面试中比较常问的面试题中都有MySQL的身影,所以MySQL的学习也是必不可少滴!

我们还是小小的总结下吧:

DCL: 主要对用户的权限的操作
创建用户: CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
授权用户: GRANT 权限1, 权限2... ON 数据库名.表名 TO '用户名'@'主机名';
撤销授权: REVOKE 权限1, 权限2... ON 数据库名.表名 FROM '用户名'@'主机名';
查看权限: SHOW GRANTS FOR '用户名'@'主机名';
删除用户: DROP USER '用户名'@'主机名';

DDL:库和表的管理。
创建数据库: CREATE DATABASE 数据库名;
创建表: CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2);
修改数据库: ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
修改表: ALTER TABLE 表名 一些操作;
删除数据库: DROP DATABASE 数据库名;
删除表: DROP TABLE 表名;

DML:主要对表中的数据进行增删改。
插入数据: INSERT INTO 表名 (字段名1, 字段名2, 字段名3, ...) VALUES (值1, 值2, 值3, ...);
修改数据: UPDATE 表名 SET 字段名=字段值;
删除数据: DELETE FROM 表名;

当然啦,更多语句命令的一些细节,希望大家可以仔细学习!

学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!

感谢各位看到这里!愿你韶华不负,青春无悔!

注: 如果文章有任何错误和建议,请各位大佬尽情留言!如果这篇文章对你也有所帮助,希望可爱亲切的您给个三连关注下,非常感谢啦!

超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备

上一篇:CF1475 G- Strange Beauty【思维+递推】


下一篇:lyt经典版MySQL基础——DML语言-数据的插入、修改、删除操作