当前位置: 首页 > news >正文

MySQL 核心操作全解析(用户 + SHOW+DML+DCL)

MySQL 核心操作全解析(用户 + SHOW+DML+DCL)

基于你提供的实操笔记,我们将 MySQL 核心操作拆解为用户管理、SHOW 查询命令、DML 数据操作、TRUNCATE 与 DELETE 对比、DCL 权限控制五大模块,梳理语法逻辑、补充避坑提示,帮你系统性掌握 “用户 - 数据 - 权限” 的完整操作链路

一、MySQL 用户管理(创建 / 删除 / 登录)

MySQL 用户的核心标识是 ‘用户名’@‘主机’USERNAME@HOST),其中HOST用于限制用户的登录来源,是避免未授权访问的关键

1.1 用户的核心组成:USERNAME@HOST

HOST字段决定 “用户能从哪些主机连接 MySQL”,常见取值及含义:

HOST 取值含义示例
具体 IP 地址仅允许从该 IP 登录127.0.0.1(本地回环)、192.168.100.10(远程 IP)
%(通配符)允许从任意主机登录(谨慎使用,存在安全风险)'syf'@'%'
_(通配符)匹配单个字符(如'192.168.100._'允许 192.168.100 网段所有 IP 登录)'syf'@'192.168.100._'
localhost仅允许本地通过 “socket 文件” 登录(区别于127.0.0.1的 TCP 连接)'syf'@'localhost'

1.2 用户操作实战(DDL)

