• Mysql知识


    Mysql知识

    存储引擎

    存储引擎就是如何存储数据,如何为存储数据建立索引和如何更新、查询数据等技术的实现方法,因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎可以称之为表类型(即存储与操作表的类型)

    常见存储引擎:详情参考: https://www.cnblogs.com/linhaifeng/articles/7213670.html

    1.innoDB存储引擎:支持事物,其设计目标主要面向联机事物处理的应用。

    特点:行锁设计,支持外键,并支持类似oracle的非锁定读,即默认读取操作不会产生锁。

    2.MyISAM存储引擎:不支持事物、表锁设计,支持全文索引。主要面向一些olap数。

    3.NDB存储引擎:一个集群类型存储引擎。面向oltp数据库应用类型。

    特点:高可用,高性能,高扩展性的数据库集群系统。

    4.Memory存储引擎:数据都存放在内存中,数据库重启或崩溃,表中的数据会丢失。

    5.Infobright存储引擎:是一个按列存储的第三方存储引擎。

    6.NTSE存储引擎:网易内部开发使用的引擎。

    7.BLACKHOLE:黑洞引擎,表中插入数据不会被记录。

    windows使用存储引擎的方式:

    使用存储引擎即在创建表时指定:

    - create table t1(id int)engine=innodb;
    - create table t2(id int)engine=myisam;
    - create table t3(id int)engine=blackhole;
    - create table t4(id int)engine=memory;

    数据类型

    建表的时候字段都有对应的数据类类型

    整形

    分类:tinyint , smallint, mediumint, int, bigint

    应用场景:存储年龄、等级、id、各种号码等。。。

    tinyint:默认由正负符号限制
       create table t2(id TINYINT);#创建表t2时更改其类型默认有正负符号限制。
       insert into t2 values(-129),(256);#插入数据默认最小-128,最大127多出的话以最大或最小值传入,最新版的则会报错不允许插入。
       create table t3(number tinyint unsigned);#创建表t3时更改其类型默认无正负符号限制
       insert into t3 values(-10); 插入数据为负值时新版会报错,旧版则为0
    INT:默认最大展示的位数11位
       create table t4(id int);#创建表t4更改id数据类型位int
       insert into t4 values(-21474836483333),(2147483647333333);# 向太
       表传入数据不管正负最多为11位切最大值2147483647最小值-2147483648,超过按最大值或最小值传入,新版会报错。
       create table t5(id int(8));#int后跟数字并非限制显示数据的位数,而是8位以内由空格补全。超出则正常显示
       create table t6(id int unsigned zerofill);#创建t6表数据类型位无正负号,插入数据不满以0填充

     

    img

    浮点型

    分类:float,double,decimal

    应用场景:身高,体重,薪资

    三者区别:

    注意:字段限制特点(5,3)前一位表示所有的位数,后一位表示小数个数。
    存储限制:
    float(255,30)
      double(255,30)
           decimal(65,30)
    create table t7(id float(255,30));
    create table t8(id double(255,30));
    create table t9(id decimal(65,30));

    字符类型char与varchar

    char:定长

    create table t10(name char(4)); #超过四个字符会报错,不够四个字符空格补全。

    varchar:不定长

    ceate table t11(name varchar(4)); #超过四个报错,不足四个有几个存几个

    char 与 varchar的比较

    char:
       1.浪费空间
       2.存取速度快
       比如:char(6):tank,jason,sean都是6个字符
    varvhar:
    1.节省空间
       2.存取速度慢
       比如:varchar(6):1bytes+ tank ,1bytes + jason  #1+ 表示的1是用来存长度的

    日期类型

    分类:

    date:2019-12-11
    time:18:08:08
    datetime:2019-12-11 18:08:08
    year:2019

    createtableteacher(id int,name varchar(16),bor_years year,work_time time,register_time datetime);
    insert into teacher values(1,'tank','2019','2019-12-11','18:08:08','2019-12-11 18:08:08');

    枚举与集合

    分类:

    枚举enum多选一

    集合set多选一或多选多

    枚举:
    create table user(id int,name varchar(16),grent enum('male','female','others'));
    insert into user1 vsalues(1,'sean','male'); #参数必须在表中
    集合:
    create table user2(id int,name varchar(16),grent enum('male','female','others'),hobbies set('read','sleep','play ball','run'));
    #多选一
    insert into user2 values(1,'tank','male','read');
    #多选多
    insert into useR2 values(2,'jason','female','read,sleep');#read,sleep必须连着写
    select * from user2;
    +------+-------+--------+------------+
    | id   | name  | grent  | hobbies    |
    +------+-------+--------+------------+
    |    2 | jason | female | read,sleep |
    +------+-------+--------+------------+

    约束条件

    约束条件就是对于数据库表插入数据时加以约束

    primary key(PK)

    create table user7(id int primary key);
    insert into user7 values(1);
    #primary key 除了约束之外,还是innodb引擎组织数据的语句,提升查询效率
    #一张表必须要有一个主键,如果没有设置主键,会从上向下搜索,知道遇见第一个不为空的且唯一的字段自动设置为主键
    create table user8(id int,name varchar(16),age int not null unique)engine = innodb;
    #如果包里没有指定任何可以设置主键的字段,那innodb会采用自己默认的一个隐藏关键字作为主键,隐藏意味着查询你的时候通过这个加速查询。
    #一张表中通常都应该有一个id字段,并且通常将id字段作为主键
    #联合主键:多个字段联合起来作为一个主键,本质上还是一个主键。
    create user9(id int, name varchar(16),primary key(id,name));
     desc user9;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | NO   | PRI | 0       |       |
    | name  | varchar(16) | NO   | PRI |         |       |
    +-------+-------------+------+-----+---------+-------+
    
    

     

    标识该字段为该表的主键,主键可以是唯一的表示记录

    foreign key(fk)

    标识该字段为该表的外键

    unique key(UK)

    标识字段的值唯一

    not null

    标识字段不能为空

    default

    为该字段设置默认值

    auto_increment

    标识该字段的值自动增长(整理类型,并为主键)

    create table user10(id int primary key auto_increment, name varchar(16));
    insert into user10(name) values('tank');
    select * from user10;
    +----+------+
    | id | name |
    +----+------+
    |  1 | tank |
    +----+------+ 
    #如果想自增从指定值开始,可插入第一条数据时先之低昂id值
    insert into user10(id,name)values(10,'tank');
    insert into user10(name)values('jak');
    insert into user10(name)values('tom');
     select * from user10;
    +----+------+
    | id | name |
    +----+------+
    |  1 | tank |
    | 10 | tank |
    | 11 | jak  |
    | 12 | tom  |
    +----+------+
    #注意:auto_increment通常加载在主键上,并且只能设置给primary key字段
    delete from user10;
    #delete删除表记录或者指定记录,但id不会重置为0
    delete from user10 where id ='12';
    insert into user10(name)values('jaks');
     select * from user10;
    +----+------+
    | id | name |
    +----+------+
    |  1 | tank |
    | 10 | tank |
    | 11 | jak  |
    | 13 | jaks |
    +----+------+
    #要想清空id可使用trunca user10;
    truncate user10;
        
    

    zerofill

    使0填充空格

    设置严格模式:

    # 查看数据库配置中变量名包含mode的配置参数:
    show variables like "%mode%";
    # 修改安全模式:
    set session;  # 局部有效,只在你当前操作的窗口有效
    set global session;  # 全局有效,永久有效
    # 修改完之后退出当前客户端重新登录即可
    set global sql_mode = 'STRICT_TRANS_TABLES';
    
  • 相关阅读:
    什么人一亏再亏,什么人亿万富翁? —兼谈本周经济与股市
    数组排序
    倒水
    倒水
    lua string
    lua string
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/cyfdtz/p/12107972.html
Copyright © 2020-2023  润新知