设为首页 收藏本站
查看: 1017|回复: 0

[经验分享] mysql数据类型 和 sql_mode

[复制链接]

尚未签到

发表于 2018-10-22 11:08:04 | 显示全部楼层 |阅读模式
  #####################################################################
  开发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_shcema
  数据类型:
  字符型
  char
  varchar
  binary
  varbinary
  text
  blob
  数值型
  精确数值型
  整型
  十进制数据:decimal
  近似数值型
  单精度浮点型
  双精度浮点型
  日期时间型
  日期型
  时间型
  日期时间型
  时间戳
  布尔型
  内建类型
  ENUM, SET
  数值型:
  TINYINT
  SMALLINT
  MEDIUMINT
  INT
  BIGINT
  DECIMAL
  FLOAT
  DOUBAL
  BIT
  字符型:
  CHAR
  VARCHAR
  TINYTEXT
  TEXT
  MEDIUMTEXT
  LONGTEXT
  BINARY
  VARBINARY
  TINYBLOB
  BLOB
  MEDIUMBLOB
  LONGBLOB
  ENUM
  SET
  日期时间型:
  DATE
  TIME
  DATETIME
  TIMESTAMP
  YEAR
  CHAR、VARCHAR和TEXT几种字符型常用的属性修饰符:
  NOT NULL:非空约束
  NULL:允许为空
  DEFAULT 'string':默认值,不适用于TEXT类型
  CHARACTER SET '字符集'
  mysql> SHOW VARIABLES LIKE '%char%';
  mysql> SHOW CHARACTER SET
  COLLATION '规则': 排序规则
  mysql> SHOW COLLATION;
  BINARY、VARBINARY和BLOB几种字符型常用的属性修饰符:
  NOT NULL
  NULL
  DEFAULT: 不适用于BLOB
  整型的常用属性修饰符:
  AUTO_INCREMENT:自动增长
  前提:非空,且惟一;支持索引,非负值;
  UNSIGNED:无符号
  NULL
  NOT NULL
  DEFAULT
  浮点型常用修饰符:
  NOT NULL
  NULL
  DEFAULT
  UNSIGNED
  日期时间型的修饰符:
  NOT NULL
  NULL
  DEFAULT
  ENUM和SET的修饰符:
  NOT NULL
  NULL
  DEFAULT ''
  MySQL SQL_MODE: SQL模式
  TRADITIONAL, STRICT_TRANS_TABLES, or STRICT_ALL_TABLES
  设定服务器变量的值:(仅用于支持动态的变量)
  支持修改的服务器变量:
  动态变量:可以MySQL运行时修改
  静态变量:于配置文件中修改其值,并重启后方能生效;
  服务器变量从其生效范围来讲,有两类:
  全局变量:服务器级别,修改之后仅对新建立的会话有效;
  会话变量:会话级别,仅对当前会话有效;
  会话建立时,从全局继承各变量;
  查看服务器变量:
mysql> SHOW [{GLOBAL|SESSION}] VARIABLES [LIKE ''];  
mysql> SELECT @@{GLOBAL|SESSION}.VARILABLE_NAME;
  
mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='SOME_VARIABLE_NAME';
  
mysql> SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='SOME_VARIABLE_NAME';
  修改变量
  前提:默认仅管理员有权限修改全局变量
  
mysql> SET {GLOBAL|SESSION} VARIABLE_NAME='VALUE';
  注意:无论是全局还是会话级别的动态变量修改,在重启mysqld后都会失效;想永久有效,可定义在配置文件中的相应段中[mysqld];
  创建数据库
mysql> CREATE DATABASE mydb;  
mysql> USE mydb;
  创建表:整形 非空 唯一 非负 AUTO_INCREMENT
  UNSIGNED 无符号 就是不支持负数
mysql> CREATE TABLE t1 (ID INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,Name CHAR(30));  
mysql> DESC t1;
  
+-------+------------------+------+-----+---------+----------------+
  
