复习:
1. MySQL:文件管理的软件
2. 三部分:
- 服务端
- SQL语句
- 客户端
3. 客户端:
- MySQL
- navicat
4. 授权操作:
- 用户操作
- 授权操作
5. SQL语句
- 数据库操作
- 创建数据库要指定字符编码:
create database xx default charset=utf8;
- 删除数据库:
drop database xx; - 数据表操作
- 列
- 数字
整数
小数
- 字符串
- 时间
datatime
- 二进制
- 其他:引擎、字符编码、起始值 - 主键索引
- 唯一索引
- 外键
- 一对多
- 一对一
- 多对多 PS:数据放在硬盘上 - 数据行操作
- 增
- 删
- 改
- 查
- in not in
- between and
- limit
- group by having
- order by
-desc
-asc
- like '%a'
- left join xx on 关系
- inner join
- 临时表
select * from(select * from tb1 where id<10) as B; PS:笛卡尔积
a:三条数据 1 2 3
select * from a as a1,a as a2;
1 1、1 2、1 3、2 1、2 2、2 3、3 1、3 2、3 3

一. 练习题讲解

    1. 去重:distinct    -- 效率不高
SELECT distinct student.sid,student.sname from score LEFT JOIN student ON score.student_id=student.sid where score.num<60;

二. pymysql模块:
pip3 install pymysql -i https://pypi.douban.com/simple
python模块:对数据库进行操作(SQL语句)

import pymysql

