数据库MySQL的基本操作

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 1.MySQL数据库的安装:CentOS6上mysql服务端和客户端的安装和启动:#使用yum安装mysql数据库的服务端和客户端yum install -y mysql mysql-server#把mysql服务端加入开机自启动chkconfig msyqld on#立即启动mysql...

1.MySQL数据库的安装:

CentOS6上mysql服务端和客户端的安装和启动:

#使用yum安装mysql数据库的服务端和客户端
yum install -y mysql mysql-server
#把mysql服务端加入开机自启动
chkconfig msyqld on
#立即启动mysql服务端
service mysqld start 

CentOS7上MariaDB数据库的服务端和客户端的安装和启动:

#yum安装MariaDB服务端和客户端
yum install -y mariadb mariadb-server
#把MariaDB的服务端加入开机自启动
systemctl enable mariadb
#立即启动MariaDB的服务端
systemctl start mariadb

windows平台:
到官方网站下载操作系统对应的版本:

安装版下载地址

解压版下载地址

window解压版的安装步骤:

1.1 下载到电脑上

Windows (x86, 64-bit), ZIP Archive

1.2 解压

解压到C盘的目录下:

C:\mysql-5.7.16-winx64

1.3 初始化

进入C:\mysql-5.7.16-winx64\bin目录下,
执行命令初始化mysql:

mysqld --initialize-insecure

1.4 启动mysql服务端

进入C:\mysql-5.7.16-winx64\bin目录下,执行

mysqld

1.5 启动mysql客户端并连接mysql服务端

进入C:\mysql-5.7.16-winx64\bin目录下,执行

mysql -u root -p

提示输入密码,这里初始化时没有设置密码,直接回车,进行mysql的提示符

这里显示的是在CentOS7上安装的MariaDB的提示符:

[root@localhost ~]#mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.52-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

1.6 把mysql可执行文件添加到系统环境变量中,方便以后执行mysql

具体步骤请点这里

2.数据库的基本操作

2.1 显示服务端所有的数据库

#显示系统上的所有的数据库
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

2.2 创建数据库

#创建数据库db1
mysql> CREATE DATABASE db1;
Query OK, 1 row affected (0.00 sec)

#创建数据库student
mysql> CREATE DATABASE student;
Query OK, 1 row affected (0.00 sec)

#列出所有的数据库
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| mysql              |
| performance_schema |
| student            |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

创建数据库时可以加上参数来指定字符集有:

DEFAULT CHARSET utf8        #指定数据表的字符集为"utf8"
DEFAULT CHARSET gbk         #指定数据表的字符集为"gbk"

2.3 使用数据库

#使用use语句指定要操作的数据库
mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

2.4 显示当前数据库中所有的表:

#列出数据库mysql中的所有的数据表
mysql> SHOW TABLES;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.01 sec)

2.5 用户管理

#创建一个指定密码,只允许在指定主机上登陆数据库的用户
CREATE USER "用户名"@"IP地址" IDENTIFIED BY "密码";
#删除用户
DROP USER "用户名"@"IP地址";
#修改用户的登陆名称
RENAME USER "用户名""@"IP地址" TO "新用户名""@"IP地址";
#设定用户使用指定主机登陆数据库的密码
SET PASSWORD FOR "用户名"@"IP地址"="新密码";

IP地址的说明:

192.168.1.100   表示192.168.1.100主机
192.168.1.*     表示对192.168.1地址段
192.168.*.*     表示192.168网段
%               表示所有的主机

注意的是:

 用户权限相关数据保存在mysql数据库中的user表中,可以直接对其进行操作,但是不建议这样操作

2.6 授权管理

#显示某个用户在指定主机的权限
SHOW GRANTS FOR "用户名"@"IP地址"
#授权
GRANT 权限 ON 数据库.表 TO "用户名"@"IP地址"
#取消授权
GRANT 权限 ON 数据库.表 FROM "用户名"@"IP地址"

可以设定的权限有:

