mysql 51cto 数据类型_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 [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      |       |

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值