《MySQL基础教程》笔记4

Web  2023年11月29日 pm12:30发布1年前 (2023)更新 城堡大人
123 0 0

前言

本文主要是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基础教程-西泽梦路》

 历史上的今天

  1. 2022: Android使用ActivityView分窗显示三方应用Activity(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

Ubuntu16安装openjdk-7

Ubuntu16.04 安装openjdk-7-jdksudo apt-get install openjdk-7-jre 或者sudo apt-get install openjdk-7-jdkUbuntu16.04的安装源已经默认没有openjdk7了,所以要自己手动添加仓库,如下:...

monkey命令简单使用

前言下面介绍一下Monkey的参数意义,以及进场使用的的测试命令。记录于此,方便自己查阅。正文规范类命令数字adb shell monkey 100100表示Monkey事件次数为100> log.txt# 保存到当前目录的log.txt种adb shell monke...

刘瑜:过去的怎样让它过去

都赫提先生,31岁。听到枪声,他慌乱中趴下,向街边的建筑匍匐,但是还没来得及抵达安全的地方,一颗子弹向他飞来,打中了他的后背。麦克吉干先生,41岁。看到中弹的都赫提跑过去施救,同时挥舞着手中的一块白手帕,以示他的救援意图,但是他还没抵达伤者,后脑门上也中了一弹,立刻倒地身亡。这是1972年1月30...

张大千:做和尚的一百天

我的未婚妻,原本就是我的表姐,比我大三个月,我们的感情极好,可惜她过早死去。她叫谢舜华,尧舜的舜,中华的华……我由日本回来,本想回内江祭吊尽心,可是正逢张勋在闹复辟,兵荒马乱,我回不了四川,家兄又命我回日本,那年我二十岁。我二十一岁(一九二零年)由日本回来,当时我确实有过念头,今生不愿结婚了。我家...

Linux修改文件属性

前言经常用,但还是会忘记,因此这里又整理一下。记录全一定,方便自己回顾。这里主要介绍chown ,chmod,chgrp。正文在Linux中通过ls -l可以看文件的属性。chgrpchgrp:更改文件属组。chgrp [-R] 属组名 文件名-R:递归更改文件属组,就是在更...

Android获取磁盘监听和路径

前言简单记录一监听和获取USB真实路径,记录一下方便自己查阅。系统应用下测试!正文磁盘监听监听磁盘挂载和卸载这个就是Android原生接口广播监听,这个之前有介绍过。IntentFilter intentFilter = new IntentFilter();intentFil...