MySQL第三天

  

MySQL第二天

  

<强> 关键词:分组聚合

  

自关联

  

<强> 物理上一张表,逻辑上是两张表
 MySQL第三天

  
 <代码>创建表区域(
  int id主键,
  atitle varchar (20),
  pid int,
  外键(pid)的引用领域(id)
  ); 
  

<强> 导入sql文件

  
 <代码> areas.sql来源; 
  

<强> 示例图

  

<强> 示例语句

  
 <代码>选择盛。id作为sid,盛。标题是阶梯,史。id作为shiid史。标题shititle从地区为盛
  内连接领域sheng.id=shi.pid史
  盛的地方。pid零和sheng.title='山西省的
  限制0100; 
  

视图

  

<代码>创建视图stuscore +查询语句

  

事务

  

<强> 四个特性(ACID)

  
      <李>原子性(原子性):事务不可分割李   <李>一致性(一致性):事务间执行顺序不影响结果李   <李>隔离性(隔离):不受干扰李   <李>持久性(耐久性):对数据库的更改不丢失李   
  

引擎类型:引擎=innodb/bdb支持事务,默认innodb
查看表创建的语句:<代码>显示创建表学生;
修改表类型:<代码> alter table学生引擎=innodb;

  

<强> 事务语句

  
 <代码>开始;//开启
  提交;//提交
  回滚;//回滚操作 
  

索引

  

<强> 查看索引

  
 <代码>显示指数从表名; 
  

<强> 创建索引

  
 <代码>创建索引indexName领域(标题(20)); 
  

<强> 删除索引

  
 <代码>下降指数(indexName)表名; 
  

<强> 执行时间

  
      <李>开启执行时间监测:<代码>设置分析=1;   <李>执行语句李   <李>显示监测结果:<代码>显示配置文件;   
  

Python的数据库操作

  

<强>每一个python会话都是一次事务

  

常用类

  

<强> Connec类

  
 <代码>连接=连接(主机、端口、数据库、用户、密码、字符集) 
  

<强> 连接对象的方法

  
 <代码> close()关闭连接
  commit()事务提交,所以需要提交才会生效
  rollback()事务回滚,放弃之前的操作
  光标()返回光标对象,用于执行sql语句并获得结果 
  光标

<强>

  
  

执行SQL语句

     
 <代码> cursor1=connection.cursor()//调用光标方法返回一个光标对象 
  
  

指针对象的常用方法

     
 <代码>执行(操作,(参数))//执行语句,返回受影响的行数
  fetchone()//获取查询结果集的第一个行数据,返回一个元组
  fetchall()//获取查询结果集的所有行,一行构成一个元组,返回一个大元组 
  

增删改查

  
 <代码>进口MySQLdb
  试一试:
  连接=MySQLdb.connect(主机=發ocalhost”,端口=3306,db=皃ython3”,用户=?passwd=? * *’, charset=use utf8)
  cursor1=connection.cursor ()
  sql=' sql语句增删查改的
  数=cs1.execute (sql)
  connection.commit ()
  cursor1.close ()
  connection.close ()
  除了例外,e:
  打印(e.message)  
  

参数化

  

<强> 防止SQL注入

  
 <代码>从MySQLdb导入*
  试一试:
  name=raw_input(“请输入一个名字”)
  连接=连接(主机=發ocalhost”,端口=3306,db=皃ython3”,用户=?passwd=? * *’, charset=use utf8)
  
  # sql='插入学生(名字)值(“小乖巧”)”
  # sql='更新学生组name='乖巧' id=3 '
  # sql='删除从学生id=3 '
  
  sql='插入学生(名字)值(% s) '
  cursor1.execute (sql,[名字])
  connection.commit ()
  cursor1.close ()
  connection.close ()
  除了例外,e:
  打印(e.message)  
  

封装

  
 <代码>类MYSQL:
  def __init__(自我,主机、端口=3306 db,用户,密码,charset=皍ft8”):
  自我。主机=主机
  自我。端口=端口
  自我。db=自我。用户=用户
  自我。passwd=passwd
  自我。charset=字符集
  def开放(自我):
  自我。连接=连接(主机=self.host端口=self.port db=self.db用户=self.user passwd=self.passwd charset=self.charset)
  自我。光标=self.connection.cursor ()
  def关闭(自我):
  self.cursor.close ()
  self.connection.close ()
  def豆腐(自我):
  试一试:
  self.open ()
  self.cursor (sql参数)
  self.commit ()
  
  self.close ()
  除了例外,e:
  打印(e.message)
  def所有(自我、sql参数=[]):
  试一试:
  self.open ()
  self.cursor (sql参数)
  结果=self.cursor.fetchall ()
  self.commit ()
  
  self.close ()
  返回结果
  除了例外,e:
  打印(e.message) 

MySQL第三天