广告
返回顶部
首页 > 资讯 > 数据库 >数据库进阶
  • 255
分享到

数据库进阶

数据库进阶数据库入门数据库基础教程 2018-04-02 16:04:55 255人浏览 无得
摘要

          python关于,Mysql的api---pymysql模块 pymysql是Python中操作MYSQL的模块,其使用方法和py2的MYSQLdb几乎相同。   模块安装 pip install pymysql

数据库进阶[数据库教程]

          python关于,Mysqlapi---pymysql模块

pymysqlPython中操作MYSQL的模块,其使用方法和py2的MYSQLdb几乎相同。

 

模块安装

pip install pymysql

执行sql语句

 

import pymysql
# 创建连接
conn = pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="123456",db="test1",charset="utf-8")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()

# 使用 execute() 方法执行 SQL 查询
cursor.execute("show databases")

# 使用 fetchone() 方法获取单条数据
data = cursor.fetchone()

print("数据:%s"%data)

# 关闭连接
cursor.close()
conn.close()

 

host ip地址
port 端口
user 用户名
passwd 密码
db 数据库
charset 编码

cursor.fetchone() 获取单条数据
cursor.fetchall() 获取全部数据
cursor.fetchmany(2) 获取2条数据

scroll
cursor.scroll(-1,mode="relative") # 相对当前位置移动
cursor.scroll(2,mode="absolute") # 相对绝对位置移动

更改获取数据结果的数据类型,默认是元祖,可以改为字典等:conn.cursor(cursor=pymysql.cursors.DictCursor)

      事务

事务命令

事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。

数据库开启事务命令

start transaction 开启事务
Rollback 回滚事务,即撤销指定的sql语句(只能回退insert delete update语句),回滚到上次commit的位置
Commit 提交事务,提交未存储的事务
savepoint 保留点,事务处理中设置的临时占位符,你可以对它发布回退(与整个事务回退不同)

  转账实例:

"UPDATE account set balance=balance-100 WHERE name=‘a‘"
"UPDATE account set balance=balance-100 WHERE name=‘b‘"

 

create table test2(id int PRIMARY KEY auto_increment,name VARCHAR(20)) engine=innodb;
INSERT INTO test2(name) VALUE ("alvin"),
                              ("aaa"),
                              ("xialv");



start transaction;
insert into test2 (name)values(‘silv‘);
select * from test2;
commit;


-- 保留点

start transaction;
insert into test2 (name)values(‘wu‘);
savepoint insert_wu;
select * from test2;



delete from test2 where id=4;
savepoint delete1;
select * from test2;


delete from test2 where id=1;
savepoint delete2;
select * from test2;

rollback to delete1;


select * from test2;

  

import pymysql
# 创建连接
conn = pymysql.connect("127.0.0.1","root","lwj5203344587")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()

sql0 = "CREATE DATABASE test1"
sql1 = "use test1"
sql2 = "CREATE table account(name varchar(20),balance int)"
sql3 = "INSERT INTO account(name,balance) values (‘a‘,5000),(‘b‘,5000),(‘c‘,5000)"
sql4 = "savepoint into1"
sql5 = "SELECT * FROM account"
sql6 = "delete from account where name=‘a‘"
sql7 = "savepoint del1"
sql8 = "INSERT INTO account(name,balance) values (‘a‘,5000),(‘b‘,5000)"
sql10 = "rollback to into1"
# 使用 execute() 方法执行 SQL 查询
cursor.execute(sql0)
cursor.execute(sql1)
cursor.execute(sql2)
cursor.execute(sql3)
cursor.execute(sql4)
cursor.execute(sql5)
print(cursor.fetchall())
cursor.execute(sql6)
cursor.execute(sql7)
cursor.execute(sql8)
cursor.execute(sql5)
print(cursor.fetchall())
cursor.execute(sql10)
conn.commit()
cursor.execute(sql5)
print(cursor.fetchall())
cursor.close()
conn.close()

  

 

python中调用数据库启动事务的方式

import pymysql
# 创建连接
conn = pymysql.connect("127.0.0.1","root","lwj5203344587")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
try:
    sql0 = "CREATE DATABASE test1"
    sql1 = "use test1"
    sql2 = "CREATE table account(name varchar(20),balance int)"
    sql3 = "INSERT INTO account(name,balance) values (‘a‘,5000),(‘b‘,5000)"
    sql4 = "UPDATE account set balance=balance-100 WHERE name=‘a‘"
    sql5 = "UPDATE account set balance=balance-100 WHERE name=‘b‘"

    # 使用 execute() 方法执行 SQL 查询
    cursor.execute(sql0)
    cursor.execute(sql1)
    cursor.execute(sql2)
    cursor.execute(sql3)
    # 提交事务
    conn.commit()

    cursor.execute(sql4)
    # 创造异常
    raise Exception
    cursor.execute(sql5)
    cursor.close()
    conn.commit()
