Mysql基础篇:必知必会(上)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Mysql基础篇:必知必会(上)

一、数据库操作


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 排序。

image.png


指定排序方向

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 要高,优先级高低 ()ANDOR。在使用的过程中要注意各个优先级的影响。

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 ('索隆', '路飞')
复制代码


七、通配符过滤


通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用 通配符搜索。

在使用通配符过滤之前要先了解 LIKELIKE 操作符用于在 WHERE 子句中搜索列中的指定模式或取值。


% 通配符

% 表示任何字符出现任意次数。例如,为了找出所有以 开始的 name

mysql> SELECT name, age
    -> FROM one_piece
    -> WHERE name LIKE '路%';
复制代码


_ 通配符

通配符 _ 的用途与 % 一样也是匹配任意字符,但它只匹配单个字符,而不是多个字符

mysql> SELECT name, age
    -> FROM one_piece
    -> WHERE name LIKE '乌_普';
复制代码



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Java 关系型数据库 MySQL
MySQL数据库基础
文章主要介绍MySQL数据库中一些常见的操作,为专栏文章,系列介绍
151 0
MySQL数据库基础
|
SQL 存储 关系型数据库
MySQL常用基础 - 小白必看(二)
概念:是一个数据定义语言 该语言部分包括: 1、对数据库的常用操作 2、对表结构的常用操作
112 0
MySQL常用基础 - 小白必看(二)
|
存储 SQL 缓存
MySQL数据库系列(一)------基础
数据不会随程序结束而消失
156 0
MySQL数据库系列(一)------基础
|
关系型数据库 MySQL 数据格式
【0基础学习mysql】之DML-表中数据的操作
【0基础学习mysql】之DML-表中数据的操作
129 0
【0基础学习mysql】之DML-表中数据的操作
|
关系型数据库 MySQL Java
MySQL数据库基础数据入门级[图文详解]
MySQL数据库基础数据入门级[图文详解]
MySQL数据库基础数据入门级[图文详解]
|
SQL 存储 人工智能
华为大佬的“百万级”MySQL笔记,基础+优化+架构一键搞定
前言 MySQL不用多说,大家都知道它是目前最为活跃热门的开源数据库,由于成本低,操作简易的特点,所以在互联网企业中被广泛使用,即使是头部的BATJ。由此可见,想要在互联网行业混得风生水起,或者说想要进入BATJ等一线互联网公司,那么熟练掌握MySQL必定是一块必要的敲门砖。 对于MySQL的使用,可能很多刚开始工作的开发人员还是挺陌生的,但要想学习又不知道从何开始,技术的落后自然会让人感到焦虑。实际上,学习MySQL,找对方法就能轻松搞定。 今天,特将华为大佬整理的“百万级”MySQL笔记分享给你们,从基础到优化再到架构,带你轻松上手,一键搞定。
|
存储 SQL JSON
|
关系型数据库 MySQL
MySQL基础(二)下
MySQL基础(二)下
111 0
MySQL基础(二)下
|
存储 SQL JSON
MySQL基础(二)中
MySQL基础(二)中
97 0
MySQL基础(二)中
|
存储 SQL NoSQL
MySQL基础(二)上
MySQL基础(二)上
173 0
MySQL基础(二)上