zoukankan      html  css  js  c++  java
  • MySQL数据库

    数据库分类

    关系型数据库:maridb, MySQL, SqlServer,Oracle

    非关系型数据库:mongodb, redis

    区别: 关系型数据库每列中数据类型是固定的,把数据存在硬盘中;非关系型数据库,可存多种类型数据,数据存在内存中

    基本操作

    mysql -h localhost -P 3306 -u root -p
    

    数据库操作

    show create database
    show databases
    drop database # 线上环境中,不能直接删除,必须先备份
    
    

    数据表操作

    show tables;
    create table test_tb (id int, name char(10)) default charset=utf8
    insert into test_tb (id, name) values(1, name);
    truncate table table_name;
    delete from test_tb;
    
    alter table test_tb add primary key (id)
    

    查询

    select count(*) as result_num from test_tbl;
    select id from test_tbl order by score desc;
    

    创建

    create table 表名(
    	字段名 列类型 [可选参数]
    	字段名 列类型 [可选参数]
    )charset=utf8;
    

    列约束

    auto_increment
    primary key
    not null
    default
    

    数据类型

    整形

    tinyint
    smallint
    int 
    mediumint
    bigint
    
    # 加上unsigned表示不能取负数
    
    

    浮点型

    float:不一定精确
    decimal:非常精确的数字
    
    

    字符串

    char
    # 无论插入字符是多少个,永远固定占规定的长度
    # 场景:
    1.身份证,2.手机号,3.md5加密后的值
    varchar
    # 不确定时,一般建议使用varchar(255)
    

    时间日期类型

    YEAR # YYYY
    DATE # YYYY-MM-DD
    TIME # HH:MM:SS
    DATETIME # YYYY-MM-DD HH:MM:SS
    
    

    修改

    # 修改表名
    alter table 旧表名 rename 新表名
    
    # 增加字段
    alter table 表名 add 字段名 列类型 [可选的参数]
    
    # 删除字段
    alter table 表名 drop 字段名
    
    # 修改字段属性
    alter table 表名 modify 字段名 数据类型 [完整性约束条件]
    
    # 修改字段名
    alter table 表名 旧字段名 新字段名 新数据类型 [完整性约束条件]
    

    复制表结构

    show create table 表名;
    

    数据行操作

    增加

    insert into 表名 (列1, 列2) values (值1, 值2)
    

    删除

    delete from 表名 where 条件;
    
    delete from 表名 # 删除所有
    
    truncate 表名 # 删除所有,没有where条件的
    

    修改

    update 表名 set 列名='xxx' where 条件
    
    

    select * from 表名 where 条件
    # 条件
    between..and..
    distinct
    like # 模糊查询
    'x%' # 以x开头
    
    

    索引

    作用:加快查询

    底层原理:B+树

    种类

    • 主键索引:primary key
    • 唯一索引:unique
      • 联合唯一索引:unique(name, email)
    • 普通索引:index (name)
      • 联合索引: index (name, job)

    使用注意:

    • 不能在sql语句中,进行四则运算
    • 不推荐使用函数
    • 类型要一致
    • 用count(列名)代替count(*)
    • 组合索引前缀

    慢查询

    set global slow_query_log = on
    set global slow_query_log_file = ''
    set global long_query_time = 1
    

    pymysql

    conn = pymysql.connect(host="localhost", user="root", password="", database="test_db") # 连接
    cursor = conn.cursor()
    cursor.execute(sql, args) # 执行
    result = cursor.fetchone()
    result = cursor.fetchall()
    result = cursor.fetchmany(size)
    cursor.lastrowid
    cursor.close()
    conn.close()
    
    

    补充

    事务

    事务的特征

    • 原子性,最大特征,任务要么全部执行,要么全部取消
    • 一致性,执行前后,数据匹配
    • 隔离性,某个事务操作,对其他事务是不可见的
    • 永久性,事务完成后,其影响应该保持下来
    start transaction
    # rollback;
    commit;
    

    存储引擎

    InnoDB: 支持事务,支持行锁

    MyIsam:不支持事务,支持表锁

  • 相关阅读:
    [HNOI2013]切糕
    [POI2015]Kinoman
    「NOI2014」动物园
    [ZJOI2006]书架
    [HEOI2015]定价
    bzoj1833 数字计数
    bzoj2565 最长双回文子串
    bzoj4198 荷马史诗
    bzoj1193 马步距离
    bzoj3329 Xorequ
  • 原文地址:https://www.cnblogs.com/YajunRan/p/11756460.html
Copyright © 2011-2022 走看看