2020-03-28

好der,又是新的一周过去了,时间过得真快,这周六天,东西也是相当的多了,慢慢总结一下:
这周主要讲了MySQL数据库,从现有的数据存储方式入手,思考现有了解的存储方式的优缺点,逐步引出数据库的概念,,已经数据库的分类。进而引出数据库管理系统。
下面才是重点:
MySQL:一个关系型数据库管理系统,要使用也需要配置环境变量,这里略过,详细的看图片,MySQL的核心文件有bin-命令相关文件,include-库文件,lib-头文件,share-字符集,语言等信息。对于数据库的操作,需要在连接MySQL的环境下进行指令输入,并在一行的末尾使用分号;结束,有一些基本命令:show databases-显示当前MySQL中的所有数据库,create database-创建自定义数据库,drop database-删除数据库,show create database-查看数据库创建信息,use-使用数据库,select database-查看当前使用的数据库。这些指令在dos窗口下可以使用,但是不方便查看,界面不友好,所以可以使用一些数据库管理系统的可视化工具进行操作。
进入另一个重点:数据查询()
首先了解一下,关系型数据库是以表格的形式进行数据存储,表格由行和列组成,执行查询语句返回的结果集是一张虚拟表,对原表数据无影响。首先基本查询:select 列名 from 表名;可以查询所有列,查询部分列,只要控制好输入的列名即可,select什么就是查询什么。也可以对列中的数据进行运算,算数运算符只有正常的加减乘除(+ - * /)(与Java之中不同,%在数据库中,代表占位符,并非取余运算符)。觉得表中的列名不易读时,可以在查询的时候赋予别名,语法为:列 as 列名。不想要重复数据可以去重:distinct 列名。对查询的结果进行排序,用order by,select 列名 from 表名 order by 排序列名 排序规则(asc为升序,desc为降序,默认为升序),排序可以单列排序,也可以根据多列进行排序。
条件查询:select 列名 from 表名 where 条件;。在where中,可以进行等值判断(=),不等值判断,大于,小于,大于等于,小于等于,不等于,其中,不等于有两种写法,!=和<>,两种均可。进行逻辑判断,使用and,or,not,进行与或非判断(语言有问题,但是理解相同)。区间判断 between 小值 and 大值;大小值写反了是不可以的,null值判断,is null(是空的),is not null(不是空的),枚举查询,in(值1,值2,,,值n),应用在多个并列查询时候的简写。模糊查询like,分支查询 case when else end,理解的时候像Java中的switch case default,需要注意的一点是,case分支结构会生成一个新的列。时间查询,select 时间函数 (参数列表),可以或许需要的大部分时间,详细看图片。。字符串查询 select 字符串函数(参数列表),大概类似于Java中的字符串的一系列操作,,聚合函数,select 聚合函数(列名)from 表名,,聚合函数是对多条数据的单列进行统计,返回统计后的一行结果,可以进行求总行数,求和,平均值,最大值,最小值的操作。。分组过滤查询,在分组查询后面加上过滤条件,关键字为having 过滤条件,限定查询(在分页中常用),select 列名 from 表名 limit 起始行 , 查询行,注意一点,,起始行为0。
接下来,子查询,就是讲一条查询结果作为另一条查询的条件进行emmmm套娃😂,可以作为条件判断,可以作为枚举查询的条件,也可以作为一张表。
表连接查询,语法为,select 列名 from 表1 连接方式 表2 on 连接条件。有内连接查询,inner join on,其中包括多表连接查询,左外连接查询left join on,以左表为中心,右外连接查询right join on,以右表为中心,匹配到返回结果,匹配不到返回null值。dml操作,也就是增删改操作,使用insert into,delete,update进行相关操作,其中删除中还有一条,清空,,truncate table 表名,是将整张表摧毁并按照原来的结构重建一个,这个更狠更彻底,。
下面是库表操作,对数据库的一些列操作,创建create,修改alter,删除drop,语法为 操作 table 库名。其中MySQL的数据类型有三类,数值,日期时间,字符串。
对于数据库的每一列,还有特定的约束条件,实体完整性约束中的主键约束,唯一约束,域完整性约束中非空约束,默认值约束,引用完整性约束等
下面是事务,对于不可分割的原子操作,为一个事务,操作全部成功才算成功,否则,全部不成功。事务有四个特征,ACID,分别为,原子性,一致性,隔离性,持久性。
我们还可以创建新的用户,给与权限,撤销权限,删除用户等操作,这是权限操作。为了用户操作方便,保证数据库的安全,还可以创建视图,create view 视图名 as 查询数据源表的语句,对于视图也有创建修改删除一系列操作

JDBC中别的先不谈,最重要的开发步骤,6步:加载驱动,连接数据库,获取发送SQL语句的对象,编写SQL语句并执行SQL语句,处理结果,释放资源(注意先开后关,先打开的后关闭)

这周先整理到这里,还是不全,先放图吧。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

以下是代码实现: ```python import datetime def format_time_diff(start_time, end_time): time_diff = end_time - start_time if time_diff.days > 365: return end_time.strftime("%Y年%m月") elif time_diff.days > 30: return end_time.strftime("%Y年%m月%d日") elif time_diff.days > 0: return f"{time_diff.days}天前" elif time_diff.seconds > 3600: return f"{int(time_diff.seconds/3600)}小时前" elif time_diff.seconds > 60: return f"{int(time_diff.seconds/60)}分钟前" elif time_diff.seconds > 0: return f"{time_diff.seconds}秒前" else: return "未来时间" start_time = datetime.datetime(2018, 3, 1, 9, 0, 0) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 1, 1, 9, 0, 0) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 2, 1, 9, 0, 0) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 2, 29, 8, 0, 0) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 2, 29, 9, 29, 20) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 2, 29, 9, 29, 50) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 2, 29, 9, 30, 40) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") ``` 输出结果为: ``` 2018-03-01 09:00:00 -> 2020-02-29 09:30:30: 2018年032020-01-01 09:00:00 -> 2020-02-29 09:30:30: 2020年01月01日 2020-02-01 09:00:00 -> 2020-02-29 09:30:30: 28天前 2020-02-29 08:00:00 -> 2020-02-29 09:30:30: 1小时前 2020-02-29 09:29:20 -> 2020-02-29 09:30:30: 1分钟前 2020-02-29 09:29:50 -> 2020-02-29 09:30:30: 40秒前 2020-02-29 09:30:40 -> 2020-02-29 09:30:30: 未来时间 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值