第二范式的介绍
第三范式的介绍
E-R模型的介绍
小结
9.外键SQL语句的编写
外键约束作用
外键约束:对外键字段的值进行更新和插入时会和引用表中字段的数据进行验证,数据如果不合法则更新和插入会失败,保证数据的有效性
对于已经存在的字段添加外键约束
在创建数据表时设置外键约束
删除外键约束
小结
10.演练-分组和聚合函数的组合使用
数据准备
– 创建 “京东” 数据库
create database jing_dong charset=utf8;
– 使用 “京东” 数据库
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);
SQL语句演练
1.将查询结果插入到其它表中
思考
创建商品分类表
把goods表中的商品分类添加到商品分类表
小结
想要完成表复制可以使用: insert into … select … SQL语句
2.使用连接更新表中某个字段数据
更新goods表中的商品分类信息
小结
连接更新表中数据使用: update … join … 语句
3.创建表并给某个字段添加数据
思考
创建品牌表
更新goods表中的品牌信息
小结
创建表并给字段插入数据使用: create table … select 语句
4.修改goods表结构
5.事务
事务的介绍
事务的四大特性
事务的使用
事务演练的SQL语句:
begin;
insert into students(name) values(‘李白’);
– 查询数据,此时有新增的数据, 注意: 如果这里后续没有执行提交事务操作,那么数据是没有真正的更新到物理表中
select * from students;
– 只有这里提交事务,才把数据真正插入到物理表中
commit;
– 新打开一个终端,重新连接MySQL数据库,查询students表,这时没有显示新增的数据,说明之前的事务没有提交,这就是事务的隔离性
– 一个事务所做的修改操作在提交事务之前,对于其他事务来说是不可见的
select * from students;
小结
6.索引
索引的介绍
索引的使用
案例-验证索引查询性能
from pymysql import connect
def main():
创建Connection连接
conn = connect(host=‘localhost’,port=3306,database=‘python’,user=‘root’,password=‘mysql’,charset=‘utf8’)
获得Cursor对象
cursor = conn.cursor()
插入10万次数据
for i in range(100000):
cursor.execute(“insert into test_index values(‘ha-%d’)” % i)
提交数据
conn.commit()
if name == “main”:
main()
联合索引
联合索引的最左原则
MySQL中索引的优点和缺点和使用原则
小结
7.PyMySQL的使用
思考
Python程序操作MySQL数据库
pymysql完成数据的查询操作
import pymysql
创建连接对象
conn = pymysql.connect(host=‘localhost’, port=3306, user=‘root’, password=‘mysql’,database=‘python’, charset=‘utf8’)
获取游标对象
cursor = conn.cursor()
查询 SQL 语句
sql = “select * from students;”
执行 SQL 语句 返回值就是 SQL 语句在执行过程中影响的行数
row_count = cursor.execute(sql)
print(“SQL 语句执行影响的行数%d” % row_count)
取出结果集中一行数据, 例如:(1, ‘张三’)
print(cursor.fetchone())
取出结果集中的所有数据, 例如:((1, ‘张三’), (2, ‘李四’), (3, ‘王五’))
for line in cursor.fetchall():
print(line)
关闭游标
cursor.close()
关闭连接
conn.close()
pymysql完成对数据的增删改
import pymysql
创建连接对象
conn = pymysql.connect(host=‘localhost’, port=3306, user=‘root’, password=‘mysql’,database=‘python’, charset=‘utf8’)
获取游标对象
cursor = conn.cursor()
try:
添加 SQL 语句
sql = “insert into students(name) values(‘刘璐’), (‘王美丽’);”
删除 SQ L语句
sql = “delete from students where id = 5;”
修改 SQL 语句
sql = “update students set name = ‘王铁蛋’ where id = 6;”
执行 SQL 语句
row_count = cursor.execute(sql)
print(“SQL 语句执行影响的行数%d” % row_count)
提交数据到数据库
conn.commit()
except Exception as e:
回滚数据, 即撤销刚刚的SQL语句操作
conn.rollback()
关闭游标
cursor.close()
关闭连接
conn.close()
from pymysql import connect
def main():
find_name = input(“请输入物品名称:”)
创建Connection连接
conn = connect(host=‘localhost’,port=3306,user=‘root’,password=‘mysql’,database=‘jing_dong’,charset=‘utf8’)
获得Cursor对象
cs1 = conn.cursor()
非安全的方式
输入 ’ or 1 = 1 or ’ (单引号也要输入)
sql = “select * from goods where name=‘%s’” % find_name
print(“”“sql===>%s<====”“” % sql)
# 执行select语句,并返回受影响的行数:查询所有数据
count = cs1.execute(sql)
安全的方式
构造参数列表
params = [find_name]
执行select语句,并返回受影响的行数:查询所有数据
count = cs1.execute(“select * from goods where name=%s”, params)
注意:
如果要是有多个参数,需要进行参数化
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。
关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。
这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
…(img-7cgtUawC-1712660175860)]
[外链图片转存中…(img-VPP7erN7-1712660175860)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。
关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。
[外链图片转存中…(img-MJYoZH05-1712660175861)]
这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!