前言

本文主要是select语句的使用

学习一下MySQL,一直没有系统的学习一下。最近有空,看了《MySQL基础教程-西泽梦路》,简单的做一下笔记。

记录于此,方便自己回忆。

MySQL中对大小写没有区分,我这里习惯性用小些。

正文

我这以Window版的phpstudy软件验证。

需要进入这个目录,才可以使用mysql命令

D:\phpstudy_pro\Extensions\MySQL5.7.26\bin

进入正文

select命令

为了训练select命令,特意新增了一个salary表

# 创建 create table salary(empid varchar(10), sales int , month int); # 列结构 mysql> desc salary; +-------+-------------+------+-----+---------+-------+ | Field | Type       | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | empid | varchar(10) | YES |     | NULL   |       | | sales | int(11)     | YES |     | NULL   |       | | month | int(11)     | YES |     | NULL   |       | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)

插入数据略过哈

查询所有数据
select * from salary

*表示不限制,查询所有。

输出结果

mysql> select * from salary +-------+-------+-------+ | empid | sales | month | +-------+-------+-------+ | A103 |   101 |     4 | | A102 |   54 |     5 | | A104 |   181 |     4 | | A101 |   184 |     4 | | A103 |   17 |     5 | +-------+-------+-------+ 5 rows in set (0.00 sec)
多个条件限制select
select sales,empid from salary;

限定列名查询,查询条件可以一个,也可以多个,多个用[,]分割。

查询sales,empid这两列的数据

mysql> select sales,empid from salary; +-------+-------+ | sales | empid | +-------+-------+ |   101 | A103 | |   54 | A102 | |   181 | A104 | |   184 | A101 | |   17 | A103 | |   300 | A101 | |   205 | A102 | |   93 | A104 | |   12 | A103 | |   87 | A107 | +-------+-------+ 10 rows in set (0.00 sec)

当然,查询列也可以重复,下面

mysql> select sales,empid,sales from salary; +-------+-------+-------+ | sales | empid | sales | +-------+-------+-------+ |   101 | A103 |   101 | |   54 | A102 |   54 | |   181 | A104 |   181 | |   184 | A101 |   184 | |   17 | A103 |   17 | |   300 | A101 |   300 | |   205 | A102 |   205 | |   93 | A104 |   93 | |   12 | A103 |   12 | |   87 | A107 |   87 | +-------+-------+-------+ 10 rows in set (0.00 sec)
使用别名

虽然查询出sales,empid数据,但还是有部分人不太理解,因此为了更多人认识,可以给列加上通俗易懂的名称,也叫别名(alias)。

select 列名 as 别名 from 表名;
mysql> select sales as 销售 from salary; +--------+ | 销售 | +--------+ | 101 | | 54 | | 181 | | 184 | | 17 | | 300 | | 205 | | 93 | | 12 | | 87 | +--------+ 10 rows in set (0.00 sec)

算术运算符

mysql存在如下算术运算符

运算符 使用示例 含义 + a+b a加上b - a-b a减去b * a*b a乘以b / a/b a除以b div a div b a除以b,结果取整 %、mod a % b a除以b,取余数

以表中的销售额为例,一般单位是万

因此,展示时乘上10000

mysql> select sales*10000 as 销售 from salary; +---------+ | 销售 | +---------+ | 1010000 | | 540000 | | 1810000 | | 1840000 | | 170000 | | 3000000 | | 2050000 | | 930000 | | 120000 | | 870000 | +---------+ 10 rows in set (0.00 sec)

其他的算术运算符使用类似,这里不过多介绍。

常用函数

传入数据后,函数会执行指定的处理并返回结果

计算相关函数
 select 函数名(支持计算的列名) from 表名;

比如,

  1. avg()计算平均值

  2. sum()计算总和等

  3. count()计算个数

mysql> select avg(sales) from salary; +------------+ | avg(sales) | +------------+ | 123.4000 | +------------+ 1 row in set (0.00 sec)
select version()