all privileges              除授权之外的所有权限
select,insert               查看和插入数据的权限        
usage                       除了登陆之外,无任何权限
alter                       更改数据库权限
alter routine               用户可以修改或删除存储函数
create                      创建新的数据库或数据表     
create routine              用户可以更改或放弃存储过程和函数
create temporary tables     用户可以创建临时数据表
create user                 创建新的用户
create view                 创建新的视图
delete                      删除表的记录
drop                        删除数据库或数据表
execute                     用户可以执行存储过程
event                       用户可以创建,修改和删除触发器
file                        在数据库服务器上读写文件
grant option                用户是否可以将自己的权限再授予其他用户
index                       建立或删除索引
insert                      插入新的数据
lock tables                 锁定数据表,禁止别的用户对数据表的访问和修改
process                     显示或杀死属于其他用户的服务线程
select                      查找检索数据
show databases              显示数据库
show view                   显示视图
trigger                     用户可以创建和删除触发器
update                      更新数据库或数据表
reload                      重载访问控制表
shutdown                    关闭mysql服务端
super                       用户可以执行的强大的管理功能,例如修改mysql的全局变量,执行关于复制和日志的各种命令
replication client          用户可以确定复制从服务器和主服务器的位置
replication slave           用户可以读取维护复制数据库环境的二进制日志文件

数据库可以使用的选项:

数据库名.*                  数据库中所有的表
数据库名.表                 指定数据库中的某张表
数据库名.存储过程           指定数据库的存储过程
%                         所有的数据库

例子:

#授权用户对db1下的table1数据表拥有除了授权之外的所有权限
GRANT all privileges on DB1.table1 to "用户名"@"IP"

#授权用户对db1下的所有的数据表都仅有查找的权限
grant select on db1.* to "用户名"@"IP"

#授权用户对db1下的所有的数据表都有查找和插入数据的权限
grant select,insert on db1.* to "用户名"@"IP"

#移除用户对db1下的table1数据表的查找的权限 
revoke select on db1.table1 from "用户名"@"IP"

#授权root用户在任何主机都有对所有数据表的所有权限
GRANT all privileges on *.* to "root"@"%" identified by "mysql_root"

授权之后,要执行命令刷新权限

flush privileges        #将数据读取到内存中,从而立即生效

3.数据表的基本操作

3.1 创建表

语法如下:

CREATE TABLE table_name(
    字段名 类型  是否可以为空
    字段名 类型  是否可以为空
) ENGINE=Innodb DEFAULT CHARSET=utf8

创建数据表时,可以添加的选项有:

not null        设定指定的字段不可以为空
null            设定指定的字段可以为空
DEFAULT n       设定默认值,创建列时可以指定默认值,当插入数据时这个字段未设置值,则自动添加默认值
auto_increment  自增,如果某列设置为自增列,插入数据时无需设置此列,其值将在原来的基础上加1(表中只能有一个自增列)
primary key     一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则其值必须唯一,如果是多列,则其组合必须唯一

3.2 创建外键

一种特殊的索引,只能是指定内容

语法如下:

#创建一张表,用来记录学生的ID,姓名
mysql> CREATE TABLE stu_info(
    -> id INT PRIMARY KEY AUTO_INCREMENT,
    -> name VARCHAR(10)
    -> ) ENGINE=innodb CHARSET=utf8;
Query OK, 0 rows affected (0.26 sec)
创建一张名为stu_info,第一个字段为id,数据类型为整型,自增且为主键,第二个字段为name,允许的字符串最大长度为10的引擎为innodb,字符集为utf8的数据表.

3.3 删除表:

#删除这张数据表中的所有数据,包括表中的字段
drop table 表名

#一行一行的删除数据表中的除字段处的所有的行,速度较慢
delete from 表名

#先把数据表删除,然后再创建一张跟被删除的数据表的字段一样的空表,速度较快
truncate table 表名

3.4 添加列

#为数据表添加一个指定类型的列
alter table 表名 add  列名 类型

例子:

#为学生信息表插入性别字段
mysql> ALTER TABLE stu_info ADD(
    -> gender VARCHAR(6) DEFAULT "male");
Query OK, 0 rows affected (0.37 sec)
Records: 0  Duplicates: 0  Warnings: 0

#为学生信息表插入年龄,语言分数,数学分数和英语分数
mysql> ALTER TABLE stu_info ADD(
    -> age INT(2),
    -> chinese INT(2),
    -> math INT(2),
    -> english INT(2));
Query OK, 0 rows affected (0.38 sec)
Records: 0  Duplicates: 0  Warnings: 0

#为学生信息表插入生日字段
mysql> ALTER TABLE stu_info ADD(birthday DATE);
Query OK, 0 rows affected (0.40 sec)
Records: 0  Duplicates: 0  Warnings: 0

