1、mysql基础

数据库的由来

数据库的本质就是存储数据的,之前程序写入数据都是放到文件中,放在文件中的数据格式和类型各有各的定义方法,导致后续取数据比较困难,素以衍生了一种处理数据的软件,数据库软件是一种cs架构,客户端和服务端通信依赖于网络传输,客户端也可以是各种语言编写的,为了使server端能够处理客户端发来的数据,所以定义了统一的语言sql

数据库的分类

关系型数据库:一般是以表格的形式,数据之间有依赖关系,mysql、oracle、access、sqlite
非关系型数据库:一般是以k\v键值对的形式,redis、mongodb、memcache

常用的数据库及其安装

it界一个不成文的规定是:不用最新的软件,可能会出现不兼容问题
大部分企业使用的是mysql 5.X

数据库的基础概念和使用

概念

库:对应于文件夹
表:对应于文件夹中的文件
记录:文件中一行行数据
字段:每列数据的含义

使用(客户端和服务端主机字符编码和变量的配置)

  1. 登陆(游客登陆和用户登陆)
    mysql -h 127.0.0.1 -P 3306 -uroot -p123456
  2. 忘记密码
    mysqld --skip-grant-tables #重启mysql服务端
    update mysql.user set password=password(‘123456’) where user=‘root’ and host ‘localhost’ ;
  3. 修改密码
    mysqladmin -uroot -p原始密码 password

  1. 数据库的增删改查
    create database db1 charset=‘utf-8’;
    drop database db1;
    show databases; show create database db1;
    alter database db1 charset=‘gbk’
  2. 表的增删改查
    select database();
    create table t1(id int,name char(4));
    show create table t1; show tables;
    describe t1; 查看表头
    alter table t1 modify name char(6);
    drop table t1;
  3. 数据的增删改查
    insert into t1 value(1,‘jason’);
    insert into t1 value(1,‘jason’),(1,‘jason’),(1,‘jason’);
    select * from t1;
    update t1 set name=‘ssss’ where id>1;
    delete from t1 where id >1; delete from t1;

mysql的存储引擎(show engines)

存储引擎就是为了处理不同种类数据的存储机制

  1. innodb: 具备处理事务、锁、索引的功能,速度比myisam快,mysql5.6以上版本的默认引擎
  2. myisam:功能同innodb,mysql5.6以下版本的默认引擎
  3. memory:数据存储在内存中,数据容易丢失
  4. backhole:数据不会保存,直接丢进黑洞中

创建表的完整语法

create table t1(
字段名1 字段类型(宽度) 约束条件,
字段名2 字段类型(宽度) 约束条件
)

mysql数据库的数据类型

  1. 整型
    int,tinyint,bigint—整型的大小表示的是宽度
  2. 浮点型
    float,double,decimal—每种浮点型表示的精度不通
  3. 字符型
    char,varchar —根据是否存储固定长度的字符串分类
  4. 日期型
    date,datetime,year,time
  5. 枚举和集合
    enum,set

约束条件

  1. not null
  2. assigned
  3. default
  4. unique (单列唯一,联合唯一)
  5. primary key
  6. foreign key

表之间的关系(需要换位思考分析)

  1. 一对一
  2. 一对多
  3. 多对多(另外创建一张表格保存两表之间的关系)

修改表和复制表

修改表:
alter table t1 rename 旧name 新name
alter table t1 modify
复制表(只是复制表的基本内容,键的属性不会被复制):
create table t2 select * from t1 where id >1000;

最常用的查询关键字

sql语句的执行顺序和书写顺序不同

  1. where 支持and、or、in、between …and,
  2. group by 分组查询,可以和聚合函数(max、min、avg、sum、count)、group_concat()联合使用
  3. having 类似于 where之后的判断,只不过用于分组后的判断过滤
  4. limit 限制打印出来的记录,limit 5,9 代表打印第6个开始的后9条记录
  5. distinct 去重
  6. order by 排序显示,默认是升序 asc,降序是desc

连表查询

  1. inner join on
  2. right join on
  3. left join on
  4. union

子查询

将sql语句的查询结果当作另一个sql语句的查询条件

navicat工具的使用

pymysql模块的基本使用

视图(view)

将经常使用的链表保存下来,这个保存下来的表格就是视图 create view name as

触发器(trigger)

将满足某个条件的语句记录到另一张log日志表中
delimiter 临 时 修 改 结 束 符 为 临时修改结束符为

事务(AICD)

多条sql语句一起组成事务,其中一条sql语句执行失败,则这个事务失败

  1. 原子性
  2. 一致性
  3. 持久性
  4. 隔离性

存储过程(procedure)

存储过程类似于函数,在调用存储过程的时候类似于函数调用,并且可以传参。
存储过程内部存在多条sql语句
三种开发模式

函数

此处函数指的是内置函数,如data_format(),now()

索引

索引是一种数据结构,作用类似于书的目录,为的是快速的查询到所需要的记录
索引是一种键,它将随机概率事件的查询转为顺序查询事件
primariy key
unique key
index key

为什么索引要使用id?
B+树的工作原理:一次次缩小目标字段的查询范围

你可能感兴趣的:(python基础,mysql,数据库,database)