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
mysql基础-数据类型和sql模式-学习之(三)的更多相关文章
- MySQL(2)-数据类型和Schema
一.数据类型 只介绍基本的数据类型. MySQL中选择合适的数据类型还是很有必要的,下面是一些通用原则: 小的就是好的 一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快, ...
- P4语法(1)基础数据类型和Header
文章学习自:P4语言编程详解 由于原文有一点的年份,所以也继续阅读了相关的最新规范. P4语言规范 基础数据类型 布尔型(bool) 运算符 描述 and 双目运算符,结果为布尔型 or 双目运算符, ...
- 在C#项目中需要用double类型操作MSSQL float类型数据(附C#数据类型和SQL数据类型对照)
C#操作SQL Float类型,数据会多很多小数,原来是C#的float和sql的float类型不一致.以下是数据库中与C#中的数据类型对照. /// <summary> /// 数据库中 ...
- C#数据类型和SQL数据类型对照
C#操作SQL Float类型,数据会多很多小数,原来是C#的float和sql的float类型不一致 /// <summary> /// 数据库中与C#中的数 ...
- 《Python》 基础数据类型和for循环
一.基础数据类型 总览 int:用于计算,计数,运算等.1.2.3.100... str:‘这些内容’,用于少量数据的存储,便于操作. bool:True,False,两种状态,机器反馈给用户的对,错 ...
- Sql Server中的数据类型和Mysql中的数据类型的对应关系(转)
Sql Server中的数据类型和Mysql中的数据类型的对应关系(转):https://blog.csdn.net/lilong329329/article/details/78899477 一.S ...
- Java数据类型和MySql数据类型对应一览
类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N ...
- MySql数据类型和Java数据类型对应一览
类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N ...
- Java数据类型和MySql数据类型对应一览 [转]
类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N ...
随机推荐
- java 使用抽象工厂封装特性方法
1.创建抽象类:封装含有相同特性的方法. */ public abstract class AbstractPayment { public abstract String progress() th ...
- 【雕爷学编程】Arduino动手做(51)---触摸按键模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...
- vue项目中使用less
1.安装less less-loader npm i -D less less-loader 2.在 .vue文件中使用lang="less"和@import // home.le ...
- 旧版flexbox局部填坑
本来昨晚要写一篇react的小笔记,恰好同学小聚的时候附近有个ios维修,把我的4s拿去修好,早上用我还是ios5.1系统的4s打开自己的页面,发现flexbox布局的部分是乱的,眼前一黑. what ...
- Java基础之值传递
一.传递类型 我们从c语言开始学习程序设计语言时就知道,参数的传递类型一般有两种:值传递和引用传递.那么什么是值传递什么是引用传递呢? 值传递:指在调用方法时将实际参数的值拷贝一份传递给方法,这样方法 ...
- jQuery的插件和跨域、ajax
1. 插件: 也称组件 什么是: 拥有专属的HTML,CSS和js的独立页面区域 为什么: 重用! 何时: 只要一个功能/区域可能被反复使用时 如何: 3个来源: 1. 官方插件:jquery ui ...
- 最优化之Robust PCA
最近加了一个QQ群,接触了点新的东西,包括稀疏近似,低秩近似和压缩感知等.Robust PCA中既包含了低秩,又包含了稀疏,于是以其为切入点,做了如下笔记.笔记中有的公式有比较详细的推导,希望对读者有 ...
- DBUtils 使用方法
导包 jar DBUtils.jar QueryRunner中提供对sql语句操作的API. update(Connection conn, String sql, Object... param ...
- Istio Gateway网关
Istio Ingress Gateway Istio 服务网格中的网关 使用网关为网格来管理入站和出站流量,可以让用户指定要进入或离开网格的流量. 使用网关为网格来管理入站和出站流量,可以让用户指定 ...
- 华为五大专家亲述:如何转型搞 AI?
导语:非AI专业技术人员转型AI技术,或是作为一名学生学习AI技术开发,对每个有这样诉求和经历的人来说,都希望能够看到AI技术人才的成长经历,给出自己的真实经历分享. 前言 参考塞缪尔.约翰逊(18世 ...