一、笔记说明
- 本博客专栏《Python数据库基础》的所有笔记均为.py格式文件,复制后均可无误执行(注意修改文件路径,每个人的工作区不一样)。但鉴于数据库的特殊性,很多代码需要新建相同的本地数据库,这很耽误时间且对学习意义不大,建议对数据库类代码以借鉴为辅,自我实践为主。
- 对数据库代码,请在Ubuntu18.04系统命令行下进行实践,可确保代码无误。《Python数据库基础》中SQL语言的编写标准是按照MySQL进行的,另外,本专栏还包含对Redis和mangoDB的基础操作介绍。
- 代码运行环境Python3.7.9,建议使用Pycharm2020.1作为编辑器,使用Anaconda3作为包管理器。
二、代码部分
print("1.表结构:"
"1.1查看表结构:desc [表单名称]"
"1.2重命名:alter table rename to [表单名称],在使用该命令之前,需要打开要重命名的表单"
"1.3修改表单的字段(即修改表单中的数据变量类型/大小/名称等信息):alter table change [要修改的数据名称][修改后的名称][修改后数据类型]"
"1.4仅修改表单某数据的类型:alter table [表单名称] modify [要修改的数据名称][修改后的数据类型]"
"1.5添加字段:alter table [表单名称] add [column] [要修改的数据名称][修改后的数据类型]"
"1.6删除字段:alter table [表单名称] drop [column] [要修改的数据名称]"
"注:若要删除主键/外键,可以只写drop primary key/foreign key [主/外键名],不加要修改的数据名称"
"若要添加外键,命令为:alter table [表单1名称,主表名称] add [column] constraint [约束名称/外键名称] foreign key(表单1对应数据名称) references [表单2名称](表单2对应数据名称))"
"若要添加主键,命令为:alter table [表单1名称,副表名称] add [column] constraint [约束名称/外键名称] primary key(表单1对应数据名称) references [表单2名称](表单2对应数据名称))")
print("2.约束条件:用于限制数据类型的值类型,不满足关键字条件,报错"
"2.1关键字:"
"default[默认] 注:指定默认值,default [默认值]"
"not null[非空] 注:值不可为空,default也不行"
"unique key[唯一] 注:不可输入完全重复的数据或数据组"
"auto_increment[自增长] 注:相当于链表,一般用于主键"
"且默认每次输入时,有主键属性字段的数据仅增长1,可设置增长大小:set @@auto_increment_increment=[每次要增加的数据位数量]"
"若第一次数据id=1,name=“njsd”,第二次输入时,id=2(自增),name=“kla”"
"primary key[主键] 注:体现唯一性,相当于非空+唯一,主要的,必须存在的"
"foreign key[外键] 注:保持数据一致性;我有的你有,你没有我也没有:外键设置要成对出现;为两个表单添加关联;"
"如:表单1.create table a(id int primary key,age int(3));"
"表单2.create table b(id int primary key,age int(3),foreign key (id) references a(id));"
"即:表单1要设置为主键的字段添加primary key,表单2对应字段也添加primary key,但区别于表单1,要在字段声明语句最后写"
"foreign key ([表单2的对应外键字段名称]) reference key [主键表单名称]([主键表单内主键字段名称])"
"表单2中的id字段,只能添加表单1中的id字段中已有的数据。表单1中的id字段作为被参照的数据, 不能被修改和删除")
print("3.表关系:"
"3.1对应关系:"
"3.1.1一对一:用外键将两个表单的相同主键关联,参照2.1的外键举例;"
"注:两个表的主键字段数据含义相同,名称相同"
"3.1.2多对一:用外键将两个表单的不同主键关联;"
"注:两个表的主键字段数据含义完全不同,名称也不相同,且两表单的字段间包含数据关联性或为有相同含义的数据(比如包含关系),故此一对多"
"3.1.3多对多:需要创建中间表关联其他两个表,实现两个表单的关联,设置联合主键;类似于标准C语言的结构体;"
"中间表包含3部分,中间表单关联主键表单(一个变量),中间表单关联外键表单(另一个变量),关联中间表单的两个变量;"
"如:表单1[要关联的父类表]:create table cours(cours_id int primary key auto_increment,cours_name varchar(20) not null );"
"表单2[要关联的子类表]:Create table student(s_id int primary key auto_increment,s_name varchar(20) not null);"
"表单3[中间连接表]:"
"create table middle(s_id int, #用来记录表单2的要关联变量id"
"cours_id int, #用来记录表单1的要关联变量id"
"primary key(s_id,cours_id), # 联合主键,即关联前面两个映射变量s_id和cours_id"
"foreign key(s_id) references student(s_id), # 使s_id关联表单1的id字段"
"foreign key(cours_id) references cours(cours_id)); # 使cours_id关联表单2的id字段"
"注:语句关键部分为设置联合主键的方式,primary key([表单1],[表单2])")
print("4.MySQL临时表:"
"4.1创建临时表:create view [临时表名称] as select from [目标表单名称/查询结果]"
"如:create view stu_2 as select stu.name from stu join data on data.d_id=stu.id"
"注:若是对一个表单创建临时表,源表单更改,临时表更改:且临时表自己无法修改,只可以添加和删除,临时表是只读的")
三、转载说明
- 本文内容完全原创,文章完成时间2021.3.19。
- 若要转载本文,请在转载文章末尾附上本文链接:https://blog.csdn.net/qq_35772105/article/details/115005421
- 本文代码部分唯一MD5:44F9079A1070C252095526FD8B47D4B6。