目录
一、🌎SQL 简介
1.1 📜SQL 是什么?
1.2 📜SQL 能做什么?
1.3 📜SQL 是一种标准 - 但是...
1.4 📜在您的网站中使用 SQL
1.4 📜RDBMS
1.5 📜请记住...
1.6 📜SQL 语句后面的分号?
1.7 📜一些最重要的 SQL 命令
二、📚不断学习
2.1 📘使用 NOW() 、 CURDATE()、CURTIME() 获取当前时间
2.2 📘使用 DATE()、TIME() 函数提取日期和时间
3.1 查询课程表中课程的创建日期
2.3 📘使用 EXTRACT() 函数提取指定的时间信息
2.4 📘使用 DATE_FORMAT() 格式化输出日期
4.1 DATE_FORMAT() 用法
4.2 DATE_FORMAT() 实例
三、🥇Summary
获取源码?私信?关注?点赞?收藏?
SQL 是用于访问和处理数据库的标准的计算机语言。
在本教程中,您将学到如何使用 SQL 访问和处理数据系统中的数据,这类数据库包括:MySQL、SQL Server、Access、Oracle、Sybase、DB2 等等。
一、🌎SQL 简介
SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
1.1 📜SQL 是什么?
- SQL 指结构化查询语言,全称是 Structured Query Language。
- SQL 让您可以访问和处理数据库,包括数据插入、查询、更新和删除。
- SQL 在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。
1.2 📜SQL 能做什么?
- SQL 面向数据库执行查询
- SQL 可从数据库取回数据
- SQL 可在数据库中插入新的记录
- SQL 可更新数据库中的数据
- SQL 可从数据库删除记录
- SQL 可创建新数据库
- SQL 可在数据库中创建新表
- SQL 可在数据库中创建存储过程
- SQL 可在数据库中创建视图
- SQL 可以设置表、存储过程和视图的权限
1.3 📜SQL 是一种标准 - 但是...
虽然 SQL 是一门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言,但是仍然存在着多种不同版本的 SQL 语言。
然而,为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的命令(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
1.4 📜在您的网站中使用 SQL
要创建一个显示数据库中数据的网站,您需要:
- RDBMS 数据库程序(比如 MS Access、SQL Server、MySQL)
- 使用服务器端脚本语言,比如 PHP 或 ASP
- 使用 SQL 来获取您想要的数据
- 使用 HTML / CSS
1.4 📜RDBMS
RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。
RDBMS 中的数据存储在被称为表的数据库对象中。
表是相关的数据项的集合,它由列和行组成。
1.5 📜请记住...
- SQL 对大小写不敏感:SELECT 与 select 是相同的。
1.6 📜SQL 语句后面的分号?
某些数据库系统要求在每条 SQL 语句的末端使用分号。
分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。
在本教程中,我们将在每条 SQL 语句的末端使用分号。
1.7 📜一些最重要的 SQL 命令
- SELECT - 从数据库中提取数据
- UPDATE - 更新数据库中的数据
- DELETE - 从数据库中删除数据
- INSERT INTO - 向数据库中插入新数据
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
二、📚不断学习
2.1 📘使用 NOW() 、 CURDATE()、CURTIME() 获取当前时间
1. 使用 NOW() 、 CURDATE()、CURTIME() 获取当前时间
学到这一节我有一个问题想问问大家,你们平时都是怎么样子获取时间的呢?是不是通过手表、手机、电脑等设备了解到的,那么你们有没有想过在在我们 SQL 中是怎么样获得时间的呢?
和其他的语言一样,我们的 SQL 语言也有着属于我们自己的获取时间的方式,接下来就让我带领大家一起来学习一下 SQL 语言是怎么样获取时间的吧。
在 SQL 中,我们可以通过使用 NOW()、CURDATE()、CURTIME() 来获取当前的时间
NOW()
可以用来返回当前日期和时间 格式:YYYY-MM-DD hh:mm:ssCURDATE()
可以用来返回当前日期 格式:YYYY-MM-DDCURTIME()
可以用来返回当前时间 格式:hh:mm:ss
在使用
NOW()
和CURTIME()
时,如果要精确的秒以后的时间的话,可以在()中加数字,加多少,就表示精确到秒后多少位比如
NOW(3)
就是精确到毫秒,表示为:2021-03-31 15:27:20.645
👇我们可以通过下面的示例来感受一下 NOW () 、CURDATE () 、 CURTIME () 的用法
使用 NOW()
、 CURDATE()
、CURTIME()
函数查询当前日期与时间,并用 current_datetime
、current_date
、current_time
作为结果集列名。
1mysql> SELECT NOW() AS `current_datetime`,
2 -> CURDATE() AS `current_date`,
3 -> CURTIME() AS `current_time`;
4+---------------------+--------------+--------------+
5| current_datetime | current_date | current_time |
6+---------------------+--------------+--------------+
7| 2021-03-25 16:16:30 | 2021-03-25 | 16:16:30 |
8+---------------------+--------------+--------------+
91 row in set
通过上面的示例我们可以看出 NOW()
、 CURDATE()
、CURTIME()
这三个函数有着相似处,也有着一些不同。在实际的案例中,我们可以根据不同的情况,运用不同的函数来达到自己目的。
👇我们可以通过下面的实例来感受一下 NOW () 的用法。
使用 NOW()
向记录表 records
中插入当前的时间(精确到毫秒)
1mysql> INSERT INTO `records` VALUES (NOW(3));
2Query OK, 1 row affected
3
4mysql> SELECT `now_time` FROM `records`;
5+-------------------------+
6| now_time |
7+-------------------------+
8| 2021-03-31 15:31:49.091 |
9+-------------------------+
102 rows in set
🔔 请通过下面NOW () 实例——向表中插入当前时间(精确到毫秒),去实操一下吧!
请编写 SQL 语句,向记录表 records
中插入当前的日期。
表定义: records (记录表)
列名 | 类型 | 注释 |
---|---|---|
now_time | date | 现在时间 |
- 插入记录字段类型应该和表定义字段类型相符。
样例
表内容: records (记录表)
数据表中并没有数据,
now_time
的类型为date
在运行你的 SQL 语句之后,我们会执行一些语句,对插入的数据与系统的当前日期进行比较,并将比较的结果返回
返回:
answer |
---|
true |
若返回为
true
则表明插入的当前时间正确
若返回为 false
则表明插入的当前时间错误
insert into records(now_time)
VALUES(now());
2.2 📘使用 DATE()、TIME() 函数提取日期和时间
通过上一节的学习,我们已经学会了如何在 SQL 中获取当前的时间了,这一节我们将会学习如何将时间中的代表日期的元素和代表时间的元素从时间中提取出来。
就以上一节我们获得的 current_datetime
来说吧,我们已经知道了“现在”的时间是 '2021-03-25 16:16:30'
,但是在实际运用中,不需要这么的精确,只需要其中的日期或者时间,那么我们应该怎么做呢。或许你会想到再用 CURDATE()
或者CURTIME()
把需要的日期或者时间获取出来不就行了吗。但是你有没有想过时间是会变的, CURDATE()
或者CURTIME()
都是获取当前的,而在某些情况下,时间是固定的,那么我们应该怎么办呢?接下来让我带领大家一起来学习一下如何将时间中的代表日期的元素和代表时间的元素从时间中提取出来。
👇我们可以通过下面的示例来感受一下 DATE () 、TIME () 的用法
使用 DATE()
、TIME()
函数分别将 '2021-03-25 16:16:30'
这组数据中的日期于时间提取出来,并用 date
、time
作为结果集列名。
1SELECT DATE('2021-03-25 16:16:30') AS `date`,TIME('2021-03-25 16:16:30') AS `time`;
2+------------+----------+
3| date | time |
4+------------+----------+
5| 2021-03-25 | 16:16:30 |
6+------------+----------+
71 row in set
通过上面的示例,你是否能理解 DATE()
、TIME()
的用法呢?那么让我来考考你吧。在不使用 CURDATE()
函数的情况下,通过这两节我们学到的时间函数方面的知识,将多个函数进行组合的形式来达到相同的效果呢?
如果可以的话说明你已经初步理解了这两节讲到的知识了,那么让我们一起来看看到底应该怎么做呢。
首先我们可以通过 NOW()
获得当前的时间与日期,再使用 DATE()
函数将其中的日期提取出来,具体的用法是这样子的 DATE(NOW())
,我们在把他与 CURDATE()
比较一下吧!
1mysql> SELECT DATE(NOW()),CURDATE();
2+-------------+------------+
3| DATE(NOW()) | CURDATE() |
4+-------------+------------+
5| 2021-03-25 | 2021-03-25 |
6+-------------+------------+
71 row in set
👇我们可以通过下面的实例来感受一下 DATE () 的用法。
3.1 查询课程表中课程的创建日期
使用 DATE()
函数从课程表 courses
中查询课程的名字 name
和课程创建时间 created_at
,从课程创建时间 created_at
中提取出创建课程的日期,并加以格式化,用 created_date
作为结果集列名。
1mysql> SELECT `name`, DATE(`created_at`) AS `created_date`
2 -> FROM `courses`;
3+-------------------------+--------------+
4| name | created_date |
5+-------------------------+--------------+
6| Advanced Algorithms | 2020-06-01 |
7| System Design | 2020-07-18 |
8| Django | 2020-02-29 |
9| Web | 2020-04-22 |
10| Big Data | 2020-09-11 |
11| Artificial Intelligence | 2018-05-13 |
12| Java P6+ | 2019-01-19 |
13| Data Analysis | 2019-07-12 |
14| Object Oriented Design | 2020-08-08 |
15| Dynamic Programming | 2018-08-18 |
16+-------------------------+--------------+
1710 rows in set
🔔 请通过下面DATE () 实例——查询课程表中课程的创建日期,去实操一下吧!
2.3 📘使用 EXTRACT() 函数提取指定的时间信息
前面我们已经学习了 DATE 函数和 TIME 函数,明白 DATE 返回日期, TIME 返回时间,如果我只想知道年份的信息或者小时的信息,那么该怎么解决呢?这时,我们就可以使用 EXTRACT() 函数来解决问题。
EXTRACT() 函数用于返回日期/时间的单独部分,如 YEAR
(年)、MONTH
(月)、DAY
(日)、HOUR
(小时)、MINUTE
(分钟)、 SECOND
(秒)。
语法
1SELECT EXTRACT(unit FROM date)
2FROM `table`
其中:
table 是表格名
date 参数是合法的日期表达式。
unit 参数是需要返回的时间部分,如 YEAR
、MONTH
、 DAY
、 HOUR
、MINUTE
、SECOND
等。
在一般情况下,
EXTRACT(unit FROM date)
与unit()
的结果相同。
👇我们可以通过下面的实例来感受一下 EXTRACT() 函数 的用法。
使用 EXTRACT() 函数,从课程表 courses
中查询课程的名字和创建时间的小时数,并为 created_at
起别名为 created_hour
。
1mysql> SELECT `name`, EXTRACT(HOUR FROM `created_at`) AS `created_hour`
2FROM `courses`;
3+-------------------------+--------------+
4| name | created_hour |
5+-------------------------+--------------+
6| Advanced Algorithms | 9 |
7| System Design | 10 |
8| Django | 12 |
9| Web | 13 |
10| Big Data | 16 |
11| Artificial Intelligence | 18 |
12| Java P6+ | 13 |
13| Data Analysis | 13 |
14| Object Oriented Design | 13 |
15| Dynamic Programming | 20 |
16+-------------------------+--------------+
1710 row in set
🔔 请通过下面EXTRACT() 实例——查询所有课程创建时间的小时,去实操一下吧!
请编写 SQL 语句,从课程表 courses
中查询所有课程的课程名称( name
)和课程创建时间( created_at
)的小时数,将提取小时数的列名起别名为 created_hour
。
表定义:courses(课程表)
列名 | 类型 | 注释 |
---|---|---|
id | int unsigned | 主键 |
name | varchar | 课程名称 |
student_count | int | 学生总数 |
created_at | datetime | 创建时间 |
teacher_id | int | 讲师 id |
- 查询返回列名需要与样例输出的列名大小写一致。
- 如果输入数据中存在 NULL 值,则返回 NULL。
样例
样例一
表内容 : courses
id | name | student_count | created_at | teacher_id |
---|---|---|---|---|
1 | Senior Algorithm | 880 | 2020-06-01 09:10:12 | 4 |
2 | System Design | 1350 | 2020-07-18 10:11:12 | 3 |
3 | Django | 780 | 2020-02-29 12:10:12 | 3 |
4 | Web | 340 | 2020-04-22 13:01:12 | 4 |
5 | Big Data | 700 | 2020-09-11 16:01:12 | 1 |
6 | Artificial Intelligence | 1660 | 2018-05-13 18:12:30 | 3 |
7 | Java P6+ | 780 | 2019-01-19 13:31:12 | 3 |
8 | Data Analysis | 500 | 2019-07-12 13:01:12 | 1 |
10 | Object Oriented Design | 300 | 2020-08-08 13:01:12 | 4 |
12 | Dynamic Programming | 2000 | 2018-08-18 20:01:12 | 1 |
在运行你的 SQL 语句之后,表应返回:
name | created_hour |
---|---|
Senior Algorithm | 9 |
System Design | 10 |
Django | 12 |
Web | 13 |
Big Data | 16 |
Artificial Intelligence | 18 |
Java P6+ | 13 |
Data Analysis | 13 |
Object Oriented Design | 13 |
Dynamic Programming | 20 |
样例二
表内容 : courses
id | name | student_count | created_at | teacher_id |
---|---|---|---|---|
1 | NULL | 880 | NULL | 4 |
2 | IDE | 300 | NULL | 4 |
3 | NULL | 2000 | 2018-08-18 20:01:12 | 1 |
在运行你的 SQL 语句之后,表应返回:
name | created_hour |
---|---|
NULL | NULL |
IDE | NULL |
NULL | 12 |
样例二中数值如果有 NULL 值,则会返回 NULL 值。
select name,extract(hour from created_at) as created_hour
from courses;
2.4 📘使用 DATE_FORMAT() 格式化输出日期
4.1 DATE_FORMAT() 用法
我们在 SQL 中使用 DATE_FORMAT()
方法来格式化输出 date/time。
需要注意的是 DATE_FORMAT()
函数返回的是字符串格式。
语法
1SELECT DATE_FORMAT(date,format);
其中
date
一个有效日期。
format
是 date/time 的输出格式。
4.2 DATE_FORMAT() 实例
👇我们可以通过下面的实例来感受一下 DATE_FORMAT() 的用法。
假如我们要得到 courses
表课程创建时间的月份,日期,年份,星期。
我们可以使用下面的 SQL 语句:
1SELECT DATE_FORMAT(`created_at`, '%Y %m') AS `DATE_FORMAT`
2FROM `courses`;
其中 %m 表示月份,%d 表示日期,%Y 表示年份,%w 表示星期。
执行输出结果:
1mysql> SELECT DATE_FORMAT(`created_at`, '%Y %m') AS `DATE_FORMAT`
2 -> FROM `courses`;
3+-------------+
4| DATE_FORMAT |
5+-------------+
6| 2020 06 |
7| 2020 07 |
8| 2020 02 |
9| 2020 04 |
10| 2020 09 |
11| 2018 05 |
12| 2019 01 |
13| 2019 07 |
14| 2020 08 |
15| 2018 08 |
16+-------------+
1710 rows in set (0.01 sec)
🔔 请通过下面DATA_FORMAT 实例——查询课程创建日期按‘年 月’显示,去实操一下吧!
请编写 SQL 语句,查询 courses
表,查询课程创建时间,按照 ’yyyy-MM-dd HH:mm:ss’ 的格式返回结果,返回列名显示为 DATE_FORMAT
。
表定义: courses(课程表)
列名 | 类型 | 注释 |
---|---|---|
id | int unsigned | 主键 |
name | varchar | 课程名称 |
student_count | int | 学生总数 |
created_at | date | 课程创建时间 |
teacher_id | int | 讲师 id |
查询返回列名需要与样例输出的列名大小写一致
输出格式为 yyyy-MM-dd HH:mm:ss,而不是 yyyy年-MM月-dd日 HH时:mm分:ss秒
样例
样例一:
表内容:courses
id | name | student_count | created_at | teacher_id |
---|---|---|---|---|
1 | Senior Algorithm | 880 | 2020-6-1 09:03:12 | 4 |
2 | System Design | 1350 | 2020-7-18 10:03:12 | 3 |
3 | Django | 780 | 2020-2-29 12:03:12 | 3 |
4 | Web | 340 | 2020-4-22 13:03:12 | 4 |
5 | Big Data | 700 | 2020-9-11 16:03:12 | 1 |
6 | Artificial Intelligence | 1660 | 2018-5-13 18:03:12 | 3 |
7 | Java P6+ | 780 | 2019-1-19 13:03:12 | 3 |
8 | Data Analysis | 500 | 2019-7-12 13:03:12 | 1 |
10 | Object Oriented Design | 300 | 2020-8-8 13:03:12 | 4 |
12 | Dynamic Programming | 2000 | 2018-8-18 20:03:12 | 1 |
在运行你的 SQL 语句之后,表应返回:
DATE_FORMAT |
---|
2020-06-01 09:03:12 |
2020-07-18 10:03:12 |
2020-02-29 12:03:12 |
2020-04-22 13:03:12 |
2020-09-11 16:03:12 |
2018-05-13 18:03:12 |
2019-01-19 13:03:12 |
2019-07-12 13:03:12 |
2020-08-08 13:03:12 |
2018-08-18 20:03:12 |
样例二:
表内容:courses
id | name | student_count | created_at | teacher_id |
---|---|---|---|---|
1 | Senior Algorithm | 880 | null | 4 |
2 | System Design | 1350 | null | 3 |
3 | Django | 780 | null | 3 |
4 | Web | 340 | null | 4 |
5 | Big Data | 700 | null | 1 |
6 | Artificial Intelligence | 1660 | null | 3 |
7 | Java P6+ | 780 | null | 3 |
8 | Data Analysis | 500 | null | 1 |
10 | Object Oriented Design | 300 | null | 4 |
12 | Dynamic Programming | 2000 | null | 1 |
在运行你的 SQL 语句之后,表应返回:
DATE_FORMAT |
---|
null |
null |
null |
null |
null |
null |
null |
null |
null |
null |
样例二中课程表中没有课程创建时间,所以统计结果为空。
select date_format(created_at,'%Y-%m-%d %H:%i:%s') as DATE_FORMAT
from courses;
三、🥇Summary
已经好长时间没有更新(一个月),其实这段时间,怎么说,就也是……继续努力吧!!!
最近开始重新学习SQL了,有时候也不知道应该学点什么,需要学点什么,也并没有参加什么比赛,主要是比较菜😓,希望可以自己沉淀一段时间,💪
上述内容就是此次 SQL教程(四)简单实例学习:时间函数(一)基础入门级基础入门级 的全部内容了,感谢大家的支持,相信在很多方面存在着不足乃至错误,希望可以得到大家的指正。🙇(ง •_•)ง
调整自己。不忘来时路,努力前行,找到前进的方向。
2023年第三十八期,希望得到大家的喜欢🙇
希望大家有好的意见或者建议,欢迎私信,一起加油
以上就是本篇文章的全部内容了
~ 关注我,点赞博文~ 每天带你涨知识!
1.看到这里了就 [点赞+好评+收藏] 三连 支持下吧,你的「点赞,好评,收藏」是我创作的动力。
2.关注我 ~ 每天带你学习 :各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、HTML模板 、C++、数据结构、Python程序设计、Java程序设计、爬虫等! 「在这里有好多 开发者,一起探讨 前端 开发 知识,互相学习」!
3.以上内容技术相关问题可以相互学习,可 关 注 ↓公 Z 号 获取更多源码 !
获取源码?私信?关注?点赞?收藏?
👍+✏️+⭐️+🙇