一、数据库操作
1.显示数据库
mysql> SHOW DATABASES; 复制代码
2.创建数据库
CREATE DATABASE 数据库名 CHARSET='编码格式'
mysql> CREATE DATABASE create_test CHARSET = 'utf8'; 复制代码
3.使用数据库
mysql> USE create_test; 复制代码
4.查看当前数据库
使用 SELECT DATABASE()
查看当前使用的数据库。
mysql> SELECT DATABASE(); +-------------+ | DATABASE() | +-------------+ | create_test | +-------------+ 复制代码
5.删除数据库
mysql> DROP DATABASE create_test; 复制代码
二、表操作
创建表
代码格式:
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 '海贼团职位' -> ); 复制代码
注意:创建表时,指定的表名必须不存在,否则会出错。
更新表
1.添加列
在刚才创建的 one_piece
表中添加一列 bounty
(赏金)。
mysql> ALTER TABLE one_piece -> ADD bounty INT(15); 复制代码
2.删除列删除 bounty
列。
mysql> ALTER TABLE one_piece -> DROP COLUMN bounty; 复制代码
查看表结构
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 | | +---------+-------------+------+-----+---------+-------+ 复制代码
查看表详细信息
\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-11-08 15:20:13 Update_time: NULL Check_time: NULL Collation: utf8mb4_0900_ai_ci Checksum: NULL Create_options: Comment: 复制代码
重命名表
两种方法:
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; 复制代码
删除表
DROP TABLE 表名
mysql> DROP TABLE one_piece; 复制代码
注意:在该表与其他表有关联时,Mysql
会阻止该表的删除。
三. 查询
查询多列
同时输出 name
, age
列。
mysql> SELECT name, age -> FROM one_piece; 复制代码
检索唯一值
使用 DISTINCT
关键字,查询字段 age
的唯一值。
mysql> SELECT DISTINCT age -> FROM one_piece; 复制代码
限制输出
在 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设定的数过大,则只会检索到最后一行。
注释
三种注释方式
-- 单行注释 # 单行注释 /* 多行注释 */ 复制代码
四、ORDER BY 排序
单列排序
使用 ORDER BY
子句。 ORDER BY
子句取一个或多个列的名字,据此对输出进行排序(默认升序)。
mysql> SELECT name, age -> FROM one_piece -> ORDER BY age; 复制代码
注意:在指定一条 ORDER BY
子句时,应该保证它是 SELECT
语句中最后一条子句。
多列排序
mysql> SELECT A, B -> FROM test -> ORDER BY A, B; 复制代码
在按多列排序时,仅在多个行具有相同的 A
值时 才按 B
进行排序。如果 A
列中所有的值都是 唯一的,则不会按 B
排序。
指定排序方向
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; 复制代码
五、WHERE 过滤数据
WHERE 子句操作符
操作符 | 说明 | 操作符 | 说明 |
= | 等于 | > | 大于 |
<>、!= | 不等于 | >= | 大于等于 |
< | 小于 | !> | 不大于 |
<= | 小于等于 | BETWEEN | 在两值之间(包含边界) |
!< | 不小于 | IS NULL | 是NULL值 |
范围值检查
使用 WHERE
关键字和 BETWEEN AND
进行范围值检查(前闭后闭)。
mysql> SELECT age -> FROM one_piece -> WHERE A BETWEEN 5 AND 10; 复制代码
查询 字段 age 中 >=5
并且 <= 10
的数据。
空值检查
使用 WHERE
关键字和 IS NULL
进行范围值检查。如果没有 NULL
值就不返回数据。
mysql> SELECT name -> FROM one_piece -> WHERE name IS NULL; 复制代码
WHERE 组合过滤
使用 AND
、OR
操作符给 WHERE
子句添加附加条件。 AND
的优先级比 OR
要高,优先级高低 ()
、 AND
、 OR
。在使用的过程中要注意各个优先级的影响。
mysql> SELECT name, age -> FROM one_piece -> WHERE(name = '索隆' OR name = '路飞') -> AND age >= 18; 复制代码
IN 操作符
IN
操作符用来指定条件范围,范围中的每个条件都可以进行匹配。(与 OR
的功能相同,但速度比 IN
慢)
mysql> SELECT name, age -> FROM one_piece -> WHERE name IN ('索隆', '路飞') 复制代码
NOT 操作符
WHERE
子句中的 NOT
操作符有且只有一个功能,那就是否定其后所跟的任何条件。
mysql> SELECT name -> FROM one_piece -> WHERE name NOT IN ('索隆', '路飞') 复制代码
七、通配符过滤
通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用 通配符搜索。
在使用通配符过滤之前要先了解 LIKE
, LIKE
操作符用于在 WHERE
子句中搜索列中的指定模式或取值。
% 通配符
%
表示任何字符出现任意次数。例如,为了找出所有以 路
开始的 name
。
mysql> SELECT name, age -> FROM one_piece -> WHERE name LIKE '路%'; 复制代码
_ 通配符
通配符 _
的用途与 %
一样也是匹配任意字符,但它只匹配单个字符,而不是多个字符。
mysql> SELECT name, age -> FROM one_piece -> WHERE name LIKE '乌_普'; 复制代码