day 34

""""
上节课复习:
登入:mysql -uroot -padmin (本机)

一.库的操作(文件夹):
创建:create database mydb;
修改:alter database mydd charset gbk
看:show create database mydb
删除:drop database mydb

二.表的操作:
创建:create table mydb.t1(id int ,name char ,age int);
删除:drop table t1;
看:show table t1 ;show create table t1;desc t1
修改:alter table t1 add|drop|modfiy|change

三.数据:
创建:insert into t1 values(1,'jxl",11);
删除:delete from t1 name where id =1
查看:selele  * from t1;
修该:update t1 set name = "JXL" where id =1;

今日内容:
    1.数据的存储引擎: 存储数据的核心代码
        什么是引擎?  >>>>>一个功能的核心部分
        引擎可以分几类:
        为什么要分类?
        .....
        mysql : 核心功能是存储数据 涉及到存储数据的代码,

        查看引擎:show engines
        不同的引擎测试:
            创建表时在最后指定引擎的名称 :engine=xxx
        create table t1(id int )engine= innodb;  默认支持的功能多
        create table t2(id int not null)engine= csv ;  >>数据存储的为表格
        create table t2(id int not null)engine= menory ;  >>数据存储在数据库服务端的缓存中,重启服务器就没有
        create table t2(id int not null)engine= blackhole ;

    2.建表的完整语句 table
    create table 文件夹.表名(字段名称 数据类型[长度,约束条件])
    必选:字段名称,数据类型 表名
    可选:长度,约束条件

    长度:指的是数据的长度
    数据类型也是一种约束条件
    约束条件:数据设置的规范,(指的是除了数据类型额外的规范)

    create table t1(id int(10),name char(3));

    如果添加的数据超过了指定的长度,超出范围的数据会被丢弃
    注意:字段名 表名 库名 不能和mysql的关键字相同(select create)


    3.数据类型:
       1. 为了更加准确地描述某种事物
       2. 描述起来更加方便
       3. 节省内存空间
        1 啊 你 utf8下占5
        1 啊 你 unidcode 下占6

        mysql 支持的数据类型:unsigned(无符号)
        一. 整型: 默认是有符号的 需要一个二进制位存放符号
            tinyint(1个字节):(默认是有符号的:最大值是127 需要一个二进制位存放符号)
                无符号的最大值:255
                有符号的最大值:127
            smallint(2个字节):
            mediumint(3个字节):
            int(4个字节):******
            bigint(8个字节):

             给整形加上约束 unsigned 来表示无符号;如果数据超出范围尽可能的保存最大的

                 eg: tinyint模式下 在无符号输入128 则会保存127
                    在有符号的输入-1280 则会保存-128

            修改严格模式:
                以上出现的现象为:mysql的非严格模式
                查看当前的模式:show  variables like "sql_mode";
                修改为严格模式:set  global  sql_mode="STRICT_TRANS_TABLES"; 如果值超出范围会报错 在一些版本下默认的就是严格模式
            怎么选着:能够保存数据的最小的类型

            长度限制对于整型的意义:
                create table t1(id int(10) );
                insert into t1 values(111111)
                select * from t1 ;
                发现存储成功
                说明这里的10(宽度) 限制的不是数据的长度,而是显示的宽度
                如果你的数据超过了显示的宽度,有几个显示几个,如果不足的话,需要的告诉他用什么来补全
                 create table t1(id int(10) serofill);  不足用零补全 ********
                 要限制显示宽度:
                    1.创建表时,给整形加上宽度
                    2.用zerofill


        二.浮点型:
            float(4个字节): ******
            double(8个字节):****
            decimal(不确定 手动自定):****

            相同点:
                   小数部分的最大长度为30
                   float 和 double 的整体的(加上小数点部分)最大长度为255
            不同点:
                    decimal的整体的最大长度为65
                    精度不同
                    double 比 float 精度高
                    decimal 是准确的 不会丢失精度

            给浮点设置宽度限制:
            float(m,d)
            double(m,d)
            decimal(m,d)
            m表示:浮点数的整体的长度,
            d表示 小数部分的长度

            例如:float(5,3) 最大值:99.999

            如何选着:按照需求选着

        三. 字符串;
         char:定长字符  长度是固定的 无论你存储的数据是有多,占的容量是一样的  char(3) 在硬盘保存数据还是占用3字符长度 "a"  实际是"  a"
         varchar: 变长字符:存储的数据有多长就占用多长   varchar(3)  在硬盘保存数据还是占用1 字符长度 "a" 实际是:"a" 能支持的最大长度为65535 ,用于保存数据长度最长为两个bytes

         yxx exx lxx zxx  char(3)
         (1bytes + yx)(1bytes +exx )(1bytes+1x) varchar()
         如果是可变的长度(varchar):不知道数据从哪里开始从哪里结束,所以要一个位置保存数据逇长度,保存数据的长度最大占用2bytes
1
         验证:
         使用一个函数:插char_length 的长度
        create table t1(a char(4), b varchar(4))
        insert into t1 value("x","x");
        select char_length(a),char_length(b) from t1 ;
        两各字段都为1 >>> 是因为mysql在存储时 自动加上个空格的 对使用者而言都是无意义的,所以mysql会自动将空格处理掉
        设置现原形: set glodal sql_mode = "PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES"
        重启服务器

       当你在执行这样的查询语句是 mysql会自动将参数末尾的空格去掉
        模糊查询:select * from  t1 where name like "yh%"; % 0 个或多个字符
        模糊查询:select * from  t1 where name like "yh_"; _一个任意字符

        当你在使用模糊查询时,要注意 定长字符 后面可能会有空格 所以最好在后面加上百分号 %

        如何选择:
         char :
            存取效率高
            浪费存储空间
        varchar:
            存取效率低于char
            节省存储空间

    char varchar 长度都比较小  最大是65535


    大文本类型:
        Text:TINYTEXT TEXT MEDIUMTEXT LOGINTEXT
        BLOB系列 TINYBLOB BLOB MEDIUMBLOB LONGBLOB

    二进制类型:用于存储多媒体数据 比如视频 但是我们一般不会将真实的内容存储,而是将而文件路径存储在数据库中
    BINARY系列 BINARY VARBINARY



        四.时间日期:
            time 是分秒
            year 年份
            data 日期 年月日
            datatime 日期加时间 年月日 十分秒  年份最大是9999  可以为空 默认为当前的时间
            timestamp 时间戳 从1970-1-1 开始算 年份最大是2037
        共同点:
            时间的获取都是通过字符串类型

            都可以用now()函数来来插入当前的时间

 

posted @ 2018-09-12 16:08  jiangxiaolong_mrx  阅读(181)  评论(0编辑  收藏  举报