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

时间: 2024-08-10 02:10:58

mysql基础-数据类型和sql模式-学习之(三)的相关文章

MySql数据库数据类型和Sql Server 数据库数据类型之间的差异

1. MySQL支持enum和set类型,SQL Server不支持:2. MySQL不支持nchar.nvarchar.ntext类型:3. MySQL数据库的递增语句是AUTO_INCREMENT,而MS SQL是identity(1,1):4. MS SQL默认到处表创建语句的默认值表示是((0)),而在MySQL里面是不允许带两括号的:5. MySQL需要为表指定存储类型:6. MS SQL识别符是[],[type]表示他区别于关键字,但是MySQL却是 `,也就是按键1左边的那个符号:

mysql 数据类型和sql语句

sql:被称为结构化查询语言 其内部被分为: DML语句:数据操作语言,用于增(insert),删(delete),查(select),改(update) DDL语句:数据定义语言,用于实现数据存储,create,drop,alter DCL语句:数据控制语言,一般用于权限控制.grant,revoke,commit, rollback mysql发行版分为商业版(enterprise 收费),社区版(community  是免费版本) 官网:www.mysql.com mysql 是c/s 架

在C#项目中需要用double类型操作MSSQL float类型数据(附C#数据类型和SQL数据类型对照)

C#操作SQL Float类型,数据会多很多小数,原来是C#的float和sql的float类型不一致.以下是数据库中与C#中的数据类型对照. /// <summary> /// 数据库中与C#中的数据类型对照 /// </summary> /// <param name="type"></param> /// <returns></returns> private string ChangeToCSharpTyp

Java数据类型和SQL Serverl数据类型对应表

SQL Server 类型 JDBC 类型 (java.sql.Types) Java 语言类型 bigint BIGINT long timestamp binary BINARY byte[] bit BIT boolean char CHAR String decimal money smallmoney DECIMAL java.math.BigDecimal float DOUBLE double int INTEGER int image varbinary(max) LONGVAR

Sql Server中的数据类型和Mysql中的数据类型的对应关系(转)

Sql Server中的数据类型和Mysql中的数据类型的对应关系(转):https://blog.csdn.net/lilong329329/article/details/78899477 一.SQL SERVER与MySQL数据存储的差异 1.SQL SERVER中的datetime,保留到微秒(秒后小数点3位),而mysql仅保留到秒,转换后是否会影响业务,如果影响,需要新增一个字段专门来存储微秒或者毫秒,虽然mysql中没有时间数据类型的精度到达微秒或者毫秒,但是mysql提供对微秒的

MySql数据类型和Java数据类型对应一览

类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N CHAR java.lang.String 1   BLOB L+N BLOB java.lang.byte[] -4   TEXT 65535 VARCHAR java.lang.String -1               INTEGER 4 INTEGER UNSIGNED java.la

Java数据类型和MySql数据类型对应表(转)

Java数据类型和MySql数据类型对应表 java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N CHAR java.lang.String 1   BLOB L+N BLOB java.lang.byte[] -4   TEXT 65535 VARCHAR java.lang.String -1        

Java数据类型和MySql数据类型对应表

Java数据类型和MySql数据类型对应表: 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BLOB java.lang.byte[] -4 TEXT 65535 VARCHAR java.lang.String -1 INTEGER 4 INTEGER UNSIGNED java.lang.Long 4 TI

Java数据类型和MySql数据类型对应一览

类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N CHAR java.lang.String 1   BLOB L+N BLOB java.lang.byte[] -4   TEXT 65535 VARCHAR java.lang.String -1               INTEGER 4 INTEGER UNSIGNED java.la