数据库MySQL的基本操作

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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]>
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
43 2
|
10天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
47 4
|
16天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?
|
5天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
29 0
|
6天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
29 0
|
15天前
|
存储 监控 关系型数据库
MySQL并发控制与管理:优化数据库性能的关键
【10月更文挑战第17天】MySQL并发控制与管理:优化数据库性能的关键
65 0
|
15天前
|
存储 SQL 关系型数据库
MySQL Workbench支持哪些数据库引擎
【10月更文挑战第17天】MySQL Workbench支持哪些数据库引擎
11 0
|
24天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
102 6
|
22天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
56 3
Mysql(4)—数据库索引
|
24天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
59 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用