| Field | Type             | Null | Key | Default | Extra          |
  
+-------+------------------+------+-----+---------+----------------+
  
| ID    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
  
| Name  | char(30)         | YES  |     | NULL    |                |
  
+-------+------------------+------+-----+---------+----------------+
  
mysql> SELECT * FROM t1;
  
mysql> insert into t1 (Name) VALUES ('TOM'),('Jerry');
  
mysql> SELECT * FROM t1;
  
+----+-------+
  
| ID | Name  |
  
+----+-------+
  
|  1 | TOM   |
  
|  2 | Jerry |
  
+----+-------+
  
2 rows in set (0.00 sec)
  显示最后一次修改记录
mysql> SELECT LAST_INSERT_ID();  
+------------------+
  
| LAST_INSERT_ID() |
  
+------------------+
  
|                1 |
  
+------------------+
  
1 row in set (0.02 sec)
  
mysql> insert into t1 (Name) VALUES ('lily'),('haha');
  
mysql> SELECT LAST_INSERT_ID();
  
+------------------+
  
| LAST_INSERT_ID() |
  
+------------------+
  
|                3 |
  
+------------------+
  清空表
mysql> DELETE FROM t1;  
mysql> insert into t1 (Name) VALUES ('lucy');
  
Query OK, 1 row affected (0.11 sec)
  
mysql> SELECT * FROM t1;
  
+----+------+
  
| ID | Name |
  
+----+------+
  
|  5 | lucy |
  
+----+------+
  
mysql> SELECT LAST_INSERT_ID();
  
+------------------+
  
| LAST_INSERT_ID() |
  
+------------------+
  
|                5 |
  
+------------------+
  
1 row in set (0.00 sec)
  LAST_INSERT_ID()只记录上次的第一个插入的数据,即使delete清空表记录也一样存在
  ##########################################################
  TRUNCATE 清空
mysql> HELP TRUNCATE  
mysql> TRUNCATE t1;
  
Query OK, 0 rows affected (0.06 sec)
  
mysql> SELECT LAST_INSERT_ID();
  
+------------------+
  
| LAST_INSERT_ID() |
  
+------------------+
  
|                5 |
  
+------------------+
  
1 row in set (0.00 sec)
  
mysql> SELECT * FROM t1;
  
Empty set (0.00 sec)
  
mysql> insert into t1 (Name) VALUES ('lucy');
  
Query OK, 1 row affected (0.07 sec)
  
mysql> SELECT * FROM t1;
  
+----+------+
  
| ID | Name |
  
+----+------+
  
|  1 | lucy |
  
+----+------+
  
1 row in set (0.00 sec)
  
mysql> SELECT LAST_INSERT_ID();
  
+------------------+
  
| LAST_INSERT_ID() |
  
+------------------+
  
|                1 |
  
+------------------+
  
1 row in set (0.00 sec)
  ########################################################
  超出字符长度,默认会被截取
mysql> create table t2 (name CHAR (3));  
Query OK, 0 rows affected (0.14 sec)
  
mysql> INSERT INTO t2 VALUES ('jerry');
  
Query OK, 1 row affected, 1 warning (0.10 sec)
  
mysql> SHOW WARNINGS;
  
+---------+------+-------------------------------------------+
  
| Level   | Code | Message                                   |
  
+---------+------+-------------------------------------------+
  
| Warning | 1265 | Data truncated for column 'name' at row 1 |
  
+---------+------+-------------------------------------------+
  
mysql> SELECT * from t2;
  
+------+
  
| name |
  
+------+
  
| jer  |
  
+------+
  ###############################################
  
mysql> SHOW GLOBAL VARIABLES LIKE 'sql_mode';
  
+---------------+-------+
  
| Variable_name | Value |
  
+---------------+-------+
  
| sql_mode      |       |
  
+---------------+-------+



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-624902-1-1.html 上篇帖子: T-SQL 优化 下篇帖子: 常用SQL语句(Mysql)总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表