(1)创建用户
  • 语法:CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';

  • 示例(创建允许从任何主机登录的用户syf,密码redhat):

    mysql> create user 'syf'@'192.168.100.%' identified by 'redhat';
    Query OK, 0 rows affected (0.00 sec)
    
    [root@syf2 ~]# mysql -usyf -h 192.168.100.10 -p
    Enter password: 
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3
    Server version: 5.7.37 MySQL Community Server (GPL)Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]> exit
    Bye
    
    2)用户登录(命令行)
    • 语法:mysql -u用户名 -h主机IP -p-h需与用户的HOST匹配,否则登录失败)
    • 示例(用syf登录):
    [root@syf ~]# mysql -usyf -h192.168.100.10 -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 15
    Server version: 5.7.37 MySQL Community Server (GPL)Copyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 
    
    (3)删除用户
    • 语法:DROP USER '用户名'@'主机';(必须指定完整的USERNAME@HOST,否则可能删错)
    • 示例:
    mysql> drop user 'syf'@'192.168.100.%';
    Query OK, 0 rows affected (0.00 sec)mysql> select User,Host from mysql.user;
    +---------------+-----------+
    | User          | Host      |
    +---------------+-----------+
    | mysql.session | localhost |
    | mysql.sys     | localhost |
    | root          | localhost |
    +---------------+-----------+
    3 rows in set (0.00 sec)
    

    二、SHOW 系列命令:MySQL 的 “查看工具集”

    SHOW 命令用于查询 MySQL 的系统信息、库表结构、配置参数等,是日常运维和开发的高频工具。按用途分类如下:

    2.1 查看系统基础信息

    命令用途关键说明
    SHOW CHARACTER SET;查看 MySQL 支持的所有字符集推荐用utf8mb4(支持中文、emoji,utf8实际是utf8mb3,不支持 emoji)
    SHOW ENGINES;查看当前 MySQL 支持的存储引擎默认引擎是InnoDB(支持事务、外键),MyISAM不支持事务,仅用于历史场景

    2.2 查看库表相关信息

    命令用途示例结果说明
    SHOW DATABASES;查看所有数据库包含系统库(information_schema元数据、mysql权限库、sys管理库)和自定义库(如sy
    SHOW TABLES;查看当前数据库的所有表需先执行USE 数据库名;(如USE sy;
    SHOW TABLES FROM 数据库名;不切换数据库,直接查看指定库的表示例:SHOW TABLES FROM sy;(查看sy库的表)
    DESC [数据库名.]表名;(或DESCRIBE查看表结构(字段名、类型、约束等)字段Null列显示YES表示允许 NULL,Key列显示PRI表示主键
    SHOW CREATE TABLE 表名;查看表的完整创建语句(含引擎、字符集)可用于复制表结构(如迁移表时直接复用 SQL)
    SHOW TABLE STATUS LIKE '表名'\G查看表的详细状态(行数、创建时间等)\G表示按行显示结果(避免字段过多换行混乱),Rows列显示表中记录数

    三、DML 操作:数据的 “增删改查”(核心)

    DML(Data Manipulation Language)是针对表中数据的操作,核心是INSERT(增)、SELECT(查)、UPDATE(改)、DELETE(删),必须在 “切换到数据库 + 存在表” 的前提下执行

    1. 首先创建表结构(CREATE TABLE

    根据表中字段(idnameage)和数据特征,创建表的 SQL 语句如下:

    -- 创建 shenyi 表
    mysql> use sy;
    Database changed
    mysql> create table shenyi(-> id int primary key auto_increment,-> name varchar(50) not null,-> age int);
    Query OK, 0 rows affected (0.01 sec)
    
    字段说明:
    • id:整数类型,设为主键(PRIMARY KEY)且自增(AUTO_INCREMENT),确保每条记录唯一,插入时无需手动指定。
    • name:字符串类型(VARCHAR(50)),NOT NULL 表示姓名不能为空。
    • age:整数类型(INT),未加 NOT NULL,允许存储 NULL(如 lisi 的年龄)。

    2. 插入示例数据(INSERT INTO

    创建表后,插入查询结果中的 7 条记录:

    mysql> insert into shenyi (name,age) values-> ('tom',20),-> ('jerry',23),-> ('shenyi',25),-> ('sean',28),-> ('zhangshan',26),-> ('zhangshan',20),-> ('lisi',null);
    Query OK, 7 rows affected (0.01 sec)
    Records: 7  Duplicates: 0  Warnings: 0
    

    3. 验证结果

    mysql> select * from shenyi;
    +----+-----------+------+
    | id | name      | age  |
    +----+-----------+------+
    |  1 | tom       |   20 |
    |  2 | jerry     |   23 |
    |  3 | shenyi    |   25 |
    |  4 | sean      |   28 |
    |  5 | zhangshan |   26 |
    |  6 | zhangshan |   20 |
    |  7 | lisi      | NULL |
    +----+-----------+------+
    7 rows in set (0.00 sec)
    

    只查询name字段的所有值(不显示idage):

    包含重复值zhangshan(出现 2 次),说明表中允许同名记录,这也解释了后续按name筛选时需要结合age的原因

    mysql> select name from shenyi;
    +-----------+
    | name      |
    +-----------+
    | tom       |
    | jerry     |
    | shenyi    |
    | sean      |
    | zhangshan |
    | zhangshan |
    | lisi      |
    +-----------+
    7 rows in set (0.00 sec)
    
    排序查询(ORDER BY

    升序(ORDER BY age)

    age从小到大排列,NULL值(最小)排在最前,之后按20→23→25→26→28顺序排列,与表中数据完全匹配

    mysql> select * from shenyi order by age;
    +----+-----------+------+
    | id | name      | age  |
    +----+-----------+------+
    |  7 | lisi      | NULL |
    |  1 | tom       |   20 |
    |  6 | zhangshan |   20 |
    |  2 | jerry     |   23 |
    |  3 | shenyi    |   25 |
    |  5 | zhangshan |   26 |
    |  4 | sean      |   28 |
    +----+-----------+------+
    7 rows in set (0.00 sec)
    

    降序(ORDER BY age DESC)

    age从大到小排列,最大的28排在最前,依次递减,NULL值(最大)排在最后,逻辑与升序完全相反

    mysql> select * from shenyi order by age desc;
    +----+-----------+------+
    | id | name      | age  |
    +----+-----------+------+
    |  4 | sean      |   28 |
    |  5 | zhangshan |   26 |
    |  3 | shenyi    |   25 |
    |  2 | jerry     |   23 |
    |  1 | tom       |   20 |
    |  6 | zhangshan |   20 |
    |  7 | lisi      | NULL |
    +----+-----------+------+
    7 rows in set (0.01 sec)
    
    限制结果行数(LIMIT
    • LIMIT 2:取排序后前 2 条记录(升序中是NULL和第一个20

      mysql> select * from shenyi order by age limit 2;
      +----+------+------+
      | id | name | age  |
      +----+------+------+
      |  7 | lisi | NULL |
      |  1 | tom  |   20 |
      +----+------+------+
      2 rows in set (0.00 sec)
      
    • LIMIT 1,2LIMIT 偏移量, 行数,偏移量从 0 开始。这里偏移 1(跳过第 1 条NULL),取后面 2 条,即两个age=20的记录(id=1 和 id=6)

      mysql> select * from shenyi order by age limit 1,2;
      +----+-----------+------+
      | id | name      | age  |
      +----+-----------+------+
      |  1 | tom       |   20 |
      |  6 | zhangshan |   20 |
      +----+-----------+------+
      2 rows in set (0.00 sec)
      
    4. 条件筛选(WHERE
    • age >= 25:筛选age不小于 25 的记录,对应25、26、28三个值,共 3 条

      mysql> select * from shenyi where age >= 25;
      +----+-----------+------+
      | id | name      | age  |
      +----+-----------+------+
      |  3 | shenyi    |   25 |
      |  4 | sean      |   28 |
      |  5 | zhangshan |   26 |
      +----+-----------+------+
      3 rows in set (0.00 sec)
      

      age >= 25 AND name = ‘zhangshan’:多条件筛选,需同时满足 “年龄≥25” 和 “姓名为 zhangshan”。表中zhangshan`有两条记录(id=5:26 岁;id=6:20 岁),仅 id=5 符合条件

      mysql> select * from shenyi where age >= 25 and name='zhangshan';
      +----+-----------+------+
      | id | name      | age  |
      +----+-----------+------+
      |  5 | zhangshan |   26 |
      +----+-----------+------+
      1 row in set (0.00 sec)
      

      age BETWEEN 23 and 28:等价于age >=23 AND age <=28,包含23、25、26、28四个值,共 4 条记录

      mysql> select * from shenyi where age between 23 and 28;
      +----+-----------+------+
      | id | name      | age  |
      +----+-----------+------+
      |  2 | jerry     |   23 |
      |  3 | shenyi    |   25 |
      |  4 | sean      |   28 |
      |  5 | zhangshan |   26 |
      +----+-----------+------+
      4 rows in set (0.00 sec)
      

      age IS NOT NULL/age IS NULL:专门针对NULL值的筛选,分别返回 6 条非空记录和 1 条空值记录(id=7)

      mysql> select * from shenyi where age is not null;
      +----+-----------+------+
      | id | name      | age  |
      +----+-----------+------+
      |  1 | tom       |   20 |
      |  2 | jerry     |   23 |
      |  3 | shenyi    |   25 |
      |  4 | sean      |   28 |
      |  5 | zhangshan |   26 |
      |  6 | zhangshan |   20 |
      +----+-----------+------+
      6 rows in set (0.00 sec)mysql> select * from shenyi where age is null;
      +----+------+------+
      | id | name | age  |
      +----+------+------+
      |  7 | lisi | NULL |
      +----+------+------+
      1 row in set (0.00 sec)
      

    3.1 INSERT:插入数据

    • 语法:

      INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...);
      

      支持单条插入(1 个VALUES)和多条插入(多个VALUES用逗号分隔)

      示例(插入数据到sy.shenyi表):

      -- 单条插入
      INSERT INTO shenyi (id, name, age) VALUES (1, 'tom', 20);
      -- 多条插入(更高效,减少IO)
      INSERT INTO shenyi (id, name, age) 
      VALUES (2, 'jerry', 23), (3, 'shenyi', 25), (7, 'lisi', NULL);
      

      ⚠️ 注意:字段顺序需与VALUES顺序一致;允许 NULL 的字段(如age)可直接写NULL(无需加引号);非 NULL 字段(如idname)必须填写值,否则报错

    3.2 SELECT:查询数据(最复杂也最常用)

    SELECT`是 DML 的核心,支持按条件过滤、排序、限制结果数量,语法:
    `SELECT 字段列表 FROM 表名 [WHERE 条件] [ORDER BY 字段 排序方式] [LIMIT 偏移量, 数量];
    
    (1)字段列表表示法
    表示符含义示例
    *查询所有字段(开发中尽量避免,效率低)SELECT * FROM shenyi;
    字段1, 字段2仅查询指定字段(推荐,减少数据传输)SELECT name, age FROM shenyi;
    字段 AS 别名给字段起别名(方便阅读)SELECT name AS 用户名, age AS 年龄 FROM shenyi;
    (2)WHERE 条件:过滤数据
    条件类型操作符 / 关键字示例(查询shenyi表)
    比较运算>, <, >=, <=, =, !=SELECT * FROM shenyi WHERE age >= 25;(年龄≥25)
    范围匹配BETWEEN 最小值 AND 最大值(闭区间)SELECT * FROM shenyi WHERE age BETWEEN 23 AND 28;(23≤age≤28)
    NULL 判断IS NULL(空)、IS NOT NULL(非空)SELECT * FROM shenyi WHERE age IS NULL;(年龄未填写)
    逻辑组合AND(且)、OR(或)、NOT(非)SELECT * FROM shenyi WHERE age >=25 AND name='zhangshan';(年龄≥25 且姓名是 zhangshan)
    模糊匹配LIKE(配合%/_SELECT * FROM shenyi WHERE name LIKE 'zhang%';(姓名以 zhang 开头)
    (3)ORDER BY:排序
    • 默认升序(ASC),显式指定DESC为降序;
    • NULL 值排序规则:升序时 NULL 排在最前,降序时 NULL 排在最后(如用户示例中ORDER BY age DESClisi的 NULL 排在最后);
    • 示例:SELECT * FROM shenyi ORDER BY age DESC;(按年龄降序)。
    (4)LIMIT:限制结果数量
    • 语法 1:LIMIT N(取前 N 条记录)—— 示例:LIMIT 2(取前 2 条);
    • 语法 2:LIMIT 偏移量, N(跳过前 “偏移量” 条,取 N 条)—— 示例:LIMIT 1, 2(跳过第 1 条,取第 2-3 条);
    • 用途:分页查询(如第 1 页LIMIT 0,10,第 2 页LIMIT 10,10)。

    3.3 UPDATE:修改数据

    • 语法:UPDATE 表名 SET 字段1=新值1, 字段2=新值2, ... [WHERE 条件];
    • 示例(将lisi的年龄改为 30):
    mysql> update shenyi set age = 30 where name = 'lisi';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from shenyi;
    +----+-----------+------+
    | id | name      | age  |
    +----+-----------+------+
    |  1 | tom       |   20 |
    |  2 | jerry     |   23 |
    |  3 | shenyi    |   25 |
    |  4 | sean      |   28 |
    |  5 | zhangshan |   26 |
    |  6 | zhangshan |   20 |
    |  7 | lisi      |   30 |
    +----+-----------+------+
    7 rows in set (0.00 sec)
    

    ⚠️ 致命风险:如果不加 WHERE 条件,会修改表中所有记录(如UPDATE shenyi SET age=30;会把所有用户的年龄改为 30),生产环境必须先写SELECT验证条件,再执行UPDATE

    3.4 DELETE:删除数据

    • 语法:DELETE FROM 表名 [WHERE 条件];

    • 示例:

      -- 删除单条记录(id=7的记录)
      mysql> delete from shenyi where id = 7;
      Query OK, 1 row affected (0.00 sec)
      mysql> select * from shenyi;
      +----+-----------+------+
      | id | name      | age  |
      +----+-----------+------+
      |  1 | tom       |   20 |
      |  2 | jerry     |   23 |
      |  3 | shenyi    |   25 |
      |  4 | sean      |   28 |
      |  5 | zhangshan |   26 |
      |  6 | zhangshan |   20 |
      +----+-----------+------+
      6 rows in set (0.00 sec)
      
    -- 删除所有记录(不加WHERE,谨慎!)
    mysql> delete from shenyi;
    Query OK, 6 rows affected (0.00 sec)mysql> select * from shenyi;
    Empty set (0.00 sec)
    

记录删除,表结构依然存在:

  mysql> desc shenyi;+-------+-------------+------+-----+---------+----------------+| Field | Type        | Null | Key | Default | Extra          |+-------+-------------+------+-----+---------+----------------+| id    | int(11)     | NO   | PRI | NULL    | auto_increment || name  | varchar(50) | NO   |     | NULL    |                || age   | int(11)     | YES  |     | NULL    |                |+-------+-------------+------+-----+---------+----------------+3 rows in set (0.00 sec)

⚠️ 注意:DELETE FROM 表名;会删除表中所有数据,但保留表结构(字段、约束等),且删除的记录可通过事务回滚恢复(若开启事务)

四、TRUNCATE vs DELETE:清空表数据的区别

用户示例中提到了TRUNCATE,它与DELETE都能清空数据,但核心差异极大,生产环境需严格区分:

对比维度DELETETRUNCATE
操作对象逐行删除记录直接释放表的数据页(不逐行删除)
事务支持支持(可通过ROLLBACK回滚恢复数据)不支持(删除后无法恢复,属于 DDL 操作)
执行速度慢(逐行记录日志)快(仅释放数据页,日志量少)
自增 ID 重置不重置(删除后新增记录,自增 ID 继续递增)重置(删除后新增记录,自增 ID 从 1 开始)
外键约束限制可删除有外键引用的表数据(需满足外键规则)不能删除有外键引用的表数据(直接报错)
语法形式DML 操作(DELETE FROM 表名;DDL 操作(TRUNCATE TABLE 表名;,TABLE 可省略)

⚠️ 选择建议:

  • 需恢复数据 / 保留自增 ID:用DELETE FROM 表名 WHERE 条件;
  • 无需恢复数据 / 追求速度(如测试环境清空表):用TRUNCATE 表名;
  • 有外键关联的表:只能用DELETE,不能用TRUNCATE

示例:

mysql> select * from shenyi;
+----+-----------+------+
| id | name      | age  |
+----+-----------+------+
|  8 | tom       |   20 |
|  9 | jerry     |   23 |
| 10 | shenyi    |   25 |
| 11 | sean      |   28 |
| 12 | zhangshan |   26 |
| 13 | zhangshan |   20 |
| 14 | lisi      | NULL |
+----+-----------+------+
7 rows in set (0.00 sec)mysql> truncate shenyi;
Query OK, 0 rows affected (0.00 sec)mysql> select * from shenyi;
Empty set (0.00 sec)mysql> desc shenyi;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(50) | NO   |     | NULL    |                |
| age   | int(11)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

五、DCL 操作:权限的 “授予与回收”

DCL(Data Control Language)用于管理用户的操作权限,确保不同用户只能访问自己权限范围内的库表,核心是GRANT(授权)、REVOKE(回收权限)、FLUSH PRIVILEGES(刷新权限)

5.1 GRANT:授予权限

  • 语法:`GRANT 权限类型 ON 操作对象 TO ‘用户名’@‘主机’ [IDENTIFIED BY ‘密码’] [WITH GRANT OPTION]
    各部分含义:

    1. 权限类型ALL(所有权限)、SELECT(查询)、INSERT(插入)、UPDATE(修改)、DELETE(删除)等
    2. 操作对象:
      • *.*:所有数据库的所有表(超级权限,仅给管理员)
      • 数据库名.*:指定数据库的所有表(如sy.*表示sy库的所有表)
      • 数据库名.表名:指定数据库的指定表(如sy.chenyu
    3. IDENTIFIED BY '密码':若用户不存在,可直接创建用户并授权(MySQL 5.7 + 支持,8.0 + 需先创建用户再授权)
    4. WITH GRANT OPTION:允许被授权用户将自己的权限转授给其他用户(不建议给普通用户,存在权限扩散风险)
  • 示例:

    -- 授权shenyi从localhost登录,拥有所有库表的所有权限
    GRANT ALL ON *.* TO 'shenyi'@'localhost' IDENTIFIED BY 'redhat';
    -- 授权shenyi从192.168.100.10登录,仅拥有cy库所有表的所有权限
    GRANT ALL ON sy.* TO 'shenyi'@'192.168.100.10' IDENTIFIED BY 'redhat';
    -- 授权shenyi从任意主机登录(%),拥有所有库表的所有权限(生产环境禁用%)
    GRANT ALL ON *.* TO 'shenyi'@'%' IDENTIFIED BY 'redhat';
    

5.2 查看权限

  • 查看当前登录用户的权限:SHOW GRANTS;
  • 查看指定用户的权限:SHOW GRANTS FOR '用户名'@'主机';
    示例:SHOW GRANTS FOR 'shenyi'@'localhost';(查看chenyu在localhost的权限)

5.3 REVOKE:回收权限

  • 语法:REVOKE 权限类型 ON 操作对象 FROM '用户名'@'主机';

  • 示例(回收shenyi在 192.168.100.10 的所有权限):

    REVOKE ALL ON *.* FROM 'shenyi'@'192.168.100.10';
    

5.4 FLUSH PRIVILEGES:刷新权限

  • 原理:MySQL 启动时会将mysql库的授权表(如userdb)加载到内存,GRANT/REVOKE通常会自动刷新内存,但特殊情况(如手动修改授权表数据)需手动刷新
  • 语法:FLUSH PRIVILEGES;
  • 场景:回收权限后若立即生效,可执行此命令(用户示例中回收权限后执行了该命令)

1.搭建mysql服务略
2.创建一个以你名字为名的数据库,并创建一张表student,该表包含三个字段(id,name,age),表结构如下:

mysql> create database shenyi;
Query OK, 1 row affected (0.00 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| shenyi             |
| sy                 |
| sys                |
+--------------------+
6 rows in set (0.01 sec)mysql> use shenyi;
Database changed
mysql> create table student(-> id int(11) primary key auto_increment,-> name varchar(100) not NULL,-> age tinyint(4));
Query OK, 0 rows affected (0.02 sec)

3.查看下该新建的表有无内容(用select语句)

mysql> select * from student;
Empty set (0.00 sec)mysql> desc student;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | NO   |     | NULL    |                |
| age   | tinyint(4)   | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.04 sec)

4.往新建的student表中插入数据(用insert语句),结果应如下所示:

mysql> insert into student(name,age) values-> ('tom',20),-> ('jerry',23),-> ('shenyi',25),-> ('sean',28),-> ('zhangshan',26),-> ('zhangshan',20),-> ('lisi',NULL),-> ('chenshuo',10),-> ('wangwu',3),-> ('qiuyi',15),-> ('qiuxiaotian',20);
Query OK, 11 rows affected (0.00 sec)
Records: 11  Duplicates: 0  Warnings: 0mysql> select * from student;
+----+-------------+------+
| id | name        | age  |
+----+-------------+------+
|  1 | tom         |   20 |
|  2 | jerry       |   23 |
|  3 | shenyi      |   25 |
|  4 | sean        |   28 |
|  5 | zhangshan   |   26 |
|  6 | zhangshan   |   20 |
|  7 | lisi        | NULL |
|  8 | chenshuo    |   10 |
|  9 | wangwu      |    3 |
| 10 | qiuyi       |   15 |
| 11 | qiuxiaotian |   20 |
+----+-------------+------+
11 rows in set (0.00 sec)

5.修改lisi的年龄为50

mysql> update student set age=50 where name='lisi';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from student;
+----+-------------+------+
| id | name        | age  |
+----+-------------+------+
|  1 | tom         |   20 |
|  2 | jerry       |   23 |
|  3 | shenyi      |   25 |
|  4 | sean        |   28 |
|  5 | zhangshan   |   26 |
|  6 | zhangshan   |   20 |
|  7 | lisi        |   50 |
|  8 | chenshuo    |   10 |
|  9 | wangwu      |    3 |
| 10 | qiuyi       |   15 |
| 11 | qiuxiaotian |   20 |
+----+-------------+------+
11 rows in set (0.00 sec)

6.以age字段降序排序

mysql> select * from student order by age desc;
+----+-------------+------+
| id | name        | age  |
+----+-------------+------+
|  7 | lisi        |   50 |
|  4 | sean        |   28 |
|  5 | zhangshan   |   26 |
|  3 | shenyi      |   25 |
|  2 | jerry       |   23 |
|  1 | tom         |   20 |
|  6 | zhangshan   |   20 |
| 11 | qiuxiaotian |   20 |
| 10 | qiuyi       |   15 |
|  8 | chenshuo    |   10 |
|  9 | wangwu      |    3 |
+----+-------------+------+
11 rows in set (0.00 sec)

7.查询student表中年龄最小的3位同学跳过前2位

mysql> select * from student order by age limit 2,3;
+----+-------------+------+
| id | name        | age  |
+----+-------------+------+
| 10 | qiuyi       |   15 |
|  1 | tom         |   20 |
| 11 | qiuxiaotian |   20 |
+----+-------------+------+
3 rows in set (0.00 sec)

8.查询student表中年龄最大的4位同学

mysql> select * from student order by age desc limit 4;
+----+-----------+------+
| id | name      | age  |
+----+-----------+------+
|  7 | lisi      |   50 |
|  4 | sean      |   28 |
|  5 | zhangshan |   26 |
|  3 | shenyi    |   25 |
+----+-----------+------+
4 rows in set (0.00 sec)

9.查询student表中名字叫zhangshan的记录

mysql> select * from student where name='zhangshan';
+----+-----------+------+
| id | name      | age  |
+----+-----------+------+
|  5 | zhangshan |   26 |
|  6 | zhangshan |   20 |
+----+-----------+------+
2 rows in set (0.01 sec)

10.查询student表中名字叫zhangshan且年龄大于20岁的记录

mysql> select * from student where name='zhangshan' and age > 20;
+----+-----------+------+
| id | name      | age  |
+----+-----------+------+
|  5 | zhangshan |   26 |
+----+-----------+------+
1 row in set (0.00 sec)

11.查询student表中年龄在23到30之间的记录

mysql> select * from student where age between 23 and 30;
+----+-----------+------+
| id | name      | age  |
+----+-----------+------+
|  2 | jerry     |   23 |
|  3 | shenyi    |   25 |
|  4 | sean      |   28 |
|  5 | zhangshan |   26 |
+----+-----------+------+
4 rows in set (0.00 sec)

12.修改wangwu的年龄为100

mysql> update student set age=100 where name='wangwu';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from student;
+----+-------------+------+
| id | name        | age  |
+----+-------------+------+
|  1 | tom         |   20 |
|  2 | jerry       |   23 |
|  3 | shenyi      |   25 |
|  4 | sean        |   28 |
|  5 | zhangshan   |   26 |
|  6 | zhangshan   |   20 |
|  7 | lisi        |   50 |
|  8 | chenshuo    |   10 |
|  9 | wangwu      |  100 |
| 10 | qiuyi       |   15 |
| 11 | qiuxiaotian |   20 |
+----+-------------+------+
11 rows in set (0.00 sec)

13.删除student中名字叫zhangshan且年龄小于等于20的记录

mysql> delete from student where name='zhangshan' and age<=20;
Query OK, 1 row affected (0.01 sec)mysql> select * from student;
+----+-------------+------+
| id | name        | age  |
+----+-------------+------+
|  1 | tom         |   20 |
|  2 | jerry       |   23 |
|  3 | shenyi      |   25 |
|  4 | sean        |   28 |
|  5 | zhangshan   |   26 |
|  7 | lisi        |   50 |
|  8 | chenshuo    |   10 |
|  9 | wangwu      |  100 |
| 10 | qiuyi       |   15 |
| 11 | qiuxiaotian |   20 |
+----+-------------+------+
10 rows in set (0.00 sec)

14.创建表course表,要求如下

mysql> create table course(-> id int(3) primary key,-> course_name varchar(100));
Query OK, 0 rows affected (0.00 sec)mysql> desc course;
+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id          | int(3)       | NO   | PRI | NULL    |       |
| course_name | varchar(100) | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

15、为course表插入数据

mysql> insert into course values-> (1,'Java'),-> (2,'MySQL'),-> (3,'Python'),-> (4,'Go'),-> (5,'C++');
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0mysql> select *from course;
+----+-------------+
| id | course_name |
+----+-------------+
|  1 | Java        |
|  2 | MySQL       |
|  3 | Python      |
|  4 | Go          |
|  5 | C++         |
+----+-------------+
5 rows in set (0.00 sec)

16、创建student123表,要求如下:

mysql> create table student123(-> id int(3) primary key,-> name varchar(100),-> age int(3),-> sex varchar(10),-> height int(3),-> course_id int(3),-> constraint st123_courseid_course_id foreign key (course_id) references course(id));
Query OK, 0 rows affected (0.01 sec)

17、为student123表插入数据如下:

mysql> insert into student123 values-> (1,'Dany',25,'man',160,1),-> (2,'Green',23,'man',158,2),-> (3,'Henry',23,'woman',185,1),-> (4,'Jane',22,'man',162,3),-> (5,'Jim',24,'woman',175,2),-> (6,'John',21,'woman',172,4),-> (7,'Lily',22,'man',165,4),-> (8,'Susan',23,'man',170,5),-> (9,'Thomas',22,'woman',178,5),-> (10,'Tom',23,'woman',165,5);
Query OK, 10 rows affected (0.01 sec)
Records: 10  Duplicates: 0  Warnings: 0mysql> select * from student123;
+----+--------+------+-------+--------+-----------+
| id | name   | age  | sex   | height | course_id |
+----+--------+------+-------+--------+-----------+
|  1 | Dany   |   25 | man   |    160 |         1 |
|  2 | Green  |   23 | man   |    158 |         2 |
|  3 | Henry  |   23 | woman |    185 |         1 |
|  4 | Jane   |   22 | man   |    162 |         3 |
|  5 | Jim    |   24 | woman |    175 |         2 |
|  6 | John   |   21 | woman |    172 |         4 |
|  7 | Lily   |   22 | man   |    165 |         4 |
|  8 | Susan  |   23 | man   |    170 |         5 |
|  9 | Thomas |   22 | woman |    178 |         5 |
| 10 | Tom    |   23 | woman |    165 |         5 |
+----+--------+------+-------+--------+-----------+
10 rows in set (0.00 sec)

文章转载自:

http://79GOv4pT.chmcq.cn
http://6AAeYNSR.chmcq.cn
http://M6iuT4rt.chmcq.cn
http://OamjFodx.chmcq.cn
http://ok93VeXt.chmcq.cn
http://iwaZelWt.chmcq.cn
http://qcLe2qcK.chmcq.cn
http://LcZeFtwu.chmcq.cn
http://VG8fGCz6.chmcq.cn
http://3dXvGzq7.chmcq.cn
http://wsIqYxBf.chmcq.cn
http://1AttS0O0.chmcq.cn
http://lIp1iAU6.chmcq.cn
http://5iwU6QT8.chmcq.cn
http://0konfNQw.chmcq.cn
http://HrWCHFus.chmcq.cn
http://XwOrCE11.chmcq.cn
http://ig51skQD.chmcq.cn
http://01Aj0A5i.chmcq.cn
http://tCQ1BRiO.chmcq.cn
http://eBENpcRj.chmcq.cn
http://UOhssAQt.chmcq.cn
http://h6O1FGud.chmcq.cn
http://oVa2pJBs.chmcq.cn
http://OWXAx73Y.chmcq.cn
http://6QFegDjX.chmcq.cn
http://c4Z80WD4.chmcq.cn
http://RMtrsLpj.chmcq.cn
http://o1CyaCdf.chmcq.cn
http://qt3QEUtP.chmcq.cn
http://www.dtcms.com/a/388373.html

相关文章:

  • 【前端】【React】【Zustand】[特殊字符] Zustand 系统学习大纲(实战版)
  • 在测试接口时,遇到关于时间参数的传参时,遇到类型编译器无法转换的解决方案
  • 晶圆厂为什么都采用高架地板?
  • unsloth 笔记:微调mistral-7b(纯文本数据集)
  • 【vim,Svelte】怎样使用 vim 编辑 Svelte 那些奇奇怪怪名字的文件?
  • 【AOI基板外观缺陷检测软件】基于Halcon+C#开发的AOI基板外观缺陷检测软件,全套源码,开箱即用
  • htb academy笔记-module-Password Attacks(一)
  • Java程序设计:顺序结构与分支结构
  • 铺满式水印添加教程!水印如何铺满整个详情页页面?
  • 基于SpringBoot+Vue.js开发的医疗器械管理系统
  • 职业定位:用 “能力 - 兴趣 - 需求” 模型找到赛道
  • Caffeine Expiry
  • 【C++项目】C++11重构muduo库
  • 如何选择靠谱的防伪溯源系统公司?
  • 线程池 相关知识
  • 搭建CI/CD 流水线简单说明
  • 大Key与热Key详解:概念、危害与解决方案
  • Java中的自动拆装箱原理
  • Android 入门笔记(2)
  • 程序员内功之成长性思维
  • vLLM 和 SGLang 是两个近年来备受关注的开源项目
  • CMake进阶: 路径处理指令join_paths和cmake_path
  • 算法简略速记手册
  • C语言(长期更新)第17讲内存函数
  • 【CSP-S】 基础知识与编程环境
  • Python HTTPS 教程 如何发送 HTTPS 请求、解决证书错误、实现抓包与网络调试全攻略
  • 【Cesium 开发实战教程】第五篇:空间分析实战:缓冲区、可视域与工程测量
  • 告别塑料感!10分钟学会基础材质调节
  • CSS Modules 和 CSS-in-JS比较
  • threejs(三)模型对象、材质