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://www.pswp.cn/pingmian/97895.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/97895.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/97895.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多语言编码Agent解决方案(6)-部署和使用指南

部署和使用指南 本指南提供完整的部署和使用说明&#xff0c;帮助您设置后端服务并在VSCode、Eclipse和IntelliJ中使用相应的插件。这个解决方案基于vLLM提供AI编码辅助&#xff0c;支持英语、中文和日文。 前提条件 操作系统&#xff1a;Linux、macOS或Windows&#xff08;推荐…

滤波器的三重境界:从信号处理到自动驾驶测试的基石

在自动驾驶的宏大叙事中&#xff0c;我们常常聚焦于人工智能、深度学习、高精地图等"明星技术"。然而&#xff0c;在这些耀眼的光环背后&#xff0c;有一个低调却至关重要的"幕后英雄"——滤波器。它不仅是信号处理的工具&#xff0c;更是连接物理世界与数…

Part4.第8章:神经网络

第8章 激活函数 如果没有激活函数&#xff0c;不论几层的神经网络都是一个线性回归。激活函数的作用是引入非线性。

nextjs+shadcn+tailwindcss实现博客中的overview

最近在用nextjsshadcntailwindcss练手&#xff0c;实现一个博客。做到了overView这里&#xff0c;可实现如下效果1.首先要安装tailwindcss&#xff0c;这个在创建项目的时候就安装了。2.然后安装shadcn,官网教程&#xff1a;3.代码如下&#xff1a;import {Card,CardContent } …

Kotlin 高阶语法解析

Kotlin 高级语法深度解析1. 协程&#xff08;Coroutines&#xff09;1.1 基础概念1.挂起和恢复2.协程构建器 (Coroutine Builders)3.协程作用域4.调度器1.2 核心用法1.3 实战示例2. 密封类&#xff08;Sealed Classes&#xff09;2.1 定义与特性2.2 模式匹配2.3 应用场景3. 内联…

9 基于机器学习进行遥感影像参数反演-以随机森林为例

目录 1 读取数据 2 数据预处理 3模型训练 4模型预测 5精度分析 由于回归任务的标签数据获取比较困难,我们这次用水体指数NDWI来模拟作为回归任务的标签,通过随机森林来拟合回归NDWI,其计算公式如下: NDWI = (band3 - band5) / (band3 + band5) 实际情况下需要回归的数…

C++多线程编程:跨线程操作全解析

C中的"线程"通常指单个执行流&#xff08;如std::thread对象&#xff09;&#xff0c;而"多线程"指程序中同时存在多个这样的执行流&#xff0c;并涉及它们的创建、管理和同步。实现跨线程操作的核心在于安全地处理共享数据和线程间通信。 以下是实现跨线程…

【脑电分析系列】第13篇:脑电源定位:从头皮到大脑深处,EEG源定位的原理、算法与可视化

前言脑电信号&#xff08;Electroencephalography, EEG&#xff09;是一种非侵入性的神经成像技术&#xff0c;能够实时捕捉大脑的电活动。然而&#xff0c;头皮上记录到的信号是脑源活动经过头皮、颅骨等介质“模糊”后的投影。想要从这些头皮EEG信号追溯到大脑深处的电活动&a…

MySQL知识笔记

DATE_ADD(date,INTERVAL expr type) date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。多查官方手册&#xff01;&#xff01;命令行启动和停止sql服务net start 数据库名&#xff1b; 这是启动服务命令&#xff1b; 例如&#xff1a;net start Mysql56…

2025算法八股——深度学习——MHA MQA GQA

MHA、MQA、GQA 都是深度学习中注意力机制的相关概念&#xff0c;其中 MHA 是标准的多头注意力机制&#xff0c;MQA 和 GQA 则是其优化变体&#xff0c;以下是它们的区别、优缺点介绍&#xff1a;区别MHA&#xff08;多头注意力&#xff09;&#xff1a;是 Transformer 架构的核…

Vue3》》eslint Prettier husky