except Exception as e:
    # 回滚事务
    conn.rollback()
    # 提交事务
    conn.commit()
# 关闭连接
cursor.close()
conn.close()

  

索引

一、索引简介

索引在MYSQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构·。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。

索引优化应该是对查询性能优化最有效的手段了。

索引能够轻易将查询性能提高好几个数量级。

索引相当于字典的音序表,如果要某个字,如果不使用音序表,则需要从几百页中逐页去查。

索引特点:创建与维护索引会消耗很多时间与磁盘空间,但查询速度大大提高!

二、索引语法

-- 创建比表时
-- 语法:
    CREATE TABLE 表名(
                            字段1 数据类型 [完整约束条件...],
                            字段2 数据类型 [完整约束条件...],
                            [UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY
                            [索引名] (字段名[(长度)] [ASC | DESC])
                            );
 
 
-- 创建普通索引示例:
 
    CREATE TABLE emp(
            id INT,
            name VARCHAR(30),
            resume VARCHAR(50),
            INDEX index_emp_name(name)
         --KEY index_emp_name(dept_name)
            );
 
-- 创建唯一索引示例:
     
     CREATE TABLE emp(
            id INT,
            name VARCHAR(30),
            resume VARCHAR(50),
            FULLTEXT INDEX index_resume(resume)
            );
 
-- 创建多列索引示例:
 
    CREATE TABLE emp(
            id INT,
            name VARCHAR(30),
            resume VARCHAR(50),
            INDEX index_name_resume(name,resume)
            );
 
 
 
 
-- 添加索引
    -- CREATE在已存在的表上创建索引
        CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名
                    ON 表名 (字段名[(长度)] [ASC | DESC]);
 
    -- ALTER TABLE在已存在的表上创建索引
        ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATTAL] INDEX
                            索引名 (字段名[(长度)] [ASC | DESC]);
 
 
        CREATE INDEX index_emp_name on emp(name);
        ALTER TABLE emp ADD UNIQUE INDEX index_bank_num(band_num);
 
-- 删除索引
    语法:DROP INDEX 索引名 on 表名
     
    DROP INDEX index_emp_name on emp;
    DROP INDEX bank_num on emp;

  索引测试实验

-- 创建表
create table indexdb.t1(id  int,name varchar(20));
 
-- 存储过程
delimiter $$
create procedure autoinsert()
BEGIN
declare i int default 1;
while (i<50000)do
insert into indexdb.t1 values(i,"lwj");
set i=i+1;
end while;
END$$
 
delimiter ;
 
-- 调用函数
call autoinsert();
 
-- 花费时间比较:
-- 创建索引前
   select * from Indexdb.t1 where id=300000;--0.32s
-- 添加索引
   create index index_id on Indexdb.t1(id);
-- 创建索引后
   select * from Indexdb.t1 where id=300000;--0.00s

  

数据库进阶

原文:https://www.cnblogs.com/linglinglingling/p/12012825.html

您可能感兴趣的文档:

--结束END--

本文标题: 数据库进阶

