(0)摘要
# 课程内容
(1)DML命令
(2)DQL命令
(3)DCL命令
(4)约束关系
(5)在 python 中操作数据库---pymysql
# HQU
# 对于下面的操作,同学们只需要知道能做些什么,完成什么需求即可。最关键的还是数据库的基础理论(即老师所讲述的基础理论知识),虽然看着干燥乏味,但这却决定各位今后能走多远。而对于 MySQL等工具,在真正上手项目后,很容易就掌握了。
(1)DML 命令
# (1)添加数据_INSERT
1)给指定字段添加数据
2)给全部字段添加数据
3)批量添加数据
# (2)DML 修改数据
1)修改指定位置的数据
2)修改所有行的数据
# (3)DML 删除数据
1)删除指定位置的行。
2)删除整个表
#
(2)DQL 命令
# (1)查询操作
1)基本查询
设置别名,直接给格式,自己尝试。
格式 select 字段1[as 别名], 字段2[as 别名] from 表名;
去除重复记录,也直接给格式。这里需要说的是 字段列表说明可以有多个字段一起,当然,我们只用一个也是可以的。
select distinct 字段列表 from 表名;
2)条件查询_where
给出各种支持的条件查询,自己尝试即可。
3)聚合函数,太简单自己看看就知道了
代码示例。
4)分组查询,注意下面的语法即可。
其实 where 和 having 都是一样的,只是优先级的不同。只需要知道,having 是执行了条件查询之后才用的。(毕竟两个 whrere,怎么知道按谁的来?所以才有 having 做区别),如下表所示。
体会下两个语句的差别。实际上,前面的 gender 就是列出来分组的依据,让返回结果更容易理解,也更符合阅读习惯,多用就会了。count(*) 就是多少人的意思,比如下面有 4 个。然后根据性别分组,那么就是计算女性有几个,那么此时 count(*) 女性的就是 2 ,同理男生也是 2。
那么 having 和 where 的区别,
5)排序查询,太简单不讲,记住默认是 asc 即可。
# 如果有不明白的知识点,需要示例的话,请留言更新~~
(3)DCL 命令_自己测试看下就行
# (1)管理用户
# (2)权限控制
# 如果有不明白的知识点,需要示例的话,请留言更新~~
⭐(4)约束关系
# (1)基本概念
# (2)开始前的准备_可见是个空表~~~
假设我们现在创建了一个如下的表结构。那么我们可以使用 desc 命令查看下表结构信息,这里需要讲解下,primary key 是主键的意思,auto_increment 是自增的意思,一般只有主键需要自增(因为主键是一行的唯一标识)。not null 的意思是,当前设置的字段是不允许为空的。其余的解释见基础概念。
# (3)我们测试一下约束的玩法。
1)default
2)check
3)unique,注意回顾表结构!!!别等等看不懂下面啥意思了
⭐4)外键约束,其他自己玩
假设当前我们有两个表,其大致表中内容如下所示。
那么我们简单的创建一下上面的表,表结构定义如下:
员工表的数据如下:
部门表的数据
创建外键的方式有如下两种:
第一种: 是在建表的时候直接添加外键,形如以下格式,实际上就是 stu 表的depart_id 字段与 dept 表的 id 值关联起来。
create table stu( id int primary key auto_increment, name varchar(10) not null, foreign key depart_id references dept(id) );
第二种: 如果已经创建好了表,但是想要添加外键,那么写法如下:
alter table stu add constraint fk_stu_dept_id foreign key(depart_id) references dept(id);
实战一下:
那么实际上,想要删除的话是可以的,但是需要指定外键的删除方式,比如说我删了 dept 表的某个 id,那么对应 emp 表里面的 dept_id 该怎么办,是整个删除还是置为 null?这就需要指定删除方式了。直接给出相应例子。
自己测试一下:
#
(5)在 python 中操作数据库---pymysql
-------------------------------------------------------------------------------------------------------------------------
由于本人喜欢现场 coding 的恶习,影响了大家上课的体验。在这里和大家说声抱歉 。虽说也有点紧张和怯场,但是该学的知识,博客里面还是要补的,请大家务必多看,多练习,最好和我一样将所学知识,写成博客(就算是小号)。博客无所谓用什么,好用就行。
-------------------------------------------------------------------------------------------------------------------------
# (1)在 python 中操作数据库
1)具体的笔记如下:
(1) 安装 pymysql -> pip install pymysql or -> pip install pymysql -i 清华源 (2) 连接数据库 db = mysql.connect(host=主机号(一般是 localhost), user=mysql的账号, password=mysql的密码, database=你的数据库名称, port=3306) (3) 创建游标, 所谓游标,你可以理解为一个指针地址,用来写数据用的 cur = db.cursor() (4) 创建表语句——----> 建议加一句 cur.execute("""drop table if exists Stu""") 1) 假设我们创建如下的表结构,那么我们用 三引号 将语句引起来 create_tables = """create table Stu( id int primary key auto_increment, name varchar(10) not null, gender varchar(1) )""" 2) 之后,我们执行该语句,查看数据库就知道创建成功了 cur.execute(create_tables) (5) 向表中插入数据 1) 形如以下格式 insert_sql = """insert into Stu(id, name, gender) value(%s, %s, %s)""" 2) 插入的元组 value = (2, 'lolo', '男') 3) 执行插入操作 cur.execute(insert_sql, value) 4) 一定记得提交,否则表内容无变化 db.commit() (6) 查询表中数据 query_sql = "select * from Stu" # 查询语句 cur.execute(query_sql) # 执行 results = cur.fetchall() # 由 cur.fetchall() 获得返回结果,是一个元组 for i in results: id = i[0] name = i[1] gender = i[2] 记得关 db.close() (7) 更新、删除都和前面的相同,记得 db.commit() 提交数据即可。
# (2)数据库的 orm 操作,操作数据库。
1)我们将会在 django 演示,如何利用 orm 操作来创建数据库,并且执行 crud 操作。所谓 orm 操作,实际上是建立了数据库系统和面向对象程序设计的一个映射,相当于这些数据库的语句和细节对我透明,我只需要使用相应的 api 就能够实现想要的操作了。如果可能的话,我还会教大家封装 orm 操作。【api 其实是接口的意思,你可以理解为,我通过他能干些什么,比如我通过微信可以聊天,微信对我来说就是 api,只是传参是我发的消息】
即将更新~~
#