zoukankan      html  css  js  c++  java
  • mysql基础-数据类型和sql模式-学习之(三)

    0x01

    mysql的两种方向:

      开发DBA:数据库设计(E-R关系图)、sql开发、内置函数、存储历程(存储过程和存储函数)、触发器、时间调度器(event scheduler)
      运维---->管理DBA:安装、升级、备份、恢复、用户管理、权限管理、监控、分析、基准测试,语句优化(SQL语句)、数据字典,按需要配置服务器(服务器变量:MyISAM,InnoDB,缓存,日志)
    SQL 语言组成部分:
    DDL:数据定义语言
    DML:数据操作语言
    完整性定义语言,DDL的一部分功能
    主键约束、外键约束、唯一键约束、条件约束、非空约束、事务约束
    视图定义:虚表,存储下来的select语句
    事务控制:
    嵌入式SQL和动态SQL:
    DCL:数据授权语言

    数据类型的功用:
    1.存储的值类型
    2.占据的存储空间大小
    3.定长,变长
    4.如何被索引及排序
    5.是否能够被索引

    数据字典:依赖系统目录(花名册)(system catalog)
    保存数据库服务器上的元数据
    元数据:
    关系的名字
    每个关系的各字段的名字
    各字段的数据类型和长度
    约束
    每个关系上的视图的名字及视图的定义
    授权用户的名字
    用户的授权和账户信息

    统计类的数据
    每个关系字段的个数
    每个关系中行数
    每个关系的存储方法

    保存元数据的数据库
    information_schema
    mysql
    performance_schema

    数据类型:
    字符型
    数值型
    精确数值型
    整型

    十进制数据:decimal
    近似数值型
    单精度浮点型
    双精度浮点型
    日期时间型
    日期型
    时间型
    日期时间型
    时间戳
    year
    布尔型
    内建类型
    enum(枚举)
    set(集合)

    数值型:TINYINT          SMALLINT          MEDIUMINT        INT        BIGINT       DECIMAL      FLOAT     DOUBAL


    字符型:CHAR 255个字符          VARCHAR 65535个字符            TINYTEXT          TEXT            MEDIUMTEXT         LONGTEXT         BINARY        VARBINARY     TINYBLOB

    BLOB        MENDIUMBLOB        LONGBLOB        ENUM          SET

    日期时间型:DATE      TIME       DATETIME      TIMESTAMP     YEAR

    0x02

    字符型(char、varchar和text)常用的属性修饰符:
    NOT NULL:非空约束
    NULL:允许为空
    default ‘string’:默认值,不适用于text类型
    CHARACTER SET 字符集

    show variables like '%char%' 查看默认的字符集
    show character set 查看数据库支持的字符集

    show collation 排序规则
    collation '规则':修改排序规则

    binary,varbinaray和blob字符常用的属性修饰符
    NOT NULL
    NULL
    default 不适用与blob

    整形的常用属性修饰符
    AUTO_INCREMENT:自动增长
    前提:非空,且唯一,支持索引
    LAST_INSERT_ID():可以查看上次增长的数值,当插入多行时,只记录第一行 select last_insert_id();
    UNSIGNED:无符号
    NULL
    NOT NULL
    DEFAULT

    TRUNCATE 用来清空表中数据    truncate 

    浮点型常用修饰符:
    NULL
    NOT NULL
    UNSIGNSD
    DEFAULT
    使用g,f来定义总共有多少数字和小数点后有多少数字

    日期时间型常用的修饰符
    NULL
    NOT NULL
    DEFAULT

    ENUM和SET的修饰符
    NULL
    NOT NULL
    DEFAULT ‘’

    0x03

    MySQL有内置的SQL模式SQL_MODE:用来定义字符超出的操作和模仿别的数据库的类型,通过修改全局变量
    mysql的默认模式 对超过字符类型的数据截取掉 char(3) 插入 hello ---最终结果是 hel 后面被截取掉
    sql_mode 的三种常用的模式有:
    TRADITIONAL 使用传统模式
    STRICT_TRANS_TABLES 仅对支持事务的表的严格模式
    STRICT_ALL_TABLES 对所有表使用严格模式
    show global variables like 'sql_mode';

    设定服务器变量的值:通常仅用于支持动态的变量
    支持修改的服务器变量
    动态变量:可以在MySQL运行时修改
    静态变量:与配置文件中修改其值,并重启后方能生效
    服务器变量从其生效范围来讲,分两类
    全局变量:服务器级别,修改之后仅对新建立的会话生效
    回话变量:会话级别,仅对当前会话有效
    会话建立时,从全局继承各变量
    查看服务器变量

    格式:
    mysql> show [{global|session}] variables [like ''];
    mysql> select @@{globa|session}.variable_name

    实例:
    mysql> mysql> select * from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='SOME_VARIABLE_NAME'; 查看全局变量
    mysql> mysql> select * from information_schema.SESSION_VARIABLES where VARIABLE_NAME='SOME_VARIABLE_NAME'; 查看会话变量

    修改变量:
    前提:默认仅管理员有权限修改全局变量
    mysql> set {global|session} variable_name='value';
    set session sql_mode='STRICT_ALL_TABLES';     ------更改sql_mode的模式为  STRICT_ALL_TABLES
    更改为上面模式, 对有超过字符类型的数据直接拒绝写入,
    select @@session.sql_mode;

    查看:
    select * from information_schema.SESSION_VARIABLES where VARIABLE_NAME='sql_mode';
    select * from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='sql_mode';


    注意:无论是全局还是会话级别的动态变量修改,在重启mysql后都会失效,想永久有效,可以定义在配置文件中的响应段中[mysqld]


    查看mysql服务器变量有哪些命令行参数有哪些 mysqld --help --verbose

  • 相关阅读:
    移动视频开发让我们把会议室装进口袋里
    音视频 开发技术,让智能家居更智能!
    视频对讲SDK 大厅好友解决方案
    视频开发的安全保障措施
    手机视频开发即时通讯软件
    借音视频开发技术,开发招聘新途径
    移动视频技术的先驱
    tf.variable_scope
    sklearn 数据预处理
    Tensorflow自编码器及多层感知机
  • 原文地址:https://www.cnblogs.com/autopwn/p/5078447.html
Copyright © 2011-2022 走看看