字符编码与配置文件

1.字符编码的修改-防止乱码(5.6版本编码不一致)
  修改配置文件-复制配置文件修改配置文件内容-统一将字符编码修改为utf8(复制的配置文件的命名与原文件开头必须一致)
2.配置文件my-default.ini-复制命名my.ini(苹果电脑或Linux系统后缀可能不一致)

存储引擎

1.存储引擎:针对数据的不同存取方法
2.查看所有引擎命令:show engines;
3.类型
  3.1 MyISAM:MySQL5.5及以前版本默认的存储引擎
             存取速度很快 但是安全性较低 功能较少
  3.2 InnoDB:MySQL5.6以后版本的默认存储引擎
             存取速度没有MyISAM快 但数据安全性较高 并且支持事务、行锁、外健等诸多功能
  3.3 Memory:基于内存的存储引擎
             存取速度很快 但是断电及丢失
  3.4 BlackHole(黑洞):任何数据写进去都会丢失 类似于垃圾桶
注:MySQL中对字母大小写不敏感
    windows cmd终端的右键-粘贴
 4.引擎设置:创建表时指定
   create table 表名(列名称 数据类型) engine=引擎类型
 5.产生的表
   MyISAM:
         .frm 表结构
         .MYD 表数据
         .MYI 表索引(方便数据查询)
   InnoDB:
          .frm 表结构
          .ibd 表数据、表索引(方便数据查询)
   Memory:
		  .frm 表结构
   BlackHole:
		   .frm 表结构

约束条件

1.约束条件:对表中字段进行约束 一般写在字段某个字段后面 如果有多个约束条件用空格隔开

create table 表名(字段名 数据 约束条件1 约束条件2 约束条件3)

2.类型

2.1 unsigned-无符号(字符长度中带正负号)
    create table 表名(字段名 数据类型 unsigned)
2.2 zerofill-零填充(需要一定数据长度可用0补足)
    create table 表名(字段名 数据类型(长度) zerofill)
2.3 not null-非空(规定一些字段不能为空时)
    create table 表名(字段名 数据类型(长度) not null)
2.4 default-默认值(提前定义好一些数据类型 如性别等)
    create table 表名(字段名 数据类型(长度) default)
2.5 unique-唯一值(设置该字段不能重复 如编号等)
    create table 表名(字段名 数据类型(长度) unique)-单列唯一
    create table 表名(字段名1 数据类型,字段名2 数据类型 unique(字段名1,字段名2))-联合唯一

创建表的完整语法

1.完整语法

  cerate table 表名(字段名称 数据类型) 约束条件 engine=存储引擎;
 注:一个表必须要有一个字段名称及数据类型 
    约束条件与存储引擎不是必要条件(需要添加)
    约束条件可以是多个 用逗号隔开
    添加多个字段时 最后不加逗号

字段类型

一、字段类型之整型

1.类型(根据字符长度不同分类)
  tinyint     1bytes     
  smallint    2bytes
  int         3bytes
  bigint      4bytes
2.存在符号整数范围(其余类型使用方法一致)
  2.1 存在符号时范围(-128~127)
   新建表格:create table info1(num tinyint);
   添加负数数据:insert into info1 values(-256);
   添加整数数据:insert into info1 values(256);
   结果:-128   127
  2.2 取消符号范围(0~255)
    新建表格:create table info2(num tinyint unsigned);
    添加负数数据:insert into info2 values(-256);
    添加正数数据:insert into info2 values(256);
    结果:0      255
  注:符号占据比特位
 3.存在的问题:插入的数据超出范围时自动修改-使输入的数据不存在任何意义(应该直接报错不然添加)
    3.1 原因:修改配置文件时为将限制命令加入
    3.2 解决办法:
    	命令临时修改:set session sql_mode='STRICT_TRANS_TABLES' 当前客户端界面有效
        			set global sql_mode='STRICT_TRANS_TABLES'  服务端不重启永久有效
         配置文件永久修改:[mysqld]
        						sql_mode='STRICT_TRANS_TABLES' 修改后需要重启服务端

二、字段类型之浮点型

1.类型(根据精确度不同分类)
  float
  double
  decimal
2.使用方式
  float(255,30)      # 255-总占位数 30-小数占位数
  double(255,30)
  decimal(65,30)
3.精确度
  新建表格:create table info3(mun float(255,30));    # 数据类型括号里需写位数
           create table info4(num double(255,30));
           create table info5(num decimal(65,30));
  添加数据:insert into info3 values(1.111111111111111111111111);
		   insert into info4 values(1.111111111111111111111111);
            insert into info5 values(1.111111111111111111111111);
   结果:  info3:1.111111164093017600000000 
		  info4:1.111111111111111200000000
           info5:1.111111111111111111111110
注:float < double < decimal  一般情况下float就可以了 如果需要精准度可以用字符串

三、字段类型之字符型

1.类型
  char(长度)           定长
  varchar(长度)        变长
2.使用方法
  char(4):最大只能存储四个字符 如果超出范围则直接报错 不超出用空格补足(占空间)
  varchar(4):最大只能存储四个字符 如果超出范围之间报错 不超过有几位保存几位
3.长度 
  新建表格:create table info6(name char(4));
  		  create table info7(name varchar(4));
   添加数据:insert into info6 values('jason')    # 报错
            insert into info7 values('jason')    # 报错
    	    insert into info6 values('tom')      # tom
            insert into info7 values('lili')     # lili
   查看字符串长度命令:selent char_length(字符串)
注:默认情况下char在存储的时候针对没有满足固定位数的字符会自动填充空格 
   在读取时自动会将空格移除 如果要查看(此方法为替换 不是新增 因此需要写上原有配置)
    set global sql_mode='strict_trans_tables,pad_char_to_full_length';
4.优劣
  char 优点:整存整取 速度快
       缺点:浪费内存
  varchar 优点:节省内存
          缺点:存取速度慢与char(需要操作报头耗时) -会发生黏包
 注:两者使用频率都很高 现在默认很多时候是varchar
 

四、字段类型之枚举与集合

1.区别
  枚举enum    多选一(如性别)
  集合set     多选多(如爱好)
2.使用
  新建表格:create table info8(neme varchar(32),gender enum('male','female'))
           create table info9(name varchar(32),hobbies set('read','music'))
        

五、字段类型之日期

1.类型
  datetime        年月日时分秒
  date            年月日
  time            时分秒
  year            年
2.使用
  新建表格:create table info10(id int,
                           name varchar(32),
                           reg_time datetime,
                           bith date,
                           study_time time,
                           join_time year);
   添加数据:insert into info10 values(1,'lili','2022-11-11 11:11:11','2022-11-11','11:11:11', '2022');

数字的含义

数字大部分情况下都是用来限制字段的存储长度 
整型:不是用来限制长度而是展示长度(一般不加括号写数字除非是业务需要)
create table t1(id int(3));
create table t2(id int(3) zerofill);
 posted on 2022-08-15 23:00  拾荒菇凉  阅读(85)  评论(0)    收藏  举报