【BUAA-数据管理技术】6-数据库编程

本文内容系2024年北航软件学院数据管理技术课程课堂笔记,内容大部分取自课程PPT,少量来源于互联网,若有侵权请联系删除。文章内容如有错漏,敬请批评指正!

第四章 数据库编程

06 - 数据库编程

4.1 数据库编程 - 1

4.1.1 数据库程序开发

  • SQL有其缺点:主要用于数据查询和更新

  • 对数据的分析处理主要由数据库应用程序来完成

    • 两种形式:数据库内部应用程序、数据库外部应用程序

在这里插入图片描述

4.1.2 数据库内部编程

数据库内部程序的常见形式:存储过程、函数、触发器

存储过程
  • 由过程化SQL语句书写的过程,经编译和优化后存储在数据库服务器中,使用时只要调用即可。

  • 通常将多次重复执行的代码段编写成一个过程(procedure or function),保存在数据库中

  • 优点

    • SQL与模块化编程结合,可完成复杂业务功能
    • 创建时预编译,提高SQL执行效率
    • 位于数据库服务器上,调用时无需通过网络传输大量数据
    • 可作为安全机制加以充分利用:可防止SQL注入式的攻击
  • 创建

    CREATE PROCEDURE procedure_name (
    	[ IN | OUT | INOUT ] param_name type [ ,... ]
    # param_name: 调用时给出的参数值,必须指定数据类型。参数也可以定义输入/输出参数。默认为输入参数。
    )
    [ BEGIN ]
    	sql_statement	# 一个过程化SQL块。包括声明部分和可执行语句部分
    [ END ]
    
  • 删除与调用

    DROP PROCEDURE prodedure_name
    CALL procedure_name (param_name type [ ,... ])	# CALL方式激活存储过程的执行
    
  • 数据库提供过程化编程语言:变量、流程控制、常用数据库函数与命令…

  • 在过程化编程中嵌入SQL语句,例:

    declare v_score int;
    select score into v_score from sc where cno=55 and stuid=001;
    Set v_score=v_score+1;
    Update sc set score=v_score where cno=55 and stuid=001;
    
  • 动态SQL:根据用户输入参数和/或数据库状态,动态确定程序中的SQL语句内容

    • Prepare:组装SQL
### 关于北京航空航天大学 MySQL 数据库教程 在北京航空航天大学的教学资源中,MySQL数据库课程通常涵盖了基础概念、高级特性和实际应用案例。对于学习者而言,掌握这些内容有助于深入理解如何设计和管理高效稳定的数据库系统。 #### 1. 基础概念介绍 在教学过程中会详细介绍SQL语言及其变体如MySQL的具体语法结构[^3]。这包括但不限于数据定义语句(DDL)、数据操作语句(DML),以及事务控制(TCL)等内容的学习。例如,在创建表时可以设置外键约束来维护参照完整性: ```sql FOREIGN KEY(classid) REFERENCES tbl_bookclass(classid)[^1]; ``` 此命令确保`classid`字段中的每一个值都必须存在于被引用的`tbl_bookclass`表内对应的列里。 #### 2. 高级特性探讨 除了基础知识之外,还会涉及到更复杂的主题比如存储过程、函数、视图等。特别是关于触发器的应用场景分析,能够帮助学生更好地理解和运用事件驱动编程的思想去解决实际问题[^2]。 #### 3. 实战项目练习 为了巩固所学的知识并提高动手能力,学校可能会安排一些基于真实世界的模拟项目作为实践环节的一部分。以图书馆管理系统为例,学员们可以通过构建这样一个完整的应用程序来熟悉整个开发生命周期内的各个环节,从需求调研到最终部署上线。 ```python import mysql.connector def connect_to_db(): connection = mysql.connector.connect( host="localhost", user="root", password="password", database="library" ) return connection if __name__ == "__main__": conn = connect_to_db() cursor = conn.cursor() query = "SELECT * FROM books LIMIT 5;" cursor.execute(query) results = cursor.fetchall() for row in results: print(row) cursor.close() conn.close() ``` 上述Python脚本展示了连接至本地运行着名为“library”的MySQL实例,并执行简单查询获取前五条记录的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值