网站开发报价单.docwordpress 应用模板下载
web/
2025/10/2 14:09:59/
文章来源:
网站开发报价单.doc,wordpress 应用模板下载,个人在百度上发广告怎么发,建设银行 网站无法打开文章目录 版权声明准备#xff1a;MYSQL数据库数据库简介数据库分类数据库管理系统SQL语句关系型数据库中核心元素MySQL环境搭建Mysql数据类型数据完整性和约束MYSql基本操作登录和退出数据库命令数据库基本操作命令数据表基本操作命令数据表结构修改命令表数据操作命令Mysql查… 文章目录 版权声明准备MYSQL数据库数据库简介数据库分类数据库管理系统SQL语句关系型数据库中核心元素MySQL环境搭建Mysql数据类型数据完整性和约束MYSql基本操作登录和退出数据库命令数据库基本操作命令数据表基本操作命令数据表结构修改命令表数据操作命令Mysql查询视图事务数据库设计三范式 Python连接MySQL数据库Python连接MySQL数据库演示演示sql库查询操作演示增删改操作演示 SQL注入语句参数化演示 版权声明
本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明所有版权属于黑马程序员或相关权利人所有。本博客的目的仅为个人学习和交流之用并非商业用途。我在整理学习笔记的过程中尽力确保准确性但无法保证内容的完整性和时效性。本博客的内容可能会随着时间的推移而过时或需要更新。若您是黑马程序员或相关权利人如有任何侵犯版权的地方请您及时联系我我将立即予以删除或进行必要的修改。对于其他读者请在阅读本博客内容时保持遵守相关法律法规和道德准则谨慎参考并自行承担因此产生的风险和责任。本博客中的部分观点和意见仅代表我个人不代表黑马程序员的立场。
准备MYSQL数据库
数据库简介
数据库就是用户计算机上的一些具有特殊格式的数据文件的集合.
数据库的特点:
持久化存储读写速度极高保证数据的有效性对程序支持性非常好容易扩展
数据库分类
关系型数据库非关系型数据库 关系数据库是指采用了关系模型来组织数据的数据库简单来说关系模型指的就是二维表格模型 关系形数据库 MySQL采用了双授权政策它分为社区版和商业版由于其体积小、速度快、总体使用成本低尤其是开源一般中小型网站的开发都选择MySQL作为网站数据库。
常见的关系型数据库
oracle : 银行,电信等项目ms sql server在微软的项目中使用sqlite轻量级数据库主要应用在移动平台mysqlweb时代使用最广泛的关系型数据库。 非关系型数据库
非关系型数据库又被称为NoSQLNot Only SQL )意为不仅仅是SQL对NoSQL 最普遍的定义是“非关联型的”强调Key-Value 的方式存储。
数据库管理系统
数据库管理系统 Database Management System简称DBMS是为管理数据库而设计的软件系统。包括三大部分构成。 数据库文件集合主要是一系列的数据文件作用是存储数据。数据库服务器主要负责对数据文件以及文件中的数据进行管理。数据库客户端主要负责和服务端通信向服务端传输数据或者从服务端获取数据。
SQL语句
SQL(Structured Query Language)是结构化查询语言是一种用来操作RDBMS的数据库语言。当前几乎所有关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库。Relational Database Management System ——关系型数据库管理系统RDBMS是专门用来管理关系型数据库的系统.
关系型数据库中核心元素 MySQL环境搭建 centos7环境请参考 Centos7安装mysqllinux下安装MySQL上linux下安装MySQL Ubuntu20配置Mysql常用操作 客户端建议使用Navicat有关安装和使用教程推荐网络教程不再赘述
Mysql数据类型
数据类型详解【上】数据结构详解【下】
数据完整性和约束
数据完整性是指数据库中存储的数据遵循预定义的规则和约束。它确保数据的准确性、一致性和有效性并防止无效或不一致的数据进入数据库。
MySQL中实现数据完整性的常见方法 主键约束Primary Key Constraint通过在表中定义一个唯一标识符字段作为主键确保每条记录都具有唯一的标识。主键可以由一个或多个字段组成。这样可以防止插入重复的数据。 唯一约束Unique Constraint通过在表的字段上定义唯一约束确保该字段中的值在整个表中是唯一的。与主键不同的是唯一约束可以允许空值。 非空约束Not Null Constraint通过在表的字段上定义非空约束确保该字段中的值不能为空。这样可以防止插入空值或缺失值。 外键约束Foreign Key Constraint通过在表之间建立关联定义外键约束来维护数据之间的关系。外键约束要求参考表中的值必须存在于主表中的相关字段中。这样可以确保数据的一致性和引用完整性。 检查约束Check Constraint通过在表的字段上定义检查条件限制该字段中的值必须满足指定的条件。这样可以确保数据的有效性和一致性。 约束 是保证数据的完整性和一致性。把性别字段设置为default “保密”, 当不输入张三性别信息时,依然用”保密”保证张三信息的完整 约束可参阅约束详细讲解
MYSql基本操作 登录和退出数据库命令
命令作用mysql -u用户名-p密码连接数据库exit / quit / ctrl d退出数据库select version();查看版本信息select now();查看时间
数据库基本操作命令
命令作用示例show databases;查看所有数据库show databases;select database();查看当前使用的数据库select database()create database 数据库名 charsetutf8;创建数据库create database python charsetutf8;use数据库名;使用数据库use python;drop database 数据库名;删除数据库-慎重drop database python;
数据表基本操作命令
命令作用show tables;查看当前数据库中所有表\desc 表名;查看表结构show create table;表名查看表的创建语句-详细过程
数据表结构修改命令
命令作用mysal -u用户名 -p密码连接数据库exit / quit / ctrl d退出数据库select version();查看版本信息select now();查看时间
表数据操作命令 修改查询数据 删除数据
Mysql查询
数据库基础篇
视图
视图
事务
https://yuanyou.blog.csdn.net/article/details/124534629
数据库设计三范式
数据库的设计规范【上】-1~3范式和反范式化范式设计关系数据库时遵从不同的规范要求设计出合理的关系型数据库这些不同的规范要求被称为不同的范式 各种范式呈递次规范越高的范式数据库冗余越小。三范式 第一范式1NF: 强调的是列的原子性即列不能够再分成其他几列。第二范式2NF: 满足 1NF另外包含两部分内容一是表必须有一个主键二是非主键字段 必须完全依赖于主键而不能只依赖于主键的一部分。第三范式3NF: 满足 2NF另外非主键列必须直接依赖于主键不能存在传递依赖。即不能存在非主键列 A 依赖于非主键列 B非主键列 B 依赖于主键的情况。
Python连接MySQL数据库
Python连接MySQL数据库
pymysql使用步骤 安装PyMySQL库 sudo pip3 install pymysql导入PyMySQL库在Python脚本中导入PyMySQL库 import pymysql建立数据库连接使用pymysql.connect()函数建立与MySQL数据库的连接。 connection pymysql.connect(hostlocalhost,useryour_username,passwordyour_password,databaseyour_database_name)创建游标对象 cursor connection.cursor()执行SQL语句使用游标对象的execute()方法执行SQL语句。 sql SELECT * FROM table_name
cursor.execute(sql)获取结果使用游标对象的fetchall()或fetchone()方法获取执行SQL语句后的结果。 fetchall()返回所有结果而fetchone()返回单条结果。 results cursor.fetchall()
for row in results:print(row)提交事务和关闭连接在完成所有数据库操作后需要提交事务以保存更改并关闭数据库连接。
connection.commit()
connection.close()演示
演示sql库
-- 创建 京东 数据库
create database jing_dong charsetutf8;-- 使用 京东 数据库
use jing_dong;-- 创建一个商品goods数据表
create table goods(id int unsigned primary key auto_increment not null,name varchar(150) not null,cate_name varchar(40) not null,brand_name varchar(40) not null,price decimal(10,3) not null default 0,is_show bit not null default 1,is_saleoff bit not null default 0
);-- 向goods表中插入数据insert into goods values(0,r510vc 15.6英寸笔记本,笔记本,华硕,3399,default,default);
insert into goods values(0,y400n 14.0英寸笔记本电脑,笔记本,联想,4999,default,default);
insert into goods values(0,g150th 15.6英寸游戏本,游戏本,雷神,8499,default,default);
insert into goods values(0,x550cc 15.6英寸笔记本,笔记本,华硕,2799,default,default);
insert into goods values(0,x240 超极本,超级本,联想,4880,default,default);
insert into goods values(0,u330p 13.3英寸超极本,超级本,联想,4299,default,default);
insert into goods values(0,svp13226scb 触控超极本,超级本,索尼,7999,default,default);
insert into goods values(0,ipad mini 7.9英寸平板电脑,平板电脑,苹果,1998,default,default);
insert into goods values(0,ipad air 9.7英寸平板电脑,平板电脑,苹果,3388,default,default);
insert into goods values(0,ipad mini 配备 retina 显示屏,平板电脑,苹果,2788,default,default);
insert into goods values(0,ideacentre c340 20英寸一体电脑 ,台式机,联想,3499,default,default);
insert into goods values(0,vostro 3800-r1206 台式电脑,台式机,戴尔,2899,default,default);
insert into goods values(0,imac me086ch/a 21.5英寸一体电脑,台式机,苹果,9188,default,default);
insert into goods values(0,at7-7414lp 台式电脑 linux ,台式机,宏碁,3699,default,default);
insert into goods values(0,z220sff f4f06pa工作站,服务器/工作站,惠普,4288,default,default);
insert into goods values(0,poweredge ii服务器,服务器/工作站,戴尔,5388,default,default);
insert into goods values(0,mac pro专业级台式电脑,服务器/工作站,苹果,28888,default,default);
insert into goods values(0,hmz-t3w 头戴显示设备,笔记本配件,索尼,6999,default,default);
insert into goods values(0,商务双肩背包,笔记本配件,索尼,99,default,default);
insert into goods values(0,x3250 m4机架式服务器,服务器/工作站,ibm,6888,default,default);
insert into goods values(0,商务双肩背包,笔记本配件,索尼,99,default,default);
查询操作演示
# 导入pymysql包
import pymysql# 创建连接对象
conn pymysql.connect(host192.168.1.30, port3306,userroot, passwordmysql,databasejing_dong, charsetutf8)
# 获取游标对象
cs conn.cursor()# pymysql完成数据的查询操作
sql select name from goods;
cs.execute(sql)
content cs.fetchone()print(content)
content cs.fetchall()
print(content)# 关闭游标和连接
cs.close()
conn.close()
增删改操作演示
# 导入pymysql包
import pymysql# 创建连接对象
conn pymysql.connect(host192.168.1.30, port3306, userroot, passwordmysql, databasejing_dong, charsetutf8)
# 获取游标对象
cs conn.cursor()# 增加数据
sql insert into goods values(0,惠普战x 2023款 15.6英寸笔记本,笔记本,惠普,4999,default,default)
cs.execute(sql)
# 删除数据
sql delete from goods where id21
cs.execute(sql)
# 修改数据
sql update goods set name天选 15.6寸笔记本 where id1;
cs.execute(sql)# pymysql完成数据的查询操作
sql select * from goods;
# for循环显示数据
cs.execute(sql)
content cs.fetchall()
for i in content:print(i)# 提交操作
conn.commit()# 关闭游标和连接
cs.close()
conn.close()SQL注入 SQL注入用户提交带有恶意的数据与SQL语句进行字符串方式的拼接从而影响了SQL语句的语义最终产生数据泄露的现象。 避免SQL注入的常见方法 使用参数化查询Prepared Statements参数化查询是使用占位符如?或%s代替直接将用户输入嵌入到SQL查询语句中。数据库引擎会将用户输入作为参数处理避免了注入攻击。大多数现代的数据库驱动程序和ORM框架都支持参数化查询。例如在PyMySQL中可以使用参数化查询来避免SQL注入。 验证和过滤用户输入对于接收用户输入的字段进行输入验证和过滤是非常重要的。检查输入是否符合预期的格式、类型和范围并拒绝包含可疑字符或特殊字符的输入。可以使用正则表达式或内置的字符串函数进行验证和过滤。 最小权限原则在设置数据库用户权限时确保每个应用程序只具有其所需的最低权限。避免使用超级用户或具有过多权限的账号来连接数据库。 不要将用户输入直接拼接到SQL查询中避免将用户输入直接嵌入到SQL查询语句中即使对于简单的查询也要谨慎处理。使用参数化查询或ORM框架可以更安全地构建和执行SQL查询。 定期更新和维护数据库软件及时更新数据库引擎和相关软件补丁以修复已知的安全漏洞。同时密切关注数据库供应商和安全专家发布的安全通告和建议。 日志记录和监控实施日志记录和监控机制以便检测和识别潜在的SQL注入攻击。监视异常查询、错误日志和其他不寻常活动并及时采取相应的措施。
语句参数化演示
# 导入pymysql包
import pymysql
import binascii# 创建连接对象
conn pymysql.connect(host192.168.1.30, port3306, userroot, passwordmysql, databasejing_dong, charsetutf8)
# 获取游标对象
cs conn.cursor()# 获取用户输入
find_name input(请输入您要查询的商品姓名: )# 使用 with 语句自动管理资源
with cs as cursor:# 执行 SQL 查询sql SELECT * FROM goods WHERE name LIKE %scursor.execute(sql, (f%{find_name}%,)) # 使用 f-string 格式化占位符的值# 获取结果results cursor.fetchall()for row in results:# 处理 bit 类型数据readable_bit_data binascii.hexlify(row[5]).decode(utf-8)# 输出结果print(row[0], row[1], row[2], row[3], row[4], readable_bit_data)# 关闭数据库连接with 语句会自动处理关闭连接
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85649.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!