#显示学生信息表的描述信息
mysql> DESC stu_info;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| name     | varchar(10) | YES  |     | NULL    |                |
| age      | int(2)      | YES  |     | NULL    |                |
| chinese  | int(2)      | YES  |     | NULL    |                |
| math     | int(2)      | YES  |     | NULL    |                |
| english  | int(2)      | YES  |     | NULL    |                |
| gender   | varchar(6)  | YES  |     | male    |                |
| birthday | date        | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

3.5 删除列

#删除数据表中指定有列
alter table 表名 drop column 列名

例子:

#删除学生信息表中的生日字段
mysql> ALTER TABLE stu_info DROP birthday;
Query OK, 0 rows affected (0.37 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC stu_info;
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| id      | int(11)     | NO   | PRI | NULL    | auto_increment |
| name    | varchar(10) | YES  |     | NULL    |                |
| age     | int(2)      | YES  |     | NULL    |                |
| chinese | int(2)      | YES  |     | NULL    |                |
| math    | int(2)      | YES  |     | NULL    |                |
| english | int(2)      | YES  |     | NULL    |                |
| gender  | varchar(6)  | YES  |     | male    |                |
+---------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

3.6 修改列

#更改数据表的字段的类型
alter table 表名 modify 列名 类型

#更改数据表的字段的名称以及类型
alter table 表名 change 原列名 新列名 类型

例子:

#修改学生信息表中的姓名字段,类型改为字符串的长度为6,且不能为空
mysql> ALTER TABLE stu_info MODIFY name VARCHAR(6) NOT NULL;
Query OK, 0 rows affected (0.85 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC stu_info;
+---------+------------+------+-----+---------+----------------+
| Field   | Type       | Null | Key | Default | Extra          |
+---------+------------+------+-----+---------+----------------+
| id      | int(11)    | NO   | PRI | NULL    | auto_increment |
| name    | varchar(6) | NO   |     | NULL    |                |
| age     | int(2)     | YES  |     | NULL    |                |
| chinese | int(2)     | YES  |     | NULL    |                |
| math    | int(2)     | YES  |     | NULL    |                |
| english | int(2)     | YES  |     | NULL    |                |
| gender  | varchar(6) | YES  |     | male    |                |
+---------+------------+------+-----+---------+----------------+
7 rows in set (0.01 sec)

#把学生信息表中的chinese改为chinese_score,类型改为int(3)
mysql> ALTER TABLE stu_info CHANGE chinese chinese_score INT(3);
Query OK, 0 rows affected (0.11 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC stu_info;
+---------------+------------+------+-----+---------+----------------+
| Field         | Type       | Null | Key | Default | Extra          |
+---------------+------------+------+-----+---------+----------------+
| id            | int(11)    | NO   | PRI | NULL    | auto_increment |
| name          | varchar(6) | NO   |     | NULL    |                |
| age           | int(2)     | YES  |     | NULL    |                |
| chinese_score | int(3)     | YES  |     | NULL    |                |
| math          | int(2)     | YES  |     | NULL    |                |
| english       | int(2)     | YES  |     | NULL    |                |
| gender        | varchar(6) | YES  |     | male    |                |
+---------------+------------+------+-----+---------+----------------+
7 rows in set (0.01 sec)

3.7 删除主键

#删除某张表中的主键
ALTER TABLE 表名 drop primary key;
ALTER TABLE 表名 modify 列名 ,drop primary key;

3.8 添加主键

#把数据表中的指定列设为主键
ALTER TABLE 表名 add primary key 列名;

3.9 添加外键

#把主表的某个字段设为从表某个字段的外键
ALTER TABLE 从表 ADD CONSTRAINT 外键名称 
FOREIGN KEY 从表(外键字段) REFERENCES 主表(主键字段);

3.10 删除外键

#删除数据表中的指定外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称

3.11 修改默认值

#修改数据表的默认值
ALTER TABLE 表名 ALTER 要修改的字段 DEFAULT 修改后的值

3.12 删除默认值

#删除数据表的默认值
ALTER TABLE ALTER DROP DEFAULT

4.表内容操作

4.1 增

insert into 表名(列名,列名) values (值1,值2)
insert into 表名(列名,列名) values(值值值),(值值值)
insert into 表名(列名,列名) select (列名,列名)  from 表名

例子:

#向学生信息表中插入四条数据
mysql> INSERT INTO stu_info(name,gender,age,chinese,math,english) VALUES
    -> ("xiaoming","male",14,98,98,62),
    -> ("xiaohong","female",13,67,59,82),
    -> ("xiaoliang","male",12,59,89,67),
    -> ("xiaona","female",13,88,98,55);
Query OK, 4 rows affected, 3 warnings (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 3

#向学生信息表中插入单条数据
mysql> INSERT INTO stu_info(name,gender,age,chinese,math,english) VALUES("xiaoqi","male",14,88,100,
Query OK, 1 row affected (0.01 sec)

4.2 删

#删除整张表
delete from 表名
#删除数据表中符合要求的条目
delete from 表名 where id =n and name="name"

4.3 查

4.3.1 *表示查找所有列,也可以指定一个列,from指定从哪张表查找,distinct用来剔除重复行

#查询表中所有的信息
select * from 表名
#查询表中id大于10的人的所有信息
select * from 表名 where id > 10
#查询表中id大于10的人的所有信息
select id,name,gender as info from 表名 where id >10

#检索表中所有人的所有信息
mysql> SELECT * FROM stu_info;
+----+--------+--------+------+---------+------+---------+
| id | name   | gender | age  | chinese | math | english |
+----+--------+--------+------+---------+------+---------+
|  1 | xiaomi | male   |   14 |      98 |   98 |      62 |
|  2 | xiaoho | female |   13 |      67 |   59 |      82 |
|  3 | xiaoli | male   |   12 |      59 |   89 |      67 |
|  4 | xiaona | female |   13 |      88 |   98 |      55 |
|  5 | xiaoqi | male   |   14 |      88 |  100 |      67 |
+----+--------+--------+------+---------+------+---------+
5 rows in set (0.01 sec)

#检索表中ID号大于4的学生的所有信息
mysql> SELECT * FROM stu_info WHERE id >4;
+----+--------+--------+------+---------+------+---------+
| id | name   | gender | age  | chinese | math | english |
+----+--------+--------+------+---------+------+---------+
|  5 | xiaoqi | male   |   14 |      88 |  100 |      67 |
+----+--------+--------+------+---------+------+---------+
1 row in set (0.00 sec)

4.3.2 select也可以使用表达式,并且可以使用:字段 as 别名或者:字段 别名

#检索所有的学生的姓名,年龄并且把英语成绩加5分
mysql> SELECT name,age,english+5 as english FROM stu_info;
+--------+------+-----------+
| name   | age  |  english  |
+--------+------+-----------+
| xiaomi |   14 |        67 |
| xiaoho |   13 |        87 |
| xiaoli |   12 |        72 |
| xiaona |   13 |        60 |
| xiaoqi |   14 |        72 |
+--------+------+-----------+
5 rows in set (0.06 sec)

4.3.3 使用where子句,进行过滤查询

where字句可以使用:

=                       等于
<>                      不等于,!=
>                       大于
<                       小于
>=                      大于等于
<=                      小于等于
in(a,b,c)               在括号中的值里面选择
not in                  与in相反,即不在这些列表项内选择。
between m and n         在m和n范围中间(包括m和n)取值
like "pattern%"         查询以pattern开头,后接任意字符的所有的信息
like "pattern_"         查询以pattern开头后接一个字符的所有的信息
and                     且
or                      或
not                     非

or和and同时存在时,先算and的两边值,逻辑与先执行

例子:

#查询表中id大于1且name不等于"xiaoming"的人的所有信息
select * from table_name where id>1 and name != "xiaoming";

#查询表中id号在2和5之间(包括2和5)的人的所有信息
select * from table_name where id between 2 and 5;

#查询表中name以"li"开头的人的所有信息
select * from table_name where name like "li%";

#查询表中name以"li"开头后面接两个字符的所有人的所有的信息
select * from table_name where name like "li__"

#查询表中id号为11或者22或者33的所有人的所有信息
select * from table_name where id in (11,22,33);

#查询表中id号不为11和22和33的人的所有信息
select * from table_name where id not in (11,22,33);

#查询表中id号在另外一张表中的人的所有信息
select * from table_name where id in (select id from another_table);

4.3.4 order by 指定排序的列,排序的列可以是表中的列名,也可以是select后面指定的别名

SELECT *|field1,field2... from table_name where 语句 order by field [Asc|Desc]

排序参数:

Asc         指定按升序进行排序,默认以Asc进行排序
Desc        指定按降序进行排序

例子:

#检索表中id号大于5的人的所有信息,且字段1按降序排列,字段2按升序排列
select * from table_name where id > 5 order by field1 desc,field2 asc

#检索出来的列按照从小到大排列
select * from table_name order by 列 asc

#检索出来的列按照从大到小排列
select * from table_name order by 列 desc

4.3.5 group by 分组查询

当表中某一列中有很多相同的值时,可以进行分组查询,但是按分组条件进行分组后每一组只会显示第一条记录
group by字句,其后可以接多个列名,也可以接having子句,对group by的结果进行筛选
where与having两者都可以对查询结果进行进一步的过滤,但也有差别:   
where语句只能用在分组之前筛选,having可以用在分组之后筛选
使用where语句的地方都可以用having进行替换
having中可以使用聚合函数,where中不可以使用聚合函数
需要注意的是,group by语句必须在where之后,在order by之前

4.3.6 聚合函数

聚合函数一般和分组配合使用

COUNT(列名)   统计行的个数
SUM(列名) 统计满足条件的内容的和
AVG(列名) 统计满足条件的内容的平均值       
MAX         求最大值        
MIN         求最小值

4.3.7 limit取结果中的几条值

limit m     取检索结果的前m条
limit m,n   检索的结果中跳过前n条,取接下来的m条记录

例子:

#查询数据表中id大于5的结果中的前3条数据
select * from table_name where id >5 limit 3

#检索表的前5行
select * from table_name limit 5

#检索从表的第4行开始向下的5行
select * from table_name limit 4,5

#检索从表的第4行开始向下的5行
select * from table_name limit 5 offset 4

4.3.8 正则表达式查询

语法:

SELECT * FROM table_name WHERE 条件 REGEXP "pattern";

可以使用正则表达式的模式来进行匹配

#查询表中id大于3且以"pattern"开头的人的所有信息
select * from table_name where id >3 and REGEXP "^pattern";

#查询表中id大于3且以"pattern"结尾的人的所有信息      
select * from table_name where id >3 and REGEXP "pattern$";

4.3.9 连表查询

#从两个或两个以上的表中查询数据
select A.field1,A.field2,B.field1,B.field2 from A,B where A.id=B.id

4.3.10 连接查询

以一个共同的字段,求两张表当中符合条件的并集。 通过共同字段把这两张表连接起来。

常用的连接:

内连接,根据表中的共同字段进行匹配
语法:
    select 字段  from 表1 inner join 表2  on 表1.字段=表2.字段

左连接:a表是主表,所有行都显示,b表从表。主表内容全都有,从表内没有的显示null。
语法:
    select 字段 from a表 left join b表  on 连接条件


右连接:b表主表,所有行都显示,a表是从表。右连接,可以多表连接
语法:
    select 字段 from a表 right join  b表 on 条件 

4.4 改

#把数据表中id大于1的name的值设定"new_name"
update 表名 set name="new_name" where id >1

5.关于MySQL/MariaDB命令帮助

help命令可以告诉很多使用方法和帮助

MariaDB [mysql]> help show;
Name: 'SHOW'
Description:
SHOW has many forms that provide information about databases, tables,
columns, or status information about the server. This section describes
those following:

SHOW AUTHORS
SHOW {BINARY | MASTER} LOGS
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW CHARACTER SET [like_or_where]
SHOW COLLATION [like_or_where]
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]
SHOW CONTRIBUTORS
SHOW CREATE DATABASE db_name
SHOW CREATE EVENT event_name
SHOW CREATE FUNCTION func_name
SHOW CREATE PROCEDURE proc_name
SHOW CREATE TABLE tbl_name
SHOW CREATE TRIGGER trigger_name
SHOW CREATE VIEW view_name
SHOW DATABASES [like_or_where]
SHOW ENGINE engine_name {STATUS | MUTEX}
SHOW [STORAGE] ENGINES
SHOW ERRORS [LIMIT [offset,] row_count]
SHOW EVENTS
SHOW FUNCTION CODE func_name
SHOW FUNCTION STATUS [like_or_where]
SHOW GRANTS FOR user
SHOW INDEX FROM tbl_name [FROM db_name]
SHOW MASTER STATUS
SHOW OPEN TABLES [FROM db_name] [like_or_where]
SHOW PLUGINS
SHOW PROCEDURE CODE proc_name
SHOW PROCEDURE STATUS [like_or_where]
SHOW PRIVILEGES
SHOW [FULL] PROCESSLIST
SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]
SHOW PROFILES
SHOW SLAVE HOSTS
SHOW SLAVE STATUS
SHOW [GLOBAL | SESSION] STATUS [like_or_where]
SHOW TABLE STATUS [FROM db_name] [like_or_where]
SHOW [FULL] TABLES [FROM db_name] [like_or_where]
SHOW TRIGGERS [FROM db_name] [like_or_where]
SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
SHOW WARNINGS [LIMIT [offset,] row_count]

like_or_where:
    LIKE 'pattern'
  | WHERE expr

If the syntax for a given SHOW statement includes a LIKE 'pattern'
part, 'pattern' is a string that can contain the SQL "%" and "_"
wildcard characters. The pattern is useful for restricting statement
output to matching values.

Several SHOW statements also accept a WHERE clause that provides more
flexibility in specifying which rows to display. See
http://dev.mysql.com/doc/refman/5.5/en/extended-show.html.

URL: http://dev.mysql.com/doc/refman/5.5/en/show.html


MariaDB [mysql]> help select;
Name: 'SELECT'
Description:
Syntax:
SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
      | INTO DUMPFILE 'file_name'
      | INTO var_name [, var_name]]
    [FOR UPDATE | LOCK IN SHARE MODE]]

SELECT is used to retrieve rows selected from one or more tables, and
can include UNION statements and subqueries. See [HELP UNION], and
http://dev.mysql.com/doc/refman/5.5/en/subqueries.html.

The most commonly used clauses of SELECT statements are these:

o Each select_expr indicates a column that you want to retrieve. There
  must be at least one select_expr.

o table_references indicates the table or tables from which to retrieve
  rows. Its syntax is described in [HELP JOIN].

o The WHERE clause, if given, indicates the condition or conditions
  that rows must satisfy to be selected. where_condition is an
  expression that evaluates to true for each row to be selected. The
  statement selects all rows if there is no WHERE clause.

  In the WHERE expression, you can use any of the functions and
  operators that MySQL supports, except for aggregate (summary)
  functions. See
  http://dev.mysql.com/doc/refman/5.5/en/expressions.html, and
  http://dev.mysql.com/doc/refman/5.5/en/functions.html.

SELECT can also be used to retrieve rows computed without reference to
any table.

URL: http://dev.mysql.com/doc/refman/5.5/en/select.html


MariaDB [mysql]>
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
33 2
|
20天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
104 0
|
16天前
|
存储 关系型数据库 MySQL
MySQL基础入门:数据库操作全攻略
MySQL基础入门:数据库操作全攻略
47 0
|
16天前
|
关系型数据库 MySQL 数据库
卸载云服务器上的 MySQL 数据库
卸载云服务器上的 MySQL 数据库
33 0
|
1天前
|
SQL 存储 关系型数据库
数据库开发之mysql前言以及详细解析
数据库开发之mysql前言以及详细解析
10 0
|
6天前
|
SQL 关系型数据库 MySQL
MySQL环境搭建——“MySQL数据库”
MySQL环境搭建——“MySQL数据库”
|
6天前
|
SQL NoSQL 关系型数据库
初识MySQL数据库——“MySQL数据库”
初识MySQL数据库——“MySQL数据库”
|
9天前
|
关系型数据库 MySQL 数据库
数据库基础(mysql)
数据库基础(mysql)
|
9天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
33 3
|
10天前
|
存储 关系型数据库 MySQL
【后端面经】【数据库与MySQL】为什么MySQL用B+树而不用B树?-02
【4月更文挑战第11天】数据库索引使用规则:`AND`用`OR`不用,正用反不用,范围中断。索引带来空间和内存代价,包括额外磁盘空间、内存占用和数据修改时的维护成本。面试中可能涉及B+树、聚簇索引、覆盖索引等知识点。MySQL采用B+树,因其利于范围查询和内存效率。数据库不使用索引可能因`!=`、`LIKE`、字段区分度低、特殊表达式或全表扫描更快。索引与NULL值处理在不同数据库中有差异,MySQL允许NULL在索引中的使用。
15 3