mysql数据类型:
整型:
数据类型 | 字节 |
---|---|
TINYINT(有符号-128~127 无符号0~255) | 1 |
SMALLINT(有符号-32768~32767 无符号0~65535) | 2 |
MEDIUMINT(有符号-8388608~8388607 无符号0~16777215) | 3 |
INT(有符号-2的31次方到2的31次方减1 无符号2的32次方减1) | 4 |
BIGINT | 8 |
浮点型:
数据类型 | 字节 |
---|---|
FLOAT[(M,D)]M为数字总位数,D是小数点后面的位数,如省略,根据硬件允许的限制来保存,数据类型精确到大约小数点后7位 | 4 |
DOUBLE[(M,D)] | 8 |
日期:
日期类型 | 范围 |
---|---|
YEAR | 年份yyyy |
TIME | 时间(hh-mm-ss) |
DATE | 日期(yyyy-mm-dd) |
DATETIME | 日期与时间組合(yyyy-mm-dd hh-mm-ss) |
TIMESTAMP | yyyymmddhhmmss |
字符型:
数据类型 | 最大长度 |
---|---|
CHAR(M) | 255 |
VARCHAR(M) | 255 |
TINYTEXT | 255 |
TEXT | 65535 |
MEDIUMTEXT | 2^24 - 1 |
LONGTEXT | 2^32 - 1 |
ENUM(‘value1’, ‘value2’, …) | 集合最大数目为65535 |
SET(‘value1’, ‘value2’, …) | 集合最大数目为64 |
创建数据表:
CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type,...)
查看数据表的列表:
SHOW TABLES [FROM db_name] [LIKE 'prttern' | WHERE expr]
查看数据表的结构:
SHOW COLUMNS FROM tbl_name
插入数据:
INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,...)
记录查找:
SELECT expr,... FROM tbl_name
约束:
1,约束保证数据的完整性和一致性
2,分为表级约束和列级约束
3,类型包括
NOT NULL(非空约束)
PRIMARY KEY(主键约束)
UNIQUE KEY(唯一约束)
DEFAULT(默认约束)
FOREIGN KEY(外键约束)
空值与非空值注意:需先写数据类型,再注明数据是否能为空;
自动编号:AUTO_INCREMENT
创建表失败,原因是id字段必须为主键才能使用自动编号.
主键约束:PRIMARY KEY
每张数据表只能存在一个主键
主键保证数据的唯一性
主键自动为NOT NULL
注意:AUTO_INCREMENT必须与PRIMARY KEY一起使用,但PRIMARY KEY不一定与AUTO_INCREMENT一起使用
唯一约束:UNIQUE KEY
唯一约束保证数据的唯一性
唯一约束的字段可为空NULL
每张表可存在多个唯一约束
默认约束:DEFAULT
当插入记录时,如没有明确赋值,则使用默认值
外键约束:FOREIGN KEY
保持数据的唯一性,完整性,实现一对一或者多对多的关系。
要求:
1,父表和子表要使用相同的存储引擎,禁止使用临时表
2, 数据表的存储引擎只能为InnoDB
3,外键列和参照列必须具有相似的数据类型。数字长度或是否有符号位必须相同,字符的长度可以不同
4,外键列和参照列必须创建索引,如外键列不存在索引,MYSQL将自动创建
首先 在my.ini文件里面设置MYSQL的默认存储引擎:
default-storage-engine=INNODB
外键约束的参照操作
1,CASCADE :从父表删除或更新将自动更新子表中匹配的行
2,SET NULL:从父表删除或更新行,将设置子表中的外键列为NULL,前提该列的字段约束不是NUT NULL
3,RESTRICT:拒绝对父表的删除或更新操作
4,NO ACTION:标准SQL的关键字,在MYSQL中与RESTRICT相同
注:因引擎必须为INNODB 所以外键约束在实际开发中很少使用。