mysql定义INT型变量_MySQL数据类型、变量修饰及变量区别

客户端程序:mysql、mysqladmin、mysqldump、mysqlimport、mysqlcheck

服务器端程序:mysqld, mysqld_safe, mysqld_multi

my.cnf配置文件查找顺序,以最后一个找到的为准

/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf --> --default-extra-file=/path/to/somefile --> ~/.my.cnf (用户家目录下的)

my.cnf文件是分段配置的文件

[mysqld]    则只对mysqld应用程序生效

[mysqld_safe] 则只对mysqld_safe应用程序生效

[client]    则对所有mysql客户端程序生效

[mysql]     则只对客户端的mysql程序生效

mysql> use mysql

查看一个表的状态信息,包括使用的引擎

mysql> show table status like 'user'\G

*************************** 1. row ***************************

Name: user

Engine: MyISAM

Version: 10

Row_format: Dynamic

Rows: 4

Avg_row_length: 143

Data_length: 572

Max_data_length: 281474976710655

Index_length: 2048

Data_free: 0

Auto_increment: NULL

Create_time: 2016-12-23 19:51:38

Update_time: 2017-02-11 17:39:16

Check_time: NULL

Collation: utf8_bin

Checksum: NULL

Create_options:

Comment: Users and global privileges

数据类型:

数值型 精确数值

INT 整型

TINYINT 2^8 SMALLINT 2^16 MEDIAINT 2^24 INT 2^32 BIGINT 2^64

DECIMAL 精确十进制

BIT 按位存储

近似数值

float  2^4 单精度浮点型

double 2^8 双精度浮点型

real

float(g,f)

g:表示一共多少位

f:表示浮点数多少位

例 1.36 g=3 f=2

字符型

定长:CHAR(#)、BINARY

CHAR 2^8

VARCHAR 2^16 变长

BINARY 区分大小写、定长

VARBINARY 区分大小写、变长

TINYBLOB 2^8

BLOB 2^16 二进制大对象

MEDIUMBLOB 2^24

LONGBLOB 2^32

TINYTEXT 2^8

TEXT 2^16 文本型

MEDIUNTEXT 2^24

LONGTEXT 2^32

ENUM 枚举

例: ENUM(‘M’,‘F’) 只能写入 M或F

SET 集合

例: SET(‘M’,‘F’) 只能写M、F、MF、FM

日期时间型

DATE "CCYY-MM--DD"

TIME 'hh:mm:ss'

DATETIME 'CCYY-MM-DD hh:mm;ss'

YEAR CCYY 或 YY

例: YEAR(4)则表示用4位表示时间

YEAR(2)则表示用2位表示时间

注:当占据空间超过8个位(2^8)时,每2^8要有一位作为结束符

字符串类型的修饰:

NOT NULL 不能为空

NULL 可为空

DEFAULT 当用户未输入值时给一个默认的值

CHARACTER SET (字符集)

COLLATION (排序规则)

>show character set; 显示当前服务器上支持的所有字符集

>show COLLATION; 在各个字符集下显示排序规则

×××修饰

AUTO_INCREMENT (自动增长型)一定不能为0

一定要创建主键索引或者唯一键索引

一定要为×××且无符号

UNGIGNED (无符号) 修饰×××

LAST_INSERT_ID() 返回最近增长值的函数

mysql> select last_insert_id();

+------------------+

| last_insert_id() |

+------------------+

|                0 |

+------------------+

1 row in set (0.10 sec)

mysql> use test

mysql> create table test(id int unsigned auto_increment not null primary key,name           char(20));

Query OK, 0 rows affected (0.80 sec)

mysql> show tables ;

+----------------+

| Tables_in_test |

+----------------+

| test           |

+----------------+

1 row in set (0.00 sec)

MySQL的变量分 为:

全局变量:对所有会话都生效,但只能由MySQL的root用户修改

会话变量:只对当前会话生效,所有用户都可以修改

生效时间

动态变量:即时修改、即时生效

静态变量:要写在配置文件中,重启生效

动态变量的生效方式

全局:对当前会话无效,对新建立会话有效

会话:即时生效,但只对当前会话有效

>show global variables;

>show global variables like 'sql_mode';

>show variables like 'sql_mode';

变量的显示

@显示用户自定义变量

@@显示服务器bianliang

一般用select显示某个变量

>show @@session.sql_mode;

>show @@global.sql_mode;

变量的设置

一般用set设置变量

>set global sql_mode='strict_all_tables'; 修改全局变量sql_mode

mysql> select @@global.sql_mode; 无定义

+--------------------------------------------+

| @@global.sql_mode                          |

+--------------------------------------------+

| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |

+--------------------------------------------+

1 row in set (0.03 sec)

mysql> set global sql_mode='strict_all_tables'; 全局改为strict_all_tables

Query OK, 0 rows affected (0.04 sec)

mysql> select @@global.sql_mode; 全局已近修改

+-------------------+

| @@global.sql_mode |

+-------------------+

| STRICT_ALL_TABLES |

+-------------------+

1 row in set (0.00 sec)

mysql> select @@session.sql_mode; 但当前会话仍然为未设置

+--------------------------------------------+

| @@session.sql_mode                         |

+--------------------------------------------+

| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |

+--------------------------------------------+

1 row in set (0.00 sec)

且当前会话>全局

所以仍然未生效

重新登录

mysql>

mysql> select @@global.sql_mode; 全局仍然生效

+-------------------+

| @@global.sql_mode |

+-------------------+

| STRICT_ALL_TABLES |

+-------------------+

1 row in set (0.00 sec)

mysql> select @@session.sql_mode; 当前会话也随着全局及重新登录生效

+--------------------+

| @@session.sql_mode |

+--------------------+

| STRICT_ALL_TABLES  |

+--------------------+

1 row in set (0.00 sec)

mysql> set session sql_mode='strict_trans_tables'; 修改会话变量

Query OK, 0 rows affected (0.00 sec)

mysql> select @@session.sql_mode; 会话变量已经修改,且已经生效

+---------------------+

| @@session.sql_mode  |

+---------------------+

| STRICT_TRANS_TABLES |

+---------------------+

1 row in set (0.00 sec)

mysql> select @@global.sql_mode; 全局变量仍然未变,当会被会话变量覆盖

+-------------------+

| @@global.sql_mode |

+-------------------+

| STRICT_ALL_TABLES |

+-------------------+

1 row in set (0.00 sec)

再次重新登录

mysql> select @@global.sql_mode; 全局变量仍然未变

+-------------------+

| @@global.sql_mode |

+-------------------+

| STRICT_ALL_TABLES |

+-------------------+

1 row in set (0.00 sec)

mysql> select @@session.sql_mode; 会话变量也已变回

+--------------------+

| @@session.sql_mode |

+--------------------+

| STRICT_ALL_TABLES  |

+--------------------+

1 row in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值