'''
user = input('username:')
pwd = input('possword:') conn = pymysql.connect(host='localhost', user='root', password='lpg123456', database='db1') # 打开数据库
cursor = conn.cursor() # 游标
# 连接数据库成功
sql = "select * from userinfo where username = %(u)s and password = %(p)s "
cursor.execute(sql, {'u': user, 'p': pwd})
result = cursor.fetchone() cursor.close()
conn.close() if result:
print('登录成功')
else:
print('登录失败') ''' # 增 删 改 '''
conn = pymysql.connect(host='localhost',user='root',password='lpg123456',database='db1')
cursor = conn.cursor()
sql = "insert into userinfo(username, password) values('egon','123456')"
cursor.execute(sql) conn.commit() # 提交 增 删 改 需要用commit cursor.close()
conn.close()
''' ''' user = 'wusir'
pwd = '123456'
conn = pymysql.connect(host='localhost',user='root',password='lpg123456',database='db1')
cursor = conn.cursor()
# sql = "insert into userinfo(username, password) values(%s,%s)"
# cursor.execute(sql,[user,pwd]) # 增加多个
sql = "insert into userinfo(username, password) values(%s,%s)"
# r:受影响的行数
r = cursor.executemany(sql,[('laoyao','sb'),('taibai','SB')]) # 只适用于insert conn.commit() # 提交 增 删 改 需要用commit cursor.close()
conn.close() ''' # 查 ''' conn = pymysql.connect(host='localhost',user='root',password='lpg123456',database='db1')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 默认cursor为None,改成以字典形式打印 sql = "select * from userinfo limit 10"
# r:受影响的行数
cursor.execute(sql) # result = cursor.fetchone() # 一次取一个
# print(result)
#
# result = cursor.fetchone()
# print(result)
#
# result = cursor.fetchone()
# print(result) # result = cursor.fetchmany(4) # 一次取多个
# print(result) result = cursor.fetchall() # 一次取所有
print(result)
# [{'id': 1, 'username': 'alex', 'password': '123456'}, {'id': 2, 'username': 'egon', 'password': '123456'}, {'id': 5, 'username': 'wusir', 'password': '123456'}, {'id': 6, 'username': 'laoyao', 'password': 'sb'}, {'id': 7, 'username': 'taibai', 'password': 'SB'}] cursor.close()
conn.close() ''' # 新插入数据的自增ID :cursor.lastrowid conn = pymysql.connect(host='localhost',user='root',password='lpg123456',database='db1')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
sql = "insert into userinfo(username,password) values('asdsafd','467467')"
cursor.execute(sql)
conn.commit()
print(cursor.lastrowid) cursor.close()
conn.close()
        - 连接、关闭(游标)
- execute() --> SQL注入问题
- 增删改 : conn.commit()
- fetchone()
- fetchmany()
- fetchall()
- 获取插入数据的自增ID:lastrowid

python学习之老男孩python全栈第九期_数据库day004知识点总结 —— MySQL数据库day4的更多相关文章

  1. python学习之老男孩python全栈第九期_第一次周末考试题(over)第三次添加完毕

    day 6python基础数据类型考试题 考试时间:两个半小时 满分100分(80分以上包含80分及格) 一,基础题. 1. 简述变量命名规范(3分) 答:(1) 变量为数字,字母以及下划线的任意组合 ...

  2. python学习之老男孩python全栈第九期_数据库day005知识点总结 —— MySQL数据库day5

    三. MySQL视图(不常用) 给某个查询语句设置个别名(视图名),日后方便使用 - 创建: create view 视图名 as SQL; PS:视图是虚拟的 - 修改: alter view 视图 ...

  3. python学习之老男孩python全栈第九期_数据库day002知识点总结 —— MySQL数据库day2(全部)

    一. 复习1. MySQL: - 服务端 - 客户端2. 通信交流 - 授权 - SQL语句 - 数据库 创建数据库: create database db1 default charset utf8 ...

  4. python学习之老男孩python全栈第九期_第二周学习总结

    迭代器 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的 1. 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir(数据) ) 可迭代的 ...

  5. python学习之老男孩python全栈第九期_数据库day002 -- 作业 (数据库为day001创建的数据库)

    1.自行创建测试数据 对score表进行优化: 添加数据: 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 为了方便做题,额外增加几条数据 查询: 3.查询平均成绩大于60分的同学的学号和 ...

  6. python学习之老男孩python全栈第九期_数据库day001知识点总结 —— MySQL操作数据库以及数据表、基本数据类型、基本增删改查、外键定义以及创建

    一. 学习SQL语句规则以及外键 1. 操作文件夹 create database db2; 创建文件夹 create database db2 default charset utf8; 创建文件夹 ...

  7. python学习之老男孩python全栈第九期_数据库day004 -- 作业

    https://www.cnblogs.com/YD2018/p/9451809.html 11. 查询学过“001”并且也学过编号“002”课程的同学的学号.姓名 select student.si ...

  8. python学习之老男孩python全栈第九期_数据库day003知识点总结 —— MySQL数据库day3

    复习: 1. 增 insert into xx(name) values('root'),('xxx'); insert into xx(name) select id from tb1; 2. 自增 ...

  9. python学习之老男孩python全栈第九期_数据库day003 -- 作业

    数据库: class:  course: student: teacher: score: /* Navicat Premium Data Transfer Source Server : local ...

随机推荐

  1. position:absolute;宽度自适应

    http://blog.csdn.net/isaisai/article/details/45640515 设置left:0,right:0

  2. SpringBoot入门之分散配置

    springboot默认支持两种格式的配置文件:.properties和.yml.其中.properties是属性文件,也是最常用的一种:.yml是yaml格式的文件,yaml是一种简洁的标记语言.例 ...

  3. nginx请求频率限制模块ngx_http_limit_req_module

    模块: ngx_http_limit_req_module 作用: 限制客户端请求频率,防止恶意攻击 配置示例: http { limit_req_zone $binary_remote_addr z ...

  4. php判断是否使用手机访问

    直接上代码 /** * 检测是否使用手机访问 * @access public * @return bool */ public function isMobile() { if (isset($_S ...

  5. HttpContext rewritePath后中文乱码

    文章为转载 由于种种原因,最近将服务器上部署的网站修改4.0框架.但悲剧的问题出现了,发现搜索中文的时候关键词都成乱码了. 在网上查找相关资料得到几种相关解决方案如下: 服务器打补丁server200 ...

  6. TestNG的常用注解

    @BeforeSuite:表示此注解的方法会在当前测试集合(Suite)中的任一测试用例开始运行之前执行 @AfterSuite:表示此注解的方法会在当前测试集合(Suite)中的所有测试程序运行结束 ...

  7. Oracle 常见字符操作

    一.拼接 1.使用 || 来实现 SELECT '你'||'好!' title FROM dual; 2.使用concat (不支持多个字符串的拼接,但是可以嵌套调用) SELECT concat(' ...

  8. C++实现的字符串模糊匹配

    C++基本没有正则表达式功能,当然像Boost里提供了正则.本文来源于博客园园友的一篇文章,请看: C/C++ 字符串模糊匹配 很早之前就看过这篇文章,原作者的需求很明确.代码实现也很好. 之所以又写 ...

  9. 关于Oracle中的字符的比较

    1.Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个: 函数来说明: CREATE OR REPLACE FUNCTION MinOrMax(para1 ...

  10. Android输入控件EditText和软键盘监听

    1. 跳转到新的页面自动软键盘显示情况: 在配置清单文件AndroidManifest.xml文件,对Activity的windowSoftInputMode属性进行设置. stateUnspecif ...