关系型数据入门

关系型数据概述

  1. 数据持久化。
  2. 数据库发展史。
  3. 关系型数据库特点。
  4. E-R图。
  5. 关系型数据库产品。

MySQL简介

1.为什么要使用关系型数据库:见特点

2.关系型数据库的三个特点:

  • 集合论加关系代数

  • 用二维表承载数据,有行有列

  • 编程语言sql,ddl,dml,dql,dcl

    ####mysql的特点:

    比非关系型数据库,在数据强一致性和安全性方面,或者对于数据要求特别高的(比如金融机构等),mysql数据库在底层有锁机制,能够更好的保存,管理数据。

    windows下面是默认的是150个链接

    Linux系统可以配置链接客户端数量,改配置文件

    开启事务

    1.敲begin;或者start transaction;开启事务环境,可以回滚,提交commit后是真正删除。事务环境要么全成功,要么全失败

    2.只能一个用户操作这一行,排他锁,排队操作,不一定是行级锁,有可能是整个表,但读取数据时是使用的共享锁,都可以读;

    3.如果希望读数据的时候也用排他锁:begin;查询语句后面加for update;

    select * from tbdept for update,另一用户也在事务环境中for update

    事务隔离级别,事务传播级别

  1. 安装和配置。
  2. 常用命令。

SQL详解

  1. DDL
  2. DML
  3. DQL

Python数据库编程

#####MySQLdb

在python2中使用,目前在python3中使用的是PyMySQL

#####PyMySQL

能够对数据进行CRUD操作

####Linux系统下安装mysql:

  • 使用rpm包管理工具(redhat包管理工具)
  • 安装:ls | xargs rpm -ivh

  • 卸载:rpm -qa | grep mysql | xargs rpm -e

  • 改配置:vim /etc/my.conf

    ​ 绑定ip地址:bind-address=

    ​ 绑定端口:port=

    ​ 指定最大链接数:max_connections=

    ​ 不输密码就可以登录:skip-grant-tables

    在centos7下:

  • 启动:systemctl start mysqld

  • 状态:systemctl status mysqld

  • 开机自启:systemctl enable mysqld

  • 查看是否启动(进程):ps -ef | grep mysqld

  • 查看端口是否被占用:netstat -nap | grep 3306

####mysql的客户端工具的使用

  • mysql -u root-p :本机进到客户端工具

  • mysql -u root -h (地址) -p:链接远端

  • 查看帮助信息

    查看帮助信息:? contents

    查看数据类型:? data types

    查看整数:? int

    查看show这个命令怎么用:? show

####SQL

  1. DDL

    create / drop / alter

  2. DML

    insert / delete / update

  3. DQL

    select / as / where / like / regexp /group by / order by asc/desc

  4. DCL

    grant(授权) / revoke(召回权限) / begin / commit / rollback

####Python —>MySQL

PyMySQL的使用
  • 创建链接,connect创建链接对象

  • 打开数据库连接

  • 运用pymysql里面的connet方法

  • db = pymysql.connect(“localhost”,”testuser”,”test123”,”TESTDB” )

  • 服务器(云就写公网),用户名,密码,数据库名字

  • 编码黑洞:拉丁一语系的编码,就是存不下,全是问号,还原不了(乱码可以还原)

    ​ big5:大5码,繁体中文

    ​ gb2312:国标扩

    ​ gb18030:国标,少数民族也可以

    ​ latin1:iso-8859-1:默认选择了拉丁一语系编码,造成编码黑洞

  • cursor:读取数据可以滑动

  • 使用 cursor() 方法创建一个游标对象connection

    ​ pymysql.connext(host……)

  • cursor指定host,port(默认3306,当默认时可不写),user,passwd(password) db(database),charset.

  • cursor.execute()执行
  • cursor.fetchall():拿所有
  • fetchone():拿一条

  • cursor.rowcount

    ​ cursor = db.cursor()

  • 查询时转换成字典:cursorclass=DictCursor

  • 查询时别名

  • 手动提交:commit()

  • 自动提交:autocommit=True

  • 装的时候叫pillow,用的时候交PIL

####pycharm中库或者插件安装办法:

  • ​ 红灯泡自动修复错误
    ​ 终端
    ​ +号安装

安装虚拟环境:virtualenv –no-site-package venv

6.28

在函数中如何拿到链接mysql数据库的方法:

  • 第一种方式:将连接语句设置为全局变量,全局作用域,这是非常不好的做法,因为全局变量的影响范围太广,有时无法有效控制

    语法:global con

  • 第二种方式:将连接语句使用参数传递给需要使用的方法中

    语法:add_new_contacter(con)

抽取常量

####sql语句:limit %s offset %s

含义:查看多少条;从第几条开始,(跳过几条),

查看数量,偏移量,

####类:enumerate

for index, row in enumerate(cursor.fetchall()): ???

显示一个编号,for循环在range中有编号,自定义的列表是没有编号的

####关于安全占位符

安全在于,它会自动补全引号。只有一个占位符也是传递元组,安全占位符only接收元组

#####复用代码的最佳方式:封装,写成类或者函数

####作用域:

  • LEGB的查找方式:
  • global和nonlocal两层含义:用全局中的(修改也是),第二是全局没有它放到全局中

####面向对象

  • 数据抽象:属性(名词)

    初始化方法绑定属性
    
  • 行为抽象:方法(动词)

    花括号占位符
    

三种创建方式:

  1. 三步走:定义类,创建对象,调用对象(给对象发消息)

  2. 两步走:创建对象,给对象发消息

  3. 一步走:给对象发消息(document对象,window对象)

#####怎么把将字典变成对象

​ 创建对象:构造器,跟类名完全一致,调构造器时会自动初始化,需要传参,将字典传入关键字参数

​ 将字典处理成关键字参数传入构造器

ORM概述