2020.4.1 mysql2

发布于 2020-04-01  8 次阅读


1.复习内容

1. 基础概念

   * 为什么要用数据库
   * 什么是数据库
   * 数据库的分类 
      关系型数据库  
      非关系型数据库  

      开源和非开源
      大型,中型,小型
   * 关系型数据库结构
     数据元素--》记录-->数据表--》数据库
     数据库(database)
     数据表(table)   
     字段(column)
     记录(row)

2. mysql   

   特点  安装

3. SQL

   * 数据库操作
     show databases;
     create database dbName;
     show create database dbName;
     select database();
     use db;
     drop database db;
   * 数据表操作
     show tables
     create table tableName (column1 type,column2 type);  
     primary key  设置主键
     auto_increment  自增
     not null 不许为空
     unsigned  对数字设置无符号
     default  设置默认值
     show create tables tableName;
     desc table;
     drop table tableName;
   * 数据增删改查
     insert  into  tableName ... values ...;
     delete from tableName where ....
     update tableName  set ... where ...
     select ... from tableName where ...
   * 表结构修改
     alter table tableName add
                           drop
               change
               modify
               rename

4. 数据类型

   数字 : 整数   浮点数    比特
   字符串: char  varchar  blob  text  enum  set
   时间

5. where 子句的运算

   算术运算  + - * / %
   比较运算  > < = >= <= !=  between  in  is null
   逻辑运算  not  and   or  xor
   位运算 :<<  >> |  ^  &

2.灵感代办

找到数据库笔记
复习线程,进程

3.学习内容

时间类型数据
date :"YYYY-MM-DD"
time :"HH:MM:SS"
datetime :"YYYY-MM-DD HH:MM:SS"
timestamp :"YYYY-MM-DD HH:MM:SS"
注意
1、datetime :不给值默认返回NULL值
2、timestamp :不给值默认返回系统当前时间
日期时间运算
语法格式
也可以直接相减 '1996-02-13'-'1900-12-2'
select * from 表名 where 字段名 运算符 (时间-interval 时间间隔单位);
时间间隔单位: 1 day | 2 hour | 1 minute | 2 year | 3 month
select * from timelog where shijian > (now()-interval 1 day);
日期时间函数
now() 返回服务器当前时间
curdate() 返回当前日期
curtime() 返回当前时间
date(date) 返回指定时间的日期
time(date) 返回指定时间的时间
数据库连接回滚
撤销之前的操作

高级查询语句

like regexd模糊查询和正则查询
select * from class_1 where name like|regexd 'A%';
order by 排序(asc ,desc)
select * from class_1 where sex='m' order by age;
limit 分页
SELECT column1 FROM table_name WHERE field LIMIT [num]
联合查询union
select语句 union [ALL | DISTINCT]  select语句
多表查询 表名.字段
select 表名1.字段,表名2.字段 from 表1,表2
数据备份
1.备份:mysqldump -u root -p 源库> ./文件名.sql
2.恢复:mysql -u root -p 目标库<./文件名.sql

pymysql使用流程

1. 建立数据库连接(db = pymysql.connect(...))
2. 创建游标对象(c = db.cursor())
3. 游标方法: c.execute("insert ....") 需要捕获异常
4. 提交到数据库 : db.commit()
5. 关闭游标对象 :c.close()
6. 断开数据库连接 :db.close()

常用函数

db = pymysql.connect(参数列表)
host :主机地址,本地 localhost
port :端口号,默认3306
user :用户名
password :密码
database :库
charset :编码方式,推荐使用 utf8
数据库连接对象(db)的方法
db.close() 关闭连接
db.commit() 提交到数据库执行
db.rollback() 回滚
cur = db.cursor() 返回游标对象,用于执行具体SQL命令
游标对象(cur)的方法
cur.execute(sql命令,[列表]) 执行SQL命令
cur.close() 关闭游标对象
cur.fetchone() 获取查询结果集的第一条数据 (1,100001,"河北省")
cur.fetchmany(n) 获取n条 ((记录1),(记录2))
cur.fetchall() 获取所有记录

4.扩展延伸知识

数据库表名为什么带反引号
因为数据库用内部关键字会出错
MySQL时区错误
python字符串拼接
1." ".join(列表)
2."" +""( 字符串相加)
3."%s"%"sting"
4."{}".format() # 有很多参数 
python装饰器

5.知识内容个人梳理


Ares个人进阶之路