安装必要的依赖 npm install -D eslint eslint/js vue/eslint-config-prettier prettier eslint-plugin-vue 初始化 ESLint 配置 npm init eslint/config// eslint.config.js // 针对 JavaScript 的 ESLint 配置和规则。保持 JavaScript 代码的一致性和质量 import js from &qu…

Custom SRP - Point and Spot Lights

https://catlikecoding.com/unity/tutorials/custom-srp/point-and-spot-lights/Lights with Limited Influence1 Point Lights1.1 Other Light Data (Point )同方向光一样,我们支持有限数量的 Other Light.尽管场景中可能有很多 Other Lights,可能有超过光源上限的光源时可见的…

hive数据仓库的搭建

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、内嵌模式二、本地模式三、远程模式前言 HIVE是基于HDFS的数据仓库&#xff0c;要首先搭建好HADOOP的集群才可以正常使用HIVE&#xff0c;HADOOP集运搭建详见…

域名SSL证书免费申请lcjmSSL

.-.lcjmSSL&#xff08;又名“来此加密”&#xff09;是一个提供免费SSL证书申请的一站式平台。它支持单域名、多域名以及泛域名证书申请&#xff0c;且单张证书最高可覆盖100个域名&#xff0c;让您轻松实现全站HTTPS加密。为什么您的网站必须安装SSL证书&#xff1f;数据加密…

“能量逆流泵”:一种基于电容阵与开关矩阵的超高效大功率降压架构

摘要本文提出并验证了一种面向大功率降压应用的革命性电源架构——"能量逆流泵"&#xff08;Energy Inversion Pump, EIP&#xff09;。该架构摒弃了传统Buck转换器中的电感元件&#xff0c;通过高速开关矩阵控制的电容阵列&#xff0c;将高压侧能量以"分时、分…

打造精简高效的 uni-app 网络请求工具

在 uni-app 开发中&#xff0c;网络请求是连接前端与后端的核心桥梁。一个设计良好的请求工具能够显著提升开发效率&#xff0c;减少重复代码。本文将分享一个精简版的 uni-app 网络请求工具实现&#xff0c;它保留了核心功能同时保持了足够的灵活性。设计思路一个优秀的网络请…

【面试场景题】交易流水表高qps写入会有锁等待或死锁问题吗

文章目录一、先明确交易流水表的核心特性二、InnoDB的锁机制在流水表写入场景的表现1. 行锁&#xff08;Record Lock&#xff09;&#xff1a;基本不涉及2. 间隙锁&#xff08;Gap Lock&#xff09;与Next-Key Lock&#xff1a;几乎不触发3. 表锁&#xff1a;仅在极端场景出现三…

项目部署——LAMP、LNMP和LTMJ

前情提要问&#xff1a;如何通过nginx的反向代理&#xff0c;代理多台虚拟主机&#xff08;一台apache服务器上的虚拟主机&#xff09;&#xff1f;1.在nginx的配置文件中&#xff0c;将基于域名的访问改为基于端口的访问&#xff08;nginx.conf&#xff09;upstream daili{ser…

晨曦中,它已劳作:一台有温度的机器人如何重塑我们的洁净日常

清晨六点&#xff0c;城市的轮廓在微光中逐渐清晰。某高端小区的路面上&#xff0c;一台灰色机身、线条流畅的机器正在安静地工作。它绕过停靠的车辆&#xff0c;精准地沿着路缘石前进&#xff0c;吸走落叶与尘土&#xff0c;遇到突然窜出的流浪猫时轻巧避让&#xff0c;仿佛有…

【最新高级版】酷柚易汛生产管理系统v1.2.8 +uniapp全开源+文档教程

酷柚易汛生产管理系统是基于FastAdminThinkPHPLayuiuniapp开发的生产管理系统&#xff0c;帮助企业数字化转型&#xff0c;打造智能工厂&#xff0c;专业为生产企业量身开发的一套完整的生产管理系统。主要包含以下模块&#xff1a;购货模块、生产模块、仓库模块、资料模块&…