600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > MySQL数据库基础学习小终结:连接查询 表结构的修改 约束条件 MySQL与python交互

MySQL数据库基础学习小终结:连接查询 表结构的修改 约束条件 MySQL与python交互

时间:2021-12-22 11:38:13

相关推荐

MySQL数据库基础学习小终结:连接查询 表结构的修改 约束条件 MySQL与python交互

目录

一、连接查询

1、内连接

2、外连接

二、表结构的修改--alter

1、修改表名

2、修改字段名

3、修改字段类型--modify

4、添加字段

(1)添加日期字段:datetime

(2)enum字段

5、删除字段

三、约束条件

1、默认:default

2、非空:not null

3、唯一:unique key

4、主键:primary key

5、自增长:auto_increment

6、设定初始值

7、外键:foreign key

(1)创建一个A表

(2)创建一个B表

(3)外键里能够插入的数据一定是主键里面有的数据

8、删除主外键约束

(1)删除外键约束

(2)删除主键约束

(3)主外键的区别

四、Mysql与python交互

1、数据准备

2、在py文件中写入代码

3、事务

(1)提交事务:commit()

(2)手动开启事务:begin 以及 事务回滚:rollback

先分别创建两个表text和text2,并向两个表中写入一些数据

一、连接查询

1、内连接

(1)无条件连接:inner join

inner join 中只链接两个表中具有相同字段的行,不相同的字段会被省略text是主表;text2是从表。

例:select * from text inner join text2;

主表中的每一条数据都会和从表里面的所有数据匹配

(2)有条件连接:on 条件

on 后面是连接条件

例:select * from text inner join text2 on text.id=text2.id;

将两个表中id相同的连接在一起

2、外连接

(1)左连接:left join

以左表为基础,左表内容全部显示,右表没有的以null值显示

例:select * from text left join text2 on text.id=text2.id;

将相同的两表相同的id连接,以左表为基础,左表全部显示,右表中和左表相同的id显示,不相同的id则用null值显示

​​​​​

(2)右连接:right join

以右表为基础,右表内容全部显示,左表没有的以null值显示

例:select * from text right join text2 on text.id=text2.id;

将相同的两表相同的id连接,以右表为基础,右表全部显示,左表中和右表相同的id显示,不相同的id则用null值显示。

二、表结构的修改--alter

1、修改表名

alter table 原名 rename to 新名;

将text表的名字修改为new_table

2、修改字段名

alter table 表名 change 原名 新名 类型;

注意:类型一定要写,且只能对同一类型进行修改,如果将一个字段类型是int型的修改为char型则会报错。

查看表结构可以看到字段的类型将score改成math_score

3、修改字段类型--modify

语法:alter table 表名 modify 字段名 类型;

4、添加字段

alter table 表名 add 字段名 类型;

(1)添加日期字段:datetime

alter table 表名 add 字段名 datetime;

向日期字段中写入信息通过now()获取当前时间

(2)enum字段

alter table 表名 add 字段名 enum('F', 'M');(F和M是固定值,自己可以设置)

当在类型为enum的字段sex中写入数据时,数据必须是F或M,否则就会报错

5、删除字段

alter table 表名 drop 字段名;

三、约束条件

1、默认:default

例:create table 表名(id int default 2);

演示如下:

(1)创建一个名为new_one的表,并设置默认值:default 2(2)当不写id值时,则默认id值为2当写入id值时,就会按写入的id值写入

2、非空:not null

例:create table 表名(id int not null); (意思是设置id为非空值,表示写入id时不能为空)

演示如下:

3、唯一:unique key

例:create table 表名(id int unique key); (表示的意思是id中不能有重复的值,只能由唯一的值)

演示如下:

创建一个具有唯一性的表在表中写入两个相同的id值,报错

4、主键:primary key

primary key :非空+唯一,每张表只允许由一个主键

例:create table 表名(id int primary key, name varchar(20));

5、自增长:auto_increment

例:create table 表名(id int auto_increment,name varchar(20), primary key(id));

primary key(id):设置id为主键

演示如下:

(1)创建一个名为four_one的表向表中写入几个空的数据,id的值会自动从1向上增长

6、设定初始值

例:create table 表名(id int auto_increment, primart key(id))auto_increment=10;

auto_increment=10:id的值从10开始向上增长

演示如下:

(1)创建一个名为one的表向表中写入几个空的数据,id的值会自动从10向上增长

7、外键:foreign key

假设某一个字段是某个表的外键时,那么该字段必须是主键。

外键的作用:使两张表关联,保证数据的一致性和实现一级联操作。

演示如下:

(1)创建一个A表

create table A(id int primary key, name varchar(20));

(2)创建一个B表

create table B(B_id int primary key, age int, foreign key(B_id) references A(id));

foreign key(B_id):B_id是外键,有外键的是从表

references 表名(字段名):关联的是表名和字段

(3)外键里能够插入的数据一定是主键里面有的数据

添加字段:先操作主表,再去从表添加

删除数据:先删除从表,再去主表删除

8、删除主外键约束

(1)删除外键约束

先获取外键名再去删除外键约束

查看表创建语句

show create table 表名;

找到键名后,删除外键约束

alter table 表名 drop foreign key 外键名;

(2)删除主键约束

alter table 表名 A drop primary key;

如果A表还跟其他表有关联,要先删除从表的外键,再删除主表的主键。

(3)主外键的区别

主键:唯一标识,不能有重复,不能为空。

外键:是另一个表的主键。

四、Mysql与python交互

需要下载的模块:pip install pymysql

1、数据准备

创建一个名为First的数据库,并在其中创建一个名为students的表,然后向表中写入一些数据。

2、在py文件中写入代码

import pymysql# 连接数据库db_config = {"host":'localhost', # 本地用户'port':3306, # 规定是3306'user':'root','password':'', # 登录mysql的密码'db':'First' # 使用First数据库}# 建立连接的对象conn = pymysql.connect(**db_config)# 建立游标对象cur = conn.cursor()# 执行sql语句sql = cur.execute('select * from students')print(sql) # 打印接受到的数据个数print(cur.fetchall())# 关闭游标cur.close()# 关闭连接conn.close()

以上代码的运行结果:

3、事务

事物的特性:原子性,一致性,隔离性,持久性

(1)提交事务:commit()

提交事务——直正插入和修改数据,如果没有提交事务,插入和修改的数据只是临时保存,并不能存到数据库中。

演示未提交事务时出现的情况:

向数据库中写入信息

写入信息后在数据库中查看

演示提交事务时的情况

附上源码:

import pymysql# 连接数据库db_config = {"host":'localhost', # 本地用户'port':3306, # 规定是3306'user':'root','password':'', # 登录mysql的密码'db':'First' # 使用First数据库}# 建立连接的对象conn = pymysql.connect(**db_config)# 建立游标对象cur = conn.cursor()# 执行sql语句sql = cur.execute('insert into students(name,age) values("孙大圣",500)')# 提交事务mit()# 关闭游标cur.close()# 关闭连接conn.close()

(2)手动开启事务:begin 以及 事务回滚:rollback

事务回滚:返回上一步对数据进行的增、删、改等操作

演示如下:

(1)查询看事务是否开启

show variables like 'autocommit';

ON:表示事务是关闭状态,每次执行增删改查都会自动提交所操作的语句。

(2)查看数据(3)开启事务(4)插入数据并查看(5)回滚数据,再次查看数据

注意!!!一次手动开启事务,只能用一次回滚,第二次回滚无效

为了解决每次使用begin的麻烦,可以输入以下命令

开启事务:set autocommit=off;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。