|
<
Python进修日记
RBHGO的主页欢送存眷
温馨提醒:创做不容易,若有转载,说明出处,感激配合~
目次
文章目次
Python进修日记15课 - 初识数据库
数据库∶数据的仓库(散集天),它打点了数据持久化战数据办理的成绩。
持久化—>将数据从内乱存转移到硬盘(能够恒久保留数据的存储介量)。
进修数据库,起首固然是准确装置、设置数据库情况,再道然后。本文利用的是win10下的MySQL8的版本,假如您下载设置完成,给您的超等办理员账号设好了暗码,那便让我们开端吧。
- 干系型数据库(本文以MySQL为例):
干系数据库特性。
- 实际根底:干系代数。
- 详细表象:用两维表(有止战列)构造数据。
- 编程言语:构造化查询言语(SQL)
- 编程言语:SQL -> Structured Query Language -> 构造化查询言语
SQL是一种特地用去取数据库通讯的言语(没有分巨细写)
我们凡是能够将SQL语句分为四类:
- DDL (数据定义言语) —> 创立、删除、修正各类工具 —> create / drop / alter
- DML (数据操作言语) —> 插进、删除、更新(修正)数据 —> insert / delete / update
- DQL (数据查询言语) —> 检索(查询)数据 —> select
- DCL (数据掌握言语) —> 授与大概召回用户权限 —> grant / revoke
- 非干系型数据库:
- NoSQL —> No SQL —> No, SQL —> Not Only SQL
- NewSQL —> 保留数据的方法能够完整差别于传统的干系型数据库,
可是许可利用干系型数据库的编程言语操作/获得数据。
数据库根本操作
登录(进进)Mysql
1.PowerShell: mysql -u root -p —> 输进暗码
- 进进指定命据库 mysql -u 用户名 -h Ip所在 -p —> 输进暗码
- 也便是道毗连本人的数据库借能够写成:
mysql -u root -h 127.0.0.1(localhost) -p —> 暗码
2.MySQL Command Line Client-Unicode: 间接暗码进进
检察数据库:
- -- 检察一切的数据库
- show databases;
-
- -- 检察一切字符散(编码方法)
- show character set;
-
- -- 检察一切的校正划定规矩(排序)
- show collation;
-
- -- 检察一切的引擎
- show engines;
复造代码 创立数据库:
创立数据库时,我们经由过程default charset utf8指定了数据库默许利用的字符散,举荐利用该字符散,由于utf8可以撑持国际化编码。假如未来数据库顶用到的字符能够包罗相似于Emoji如许的图片字符,也能够将默许字符散设定为utf8mb4(最年夜4字节的utf-8编码)。
- create database database_name default charset utf8mb4;
复造代码 删除数据库:
- drop database if exists database_name;
复造代码 温馨提醒:删库之前请三思然后止!!!
获得数据库协助:
讯问数据库操作的操作:成绩前减 ?
- -- 检察show号令的协助
- ? show
- -- 检察数据库的范例
- ? data types
- -- 数据范例bigint的怎样利用,范畴
- ? bigint
- -- 浮面数据范例deciaml
- ? deciaml
复造代码 切换数据库
切换到要操作的数据库(施行操作语句之前皆得先切换到要操作的数据库中):
温馨提醒:前期最简单遗忘的便是施行切换到要操作的数据库中,和语句结尾的;号,曲到;之前的语句换止也不妨,碰到分号才算是一段SQL语句的完毕。
数据库中的数据范例:
创立好一个数据库,为的是持久化数据,存进数据是必定没有是间接的进库便完事了。我们需求正在数据库中创立两维表,将特定的数据放正在响应的表中,而创立表的工夫,我们需求给表的每列皆给定命据范例,免得数据录进的毛病,制止没必要要的费事,以是记着数据范例很主要。
整数:int(integer) / bigint / smallint / tinyint —> ussigned(无标记 -> 非背) int范畴 ---> -2^31 —— 2^31 - 1 ---> ussigned 0 —— 2^32 - 1 bigint范畴 ---> -2^63 —— 2^63 - 1 ---> ussigned 0 —— 2^64 - 1 smallint范畴 ---> -2^15 —— 2^15 - 1 ---> ussigned 0 —— 2^16 - 1(65535) tinyint范畴 ---> -2^7 —— 2^7 - 1 ---> ussigned 0 —— 2^8 - 1(255) 小数:float / double / decimal 倡议利用 decimal ---> deciaml(10,2) —> 共有10位保存2位小数 工夫日期:time / date / datetime / timestamp(工夫戳)
字符串:char / varchar 年夜工具:longtext / longblob char / varchar longtext / longblob(两进造年夜工具) —> 4G —> 放资本途径(URL) 布我型:boolean boolean ---> tinyint(1) —> 0 / 1 枚举(Mysql独占):emum
信任各人鄙人载MySQL数据库的工夫,皆下载了MySQL自带的功用强大的Workbench;出下也不妨,回到装置法式面击界里中Quick Action下蓝色的Reconfigure把它装置一下便止,正在Workbench下写SQL语句比正在号令止中舒适很多(便念我们写Python正在Pycharm中写一样)正文用--。
表的根本操作
DDL(数据定义言语 取 DML(数据操作言语)
检察数据库中的表:
创立两维表
枢纽字create
以下的创立表的SQL语句用门生表为例
- create table tb_student
- (
- stu_id int unsigned not null comment '教号',
- std_name varchar(10) not null comment '姓名',
- stu_sex char(1) default 'M' not null comment '性别',
- stu_birth date comment '诞生日期',
- primary key (stu_id)
- ) engine=innodb;
复造代码
- 主键(primary key):可以独一肯定一笔记录的列
- 中键(foreign key):中去的主键(其他表的主键)
显现表构造:
删除表:
枢纽字delete,drop
- 1.drop table `tb_student`;(普通没有如许利用)
-
- 2.delete from `tb_student` where `stu_id`=3923;(删除表中的指定止,带where前提)
-
- 3.truncate table `tb_student`;(截断不成建复,利用请稳重,别道是看我那里明白的)
复造代码 更新表:
枢纽字update
更新表必然记得带where前提,不然会对齐表停止跟新战删表一样是需求三思然后止的操作。
- update `tb_student` set `stu_addr`='四川成皆',`col_id`=2
- where `stu_id`=3755;
复造代码 修正表:
枢纽字alter
- 增加一个列:
- alter table `tb_student` add column `stu_address` varchar(100);
- 删除一个列:
- alter table `tb_student` drop column `stu_sex`;
- alter table `tb_student` add column `stu_sex` boolean default 1;
- 修正一个列(modify -> 只改范例,change -> 修正类名):
- alter table `tb_student` modify column `stu_sex` char(1) default 'M';
- alter table `tb_student` change column `stu_sex` `stu_gender` char(1) default 'F';
- 增加分外的束缚前提:
- - 增加check束缚,门生的性别只为'M'或'F':
- alter table `tb_student` add constraint `ck_student_gender`
- check (`stu_gender`='M' or `stu_gender`='F');
- - 增加独一性束缚,教院的名字是具有独一性的:
- alter table `tb_college` add constraint `uk_college_name`
- Unique (`col_name`);
-
- 删除束缚:
- alter table `tb_student` drop constraint `ck_student_gender`;
复造代码 插进数据
枢纽字insert
- 背门生表写进数据:
- insert into `tb_student` values (3016, 'RBHGO', '1999-11-1', '慕僧乌', 'M');
- insert into `tb_student` values (1001, '金轮', '1983-8-13', '芜湖', 'M');
- 一次写进多条(能够只录进念录进的数据,挨次正在此能够变更):
- insert into `tb_student` (`stu_name`, `stu_id`, `stu_gender`) values
- ('小六子', '1006', 'M'),
- ('两麻子', '1002', default),
- ('九妹', '1009', 'F');
复造代码- 按照表的附属干系(干系的重数),正在多的一圆成立具有束缚前提的列(列的范例要连结分歧):
- alter table tb_student add column col_id int unsigned;
- alter table tb_student add constraint fk_student_col_id foreign key (col_id)
- references tb_college (col_id);
复造代码 温馨提醒:成立束缚能够间接正在建表时便写,可是让建表语句看起去愈加痴肥,以是小我私家更喜好正在修正表时操作。
设想表:
顺手建一个表能够不用设想,可是正在大致量的项目中,假如我们念将我们的表建得又快又好,提早画图;如许我们就能够愈加曲不雅天成立数据库中需求的表,需求留意的便是表取表之间能否具有的干系。(固然Workbench撑持画图的那项功用)
- ER图 —> Entity Relationship Diagram
真体:矩形框 —> 表
属性:椭圆框 —> 列(字段)
干系:菱形框
~ 干系的重数:一对一(1:1)、一对多(1:n)、多对多(m:n 普通需求中心表去停止保护)
- EER图(物理模子)—> Extended ER图
弄好EER图经由过程正背工程(forward engineer) —> 间接天生表大概建表的SQL语句,
写好建表的SQL语句经由过程顺背工程(reverse engineer) —> 天生EER图
查询(搜刮)表:
上面查询SQL语句的根本流程,也是我正在分享数据库常识的工夫念重面分享的内乱容,假如您有喜好的话,请存眷我的下一篇文章。
- select ..., ..., ... as ..., ... as ...
- from ... where ... and... or...
- group by .....
- having ......
- order by ...... asc / desc
- limit ... offset ...
复造代码 其他内乱容
范式实际
范式实际是设想干系型数据库中两维表的指点思维。
- 第一范式:数据表的每一个列的值域皆是由本子值构成的,不克不及够再朋分。
- 第两范式:数据内外的一切数据皆要战该数据表的键(主键取候选键)有完整依靠干系。
- 第三范式:一切非键属性皆只战候选键有相干性,也便是道非键属性之间该当是自力无闭的。
数据的完整性战分歧性
- 完整性:
- 真体完整性 —> 主键 / 独一索引
- 参照完整性 —> 中键
- 范畴完整性—>数据范例、范例少度、非空束缚、默许值束缚、查抄束缚
- 分歧性:事件 —> ACID特征 / 事件断绝级别
- 开启:start transaction / begin
- 提交:commit
- 回滚:rollback
总结
MySQL 最早是由瑞典的 MySQL AB 公司开拓的一个开放源码的干系数据库办理体系,该公司于2008年被昇阳微体系公司(Sun Microsystems)收买。正在2009年,甲骨文公司(Oracle)收买昇阳微体系公司,因而 MySQL 今朝也是 Oracle 旗下产品。
MySQL 正在已往因为机能下、成本低、牢靠性好,曾经成为最盛行的开源数据库,因而被普遍天使用于中小型网站开拓。
进修数据库的常识是很有须要的它的呈现便是由于打点以下成绩
(1).完成数据同享,数据完成会集掌握。 (2).削减数据的冗余度,而且简单扩大。 (3).数据的自力性。 (4).团体数据构造化。 (5).数据分歧性战可保护性,以确保数据的宁静性战牢靠性,和毛病规复。
正在我的分享中,以SQL语句查询为主,晨背数据阐发标的目的,假如您有喜好请存眷我。
感激进修伴随,您的面赞,攻讦便是我更新的动力
免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作! |
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
|