显示MySQL服务器版本

mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.26 | +-----------+ 1 row in set (0.00 sec)
select user()

显示当前用户

mysql> select user(); +----------------+ | user() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.00 sec)
select database()

显示当前使用的数据库

mysql> select database(); +------------+ | database() | +------------+ | company | +------------+ 1 row in set (0.00 sec)
select charset('字符编码')

显示由参数指定的字符的字符编码

mysql> select charset('utf-8'); +------------------+ | charset('utf-8') | +------------------+ | utf8 | +------------------+ 1 row in set (0.00 sec)

字符串函数

concat()
select concat(字符串或列名1,字符串或列名2..) from 表名;

concat就是拼接传入的参数,可以传入至少1个字符串或列名。

mysql> select concat(empid,'销售',sales,'万') from salary; +------------------------------------+ | concat(empid,'销售',sales,'万') | +------------------------------------+ | A103销售101万 | | A102销售54万 | | A104销售181万 | | A101销售184万 | | A103销售17万 | | A101销售300万 | | A102销售205万 | | A104销售93万 | | A103销售12万 | | A107销售87万 | +------------------------------------+ 10 rows in set (0.00 sec)
right()

从右取出列名中数据的N个字符

如果N大于字符串长度,也不会报错,就是完整的列中数据信息。

select right(列名,字符个数N) from 表名;
mysql> select right(empid,2) from salary; +----------------+ | right(empid,2) | +----------------+ | 03 | | 02 | | 04 | | 01 | | 03 | | 01 | | 02 | | 04 | | 03 | | 07 | +----------------+ 10 rows in set (0.00 sec)
left()

从左取出列名中数据的N个字符

如果N大于字符串长度,也不会报错,就是完整的列中数据信息。

select left(列名,字符个数N) from 表名;
mysql> select left(empid,2) from salary; +---------------+ | left(empid,2) | +---------------+ | A1 | | A1 | | A1 | | A1 | | A1 | | A1 | | A1 | | A1 | | A1 | | A1 | +---------------+ 10 rows in set (0.00 sec)
repeat()

重复显示

select repeat(替换的字符,数据类型的列名) from 表名;

实用性一般,替换的字符个数与数据类型列名中的值有关系。

mysql> select repeat('*',month) from salary; +-------------------+ | repeat('*',month) | +-------------------+ | **** | | ***** | | **** | | **** | | ***** | | ***** | | ****** | | ***** | | ****** | | ****** | +-------------------+ 10 rows in set (0.00 sec)
reverse()
select reverse(列名) from 表名;

任何数据都可以反转显示。

mysql> select reverse(empid) from salary; +----------------+ | reverse(empid) | +----------------+ | 301A | | 201A | | 401A | | 101A | | 301A | | 101A | | 201A | | 401A | | 301A | | 701A | +----------------+ 10 rows in set (0.00 sec)

日期和时间函数

下面创建一个work表,列名只有自动增长型的主键id和time

 create table work (id int auto_increment primary key, time datetime );
# 显示列表结构 mysql> desc work; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | time | datetime | YES | | NULL | | +-------+----------+------+-----+---------+----------------+ 2 rows in set (0.00 sec) # 插入数据 mysql> insert into work (time) values(now()); Query OK, 1 row affected (0.00 sec) # 查询 mysql> select * from work; +----+---------------------+ | id | time | +----+---------------------+ | 1 | 2023-11-27 11:57:11 | +----+---------------------+ 1 row in set (0.00 sec)

limit

如果数据过大,查询时会耗时很久,因此一般会设置一定条件显示。

我们可以用limit进行限制显示的个数

select 列名 from 表名 limit 显示个数;
mysql> select name from info limit 4; +------------+ | name | +------------+ | 笔友城堡 | | 笔友城堡3 | | dushu | | shu | +------------+ 4 rows in set (0.00 sec)

只显示了4条。

参考文章

  1. 《MySQL基础教程-西泽梦路》

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

none
暂无评论...