浅见池也 发表于 2018-10-22 11:08:04

mysql数据类型 和 sql_mode

  #####################################################################
  开发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 ;  
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后都会失效;想永久有效,可定义在配置文件中的相应段中;
  创建数据库
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]
查看完整版本: mysql数据类型 和 sql_mode