本文链接: https://www.lsjlt.com/news/5774.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库进阶
              python关于,mysql的API---pymysql模块 pymysql是python中操作MYSQL的模块,其使用方法和py2的MYSQLdb几乎相同。   模块安装 pip install pymysql ...
    99+
    2018-04-02
    数据库进阶 数据库入门 数据库基础教程
  • HTML5 进阶系列:indexedDB 数据库
        前言在 HTML5 的本地存储中,有一种叫 indexedDB 的数据库,该数据库是一种存储在客户端本地的 NoSQL 数据库,它可以存储大量的数据。从上篇:...
    99+
    2022-10-18
  • django的数据库ORM进阶操作
    1、数据库查询的三种方式 正向查询: (1)获取全部数据all     v1=models.UserInfo.objects.all().first()    #取出Querryset类型数据,里面是对象,需循环取出     v1.ut  ...
    99+
    2017-08-05
    django的数据库ORM进阶操作 数据库入门 数据库基础教程 数据库 mysql
  • 【MySQL】MySQL数据库的进阶使用
    别灰心,一切都会好起来的… 文章目录 一、MySQL基本查询1.对表内容进行Create(增加)1.1 insert语句的使用1.2 插入查询结果(删除表中的重复记录) 2.对表内容进行Retrieve(读取)3.对表内容进...
    99+
    2023-08-17
    数据库 mysql
  • Oracle进阶学习之创建数据库
    写在前面:    Oracle在创建用户的时候默认使用的表空间为User,我们一般不建议这样做,因为默认表空间的大小是固定的,如果我们创建的所有用户都使用默认的表空间...
    99+
    2022-10-18
  • 【数据库】MySQL 高级(进阶) SQL 语句
    文章目录 前提条件一、常用查询1. SELECT(显示查询)2. DISTINCT(不重复查询)3. WHERE(有条件查询)4. AND/OR(且/或)5. IN (显示已知值的字段...
    99+
    2023-09-17
    数据库 mysql sql
  • nodejs进阶(6)—连接MySQL数据库示例
    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE ...
    99+
    2022-06-04
    进阶 示例 数据库
  • 数据库进阶、国产数据库、备份方案……新姿势get起来~
    数据库进阶、国产数据库、备份方案…… 新姿势get起来~ 墨天轮下周的四场分享已经全部上线, 快来报名吧! 3月第四周 计划 3月24日 20:00-21:00...
    99+
    2022-10-18
  • 【MySQL】数据库进阶之触发器内容详解
    💁 个人主页:黄小黄的博客主页 ❤️ 支持我:👍 点赞 🌷 收藏 🤘关注 🎏 格言:一步一个脚印才能承接所谓的幸运 本文来自专栏:MySQL8.0学习笔记...
    99+
    2023-08-30
    数据库 mysql 后端 database 大数据
  • (5)MySQL进阶篇SQL优化(优化数据库对象)
    1.概述 在数据库设计过程中,用户可能会经常遇到这种问题:是否应该把所有表都按照第三范式来设计?表里面的字段到底改设置为多大长度合适?这些问题虽然很小,但是如果设计不当则可能会给将来的应用带来很多的性能问题。本章中将介绍MySQL中一些数...
    99+
    2014-06-29
    (5)MySQL进阶篇SQL优化(优化数据库对象)
  • MySQL数据库查询进阶之多表查询详解
    目录一、多表查询1.引出2.笛卡尔积3. 笛卡尔积的解决方法二、多表查询分类1.等值连接和非等值连接2.自连接和非自连接3.内连接和外连接4.自然连接5.using连接三、子查询1....
    99+
    2022-11-13
  • 《MySQL数据库进阶实战》读后感(SQL 小虚竹)
    ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆...
    99+
    2023-08-19
    数据库 mysql sql
  • java进阶解析Springboot上传excel存入数据库步骤
    目录一、导入依赖二、前端实现三、后台逻辑三、页面效果四、可能会遇到的问题一、导入依赖 这里还是用了Apache的POI插件,现在一般的springboot解析excel基本都用它 。...
    99+
    2022-11-12
  • 【MySQL】MySQL数据库的初阶使用
    文章目录 一、MySQL服务的安装二、数据库基础1.什么是数据库?(基于CS模式的一套数据存取的网络服务)2. Linux文件系统和数据库的关系 && 主流数据库3.MySQL架构 && SQL分类 && MySQL存储引擎 ...
    99+
    2023-08-17
    数据库 mysql
  • oracle 数据库启动阶段分析
    Oracle Server主要由两部分组成:Instance 和Database 。Instance 是指一组后台进程/线程和一块共享内存区域,而 Database是指存储在磁盘上的一组物理文件。本文由数据...
    99+
    2022-10-18
  • python3--函数进阶
    例子def func(a,b,c,d,e,f,g):    passprint(func(a, b , c, d, e, f, g))如果再加30个参数呢?,在后面继续添加?有没有万能的参数,可以代表一切参数呢?*arg...
    99+
    2023-01-30
    进阶 函数
  • MySQL数据库优化的5个阶段
    下文主要给大家带来MySQL数据库优化的5个阶段,希望这些内容能够带给大家实际用处,这也是我编辑MySQL数据库优化的5个阶段这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。 1、数据库表...
    99+
    2022-10-18
  • 数据库优化的阶段是什么
    这篇文章主要讲解了“数据库优化的阶段是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库优化的阶段是什么”吧!0x01:SQL优化及应用程序...
    99+
    2022-10-19
  • Python进阶Matplotlib库图绘制
    目录1、基本使用1.1、线条样式 & 颜色1.2、轴&标题1.3、marker设置1.4、注释文本1.5、设置图形样式2、条形图2.1、横向条形图 范例2.2、分组条...
    99+
    2022-11-11
  • 简单了解MYSQL数据库优化阶段
    引言 大家在面试的时候,是否遭遇过,面试官询问 你们是如何进行数据库优化的? 那这个问题应该怎么答呢?其实写这个题材的原因是我这几天看到各公众号转的一篇数据库调优的知识(不上链接了),我就稍微翻了几下,上面...
    99+
    2022-05-11
    MYSQL 数据库 优化
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作