吐血总结《Mysql从入门到入魔》,图文并茂

本文详细介绍了MySQL数据库的基本操作,包括显示数据库、创建与删除数据库、使用与切换数据库,以及表操作如创建、更新、查看、重命名和删除表。深入探讨了查询语句,如WHERE子句、ORDER BY排序、聚合函数和子查询的运用。此外,还涵盖了数据过滤、通配符过滤、计算字段和函数的使用。进一步讲解了事务处理、游标、约束和索引的重要概念,帮助读者全面掌握MySQL数据库的管理和操作技巧。

文章目录

1. 数据库操作

1.1显示数据库

mysql> SHOW DATABASES;

1.2 创建数据库

CREATE DATABASE 数据库名 CHARSET='编码格式'

mysql> CREATE DATABASE create_test CHARSET = 'utf8';

1.3 使用数据库

mysql> USE create_test;

1.4 查看当前数据库

使用 SELECT DATABASE() 查看当前使用的数据库。

mysql> SELECT DATABASE();
+-------------+
| DATABASE()  |
+-------------+
| create_test |
+-------------+

1.5 删除数据库

mysql> DROP DATABASE create_test;


2. 表操作

2.1 创建表

格式:

CREATE TABLE  [IF NOT EXISTS] `表名` (
	`字段名` 列类型 [属性] [索引] [注释]`字段名` 列类型 [属性] [索引] [注释].......
	`字段名` 列类型 [属性] [索引] [注释]
) [表类型] [字符集设置] [注释]

使用下面的语句创建示例中的 one_piece 表。

mysql> CREATE TABLE one_piece
    -> (
    ->     id CHAR(10) NOT NULL COMMENT '海贼团id',
    ->     pirates CHAR(10) NOT NULL COMMENT '海贼团名称',
    ->     name CHAR(10) NOT NULL COMMENT '海贼名',
    ->     age INT(11) NOT NULL COMMENT '海贼年龄',
    ->     post VARCHAR(10) NULL COMMENT '海贼团职位'
    -> );

注意:创建表时,指定的表名必须不存在,否则会出错。

2.2 更新表

2.2.1 添加列

在刚才创建的 one_piece 表中添加一列 bounty (赏金)。

mysql> ALTER TABLE one_piece
    -> ADD bounty INT(15);
2.2.2 删除列

删除 bounty 列。

mysql> ALTER TABLE one_piece
    -> DROP COLUMN bounty;

2.3 查看表结构

mysql> DESC one_piece;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | char(10)    | NO   |     | NULL    |       |
| pirates | char(10)    | NO   |     | NULL    |       |
| name    | char(10)    | NO   |     | NULL    |       |
| age     | int(11)     | YES  |     | NULL    |       |
| post    | varchar(10) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+

2.4 查看表详细信息

\G 后面不能加“ ; ”

mysql> SHOW TABLE STATUS LIKE 'one_piece' \G
*************************** 1. row ***************************
           Name: one_piece
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2021-09-03 17:53:58
    Update_time: NULL
     Check_time: NULL
      Collation: utf8mb4_0900_ai_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.39 sec)

2.5 重命名表

两种方法:

  • ALTER TABLE 表名 RENAME [TO | AS] 新表名;
  • RENAME TABLE 表名 TO 新表名;

用方法一将 Products 表更名为 new_Products ,再用方法二改回来。

-- 方法一
mysql> ALTER TABLE one_piece RENAME TO new_one_piece;
-- 方法二
mysql> RENAME TABLE new_one_piece TO one_piece;

2.6 删除表

DROP TABLE 表名

mysql> DROP TABLE one_piece;

注意:在该表与其他表有关联时,Mysql 会阻止该表的删除。



3. 查询

3.1 查询多列

同时输出 name, age 列。

mysql> SELECT name, age
    -> FROM one_piece;

3.2 检索唯一值

使用 DISTINCT 关键字,查询字段 age 的唯一值。

mysql> SELECT DISTINCT age
    -> FROM one_piece;

3.3 限制输出

Mysql 中使用 LIMIT 关键字限制输出的数据。LIMIT 有两种常见用法:

SELECT * FROM table  LIMIT [offset], rows    -- LIMIT 单独使用
SELECT * FROM table  LIMIT rows OFFSET [offset]    -- 配合 OFFSET 使用    

offset:行开始的行的索引。0表示从第1行 开始显示(包括第1行),以此类推。

rows:数据显示的条数。

示例

SELECT * FROM one_piece LIMIT 5;    -- 检索前5条数据
--相当于
SELECT * from one_piece LIMIT 0,5;    -- 从第0行开始检索5条数据
--相当于
SELECT * FROM one_piece LIMIT 5 OFFSET 0;    -- 从第0行开始检索5条数据,注意这里的LIMIT的5指代的是数量

注:如果表中数据不足,即LIMIT设定的数过大,则只会检索到最后一行。

3.4 注释

三种注释方式

-- 单行注释
# 单行注释
/* 多行注释 */


4. ORDER BY 排序

4.1 单列排序

使用 ORDER BY 子句。 ORDER BY 子句取一个或多个列的名字,据此对输出进行排序(默认升序)。

mysql> SELECT name, age
    -> FROM one_piece
    -> ORDER BY age;

**注意:**在指定一条 ORDER BY 子句时,应该保证它是 SELECT 语句中最后一条子句。

4.2 多列排序

mysql> SELECT A, B
    -> FROM test
    -> ORDER BY A, B;

在按多列排序时,仅在多个行具有相同的 A 值时 才按 B 进行排序。如果 A 列中所有的值都是 唯一的,则不会按 B 排序。
在这里插入图片描述

4.3 指定排序方向

ORDER 默认升序(从A到Z)排序。指定 DESC 关键字进行降序(从Z到 A)排序。

mysql> SELECT age
    -> FROM one_piece
    -> ORDER BY age DESC;

多列指定排序方向时,要使用逗号分隔。

mysql> SELECT name, age
    -> FROM one_piece
    -> ORDER BY name DESC, age;


5. WHERE 过滤数据

5.1 WHERE 子句操作符

操 作 符 说明 操作符 说明
= 等于 > 大于
<>、!= 不等于 >= 大于等于
< 小于 !> 不大于
<= 小于等于 BETWEEN 在两值之间(包含边界)
!< 不小于 IS NULL 是NULL值

5.2 范围值检查

使用 WHERE 关键字和 BETWEEN AND 进行范围值检查(前闭后闭)。

mysql> SELECT age
    -> FROM one_piece
    -> WHERE A BETWEEN 5 AND 10;

查询 字段 age 中 >=5 并且 <= 10 的数据。

5.3 空值检查

使用 WHERE 关键字和 IS NULL 进行范围值检查。如果没有 NULL 值就不返回数据。

mysql> SELECT name
    -> FROM one_piece
    -> WHERE name IS NULL;


6. 高级数据过滤

6.1 WHERE 组合过滤

使用 ANDOR 操作符给 WHERE 子句添加附加条件。 AND 的优先级比 OR 要高,优先级高低 ()ANDOR。在使用的过程中要注意各个优先级的影响。

mysql> 
评论 184
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream丶Killer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值