MySQL 数据库_03DML/DQL/DCL命令/python中操作数据库(有补充)

(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,只是传参是我发的消息】

即将更新~~


#

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值