码迷,mamicode.com
首页 > 数据库 > 详细

假期(MySQL相关)

时间:2018-02-19 17:29:15      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:ase   密码破解   游标   存储过程   avg   set   区分大小写   mysql介绍   不同   

"""
一、初始数据库:
    - 数据库管理软件的由来
        四个字:存储数据(简单暴力)
    - 数据库概述
        1:什么是数据:简单的说就是描述事物的记录称为数据;可以是数字,文字,图片,视频,语言等
        2:什么是数据库:即存放数据的仓库;
        3:什么是数据库管理系统:如MySQL,Oracle,sqlite,access,sqlserver等
            - MySQL主要用于大型门户;Oracle主要用于银行,铁路,飞机场等安全度较高的地方,sql server是微软公司的产品,主要用于中大型企业
        4:数据库服务器、数据管理系统、数据库、表与记录的关系
            1、数据库服务器:运行数据库的管理软件
            2、数据库管理软件:管理数据库
            3、数据库:即文件夹,用来组织文件/4、表:即文件,用来存放内容
    - MySQL介绍:
        1:MySQL是什么:MySQL就是一个机遇socket编写的C/S架构的软件
            - 客户端软件:MySQL自带MySQL命令,mysqldump命令,Python模块有:pymysql
        2:数据库管理软件的分类:(SQL语句通用)
            - 关系型:如sqllite,db2,Oracle,access,sqlserver,MySQL
                可以简单的理解为数据库需要有表结构
            - 非关系型:MongoDB,redis,memeache
                数据库的数据是key-value的形式存在的,没有表结构
    - 登陆以及设置密码:
        mysqladmin -uroot password 123#初始化密码
        mysqladmin -uroot -p 123 password 456    #修改密码
    - 密码破解:
        详细操作见:http://www.cnblogs.com/linhaifeng/articles/7126847.html

二、库操作:
    - 系统数据库
        information_schema:虚拟库,不占用磁盘空间,存放的是数据库启动后的一些参数
        performance_schema:MySQL5.5之后开始新增的一个数据库:主要用来收集一些性能参数,记录某些操作
        mysql:授权库,主要存储系统用户的权限信息
        test:MySQL数据库系统自动创建的测试数据库
    - 创建数据库
        1:语法:create database 数据库名 charset utf8;
        2:命名规则:可以由字母,数字下划线,@,#,$等;区分大小写;唯一性;不能使用关键字,最大长度128位,不能单独使用数字
    - 数据库相关的操作
        1:查看数据库:show database;show create database db1;select database();
        2:选择数据库:use 数据库名;
        3:删除数据库:drop database 数据库名;
        4:修改数据库:alter database db1 charset utf8;

三、存储引擎:
    - 什么是存储引擎
        表类型又称为存储引擎(数据库中的表有着不同的类型,类型不同,会对应者不同的存取机制)
    - MySQL支持的存储引擎
        1:show engines\G   #查看所有支持的存储引擎
        2:show variable like storage_engine%;   #查看正在使用的存储引擎
        - innodb,myisam,ndb,memory,infobright,nise,blackhole
    - 使用存储引擎
        1:建表的时候指定:create table db1(id int,name char)engine=innodb;
        2:在配置文件中加
        - memory,balckhole存储引擎只有表结构,没有数据
            memory,在重启MySQL或者机器后,数据清空
            blackhole,往表中插入任何数据,都相当于丢入黑洞,表永远不会记录

四、表操作:
    - 表介绍
        表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录都有对应的标题,即表的字段
    - 创建表
        语法:create table 表名(字段名 类型 约束条件)
        注意:在同一张表,字段不能相同;宽度和约束条件可选;字段名和值是必须的
    - 查看表结构
        1:describle t1; 查看表结构,可以简写为desc 表名
        2:show create table t1\G;  #查看表的详细结构可以加G参数
    - 修改表alter table
        1:修改表名  alter table 表名 rename 新表名;
        2:增加字段  alter table 表名 add 字段名 数据类型 约束条件 (first|after=可选参数);
        3:删除字段  alter table 表名 drop 字段名;
        4:修改字段  alter table 表名 modify 字段名 数据类型 约束条件
                     alter table 表名 change 旧字段名 新字段名 数据类型 约束条件
    - 复制表
        1:复制表结构+记录(字典的key,即主键,外键和索引不会复制)
            - create table new_service select * from service;
        2:只复制表结构
            - select * from service where 1=2;    #条件为假,只复制字段
            - create table new_service select * from service where 1=2;
            - create table t4 like employee;
    - 删除表
        drop table 表名;

五、数据操作:
    - 插入数据insert
        1:插入完整顺序(顺序插入)
            - insert into 表名(字段1,自负按2) values (值1,值2);
            - insert into 表名 values (值1,值2,值3);
        2:指定字段插入数据
            insert into 表名 (字段1,字段2) values (值1,值2);
        3:插入多条记录
            insert into 表名 values(值1,值2),(值1,值2);
        4:插入查询结果
            select (字段1,字段2) from table2 where  tiaojian;
    - 更新数据update
        updata 表名 set 字段1=值1, where condition;
        - update mysql.user set password=password(123) where user=root and host=localhost;
    - 删除数据delete
        delete from 表名 where conition;
        - delete from mysql.user where password=‘’
    - 查询数据 select
        - 单表查询
            - so easy
        - 多表查询
            - you shijian zai xie

六、索引原理与慢查询优化:
    - 为何要使用索引
        为了加速查询,否则查询速度太快了,默认是以id为索引的
    - 索引的数据结构
    - 聚集索引与辅助索引
    - MySQL索引管理
        - 功能:
            1:索引的功能就是加速查找
            2:MySQL中的primary keyunique,联合唯一也都是索引,这些索引除了加速查找以为,还有约束的功能
        - MySQL的常用索引
            1:普通索引index,加速查找
            2:唯一索引:
                - 主键索引primary key:加速查找+约束(不为空,补重复)
                - 唯一索引unique:加速查找+约束(不能重复)
            3:联合索引:
                - primary key(id,name):联合主键索引
                - unique(id,name):联合唯一索引
                - index(id,name):联合普通索引
        - 索引的两大类型hash与btree
            1:hash类型的索引:查询单条快,范围查询慢
            2:btree类型的索引:b+树,层数越多,数据量指数级增长(默认用这个,因为innodb默认用)
        - 创建/删除索引的语法
            1:创建表时:
            2:create在已经存在的表上创建索引:
            3alter table在已经存在的表上创建索引
            4:删除索引:drop index 索引名 on table_name

七、数据备份,pymysql模块:
    - MySQL数据备份
        1:物理备份:直接复制,适用于大型数据库环境,但不能恢复到异构系统中
        2:逻辑备份:备份的是建表,建库,插入等操作所执行的SQL语句,适用于中小型数据库,效率相对较低
        3:导出表:将表导入到文本文件中
        - 使用mysqldump实现逻辑备份
            1:语法:mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
            2:多库备份:mysqldump -uroot -p123 --databases db1 db2 > db1_db2.sql
            3:备份所有数据库:mysqldump -uroot -p123 --all-databases > all.sql
        - 恢复逻辑备份
            1:mysql -uroot -p123 < /backup/all.sql
            2:进入数据库;set sql_log_bin=0;source /root/db.sql
        - 数据库迁移(版本必须相同)
            mysqldump -h 源ip -uroot -p123 --databases db1 | mysql -h 目标ip -uroot -p456
    - pymysql模块的使用(pip install pymysql)
        #链接:conn = pymysql.connect(host=localhost,user=root,password=123,database=zhang,charset=utf8)
        #游标:cursor = conn.cursor()
        #执行SQL语句:cursor.execute(SQL语句)
        - execute会存在SQL注入,小心使用,具体可以参考我的另一篇博客xxxxxxx,名字忘了,自己搜搜
        - 增删改:conn.commit()
        - 查:fetchone,fetchmany,fetchall

八、视图,触发器,事务,存储过程,函数,流程控制:
    -视图
        1:一张虚拟的表,本质是根据SQL语句获取动态的数据集,并命名,用户使用只需要使用名称就好
        2:使用视图
        3:修改视图
        4:删除视图
    -触发器
        1:使用触发器可以定制用户对表进行增删改操作时前后的行为
        2:创建触发器
        3:使用触发器
        4:删除触发器
    -事务
        事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可会滚到原来的状态,从而保证数据的安全性
    -存储过程
        存储过程包含了一系列可执行的SQL语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql
        - 优点:
            1:用于替代程序写的SQL语句,实现程序与SQL的语句
            2:基于网络传输,传别名的数据量小,而直接传sql数据量大
        - 缺点:
            1:程序扩展功能不方便
        - 程序与数据库结合使用的三种方式
            1:MySQL:存储过程;程序:调用存储过程
            2:MySQL:   ;程序:纯SQL语句
            3:MySQL:   ;程序:类和对象,即orm(本质还是SQL语句)
        - 有参存储过程和午餐存储过程
        - 删除存储过程

    -函数(函数中不要写SQL语句)
        - 内置函数:avgsum,count等
        - 自定义函数:
        - 删除函数:
        - 执行函数:

    -流程控制
        - 条件语句
            1:if条件语句
        - 循环语句
            1:while循环
            2:repeat循环
            3:loop

九,orm框架sqlalchemy:
    - 具体参考我的另一篇博客

"""

 

假期(MySQL相关)

标签:ase   密码破解   游标   存储过程   avg   set   区分大小写   mysql介绍   不同   

原文地址:https://www.cnblogs.com/52-qq/p/8453965.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!