zoukankan      html  css  js  c++  java
  • 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()函数来来插入当前的时间
  • 相关阅读:
    2016某天闲谈
    APP测试入门篇之APP基础知识(001)
    windows服务器下frp实现内网穿透
    nginx使用与配置
    spring boot 实现优雅的关闭
    spring boot 自定义sql分页查询
    java获取类加载路径和项目根路径的5种方法
    linux下 启动node 和关闭node
    docker 安装 fastdfs
    docker 常用命令和常用容器启动
  • 原文地址:https://www.cnblogs.com/jxl123/p/9635389.html
Copyright © 2011-2022 走看看