MySQL详解

MySql中的数据类型 1.数值

类型 大小 范围 范围 用途
TINYINT 1字节 -27~ 27 -1 0~28 -1 小整数
SMALLINT 2字节 -215~ 215 -1 0~216 -1 大整数
MEDIUMINT 3字节 -223~ 223 -1 0~224 -1 大整数
INT 4字节 -231 ~ 231 -1 0~ 232 -1 大整数
BIGINT 8字节 -263~ 263 -1 0~264 -1 极大整数
FLOAT 4字节 单精度浮点数
DOUBLE 8字节 双精度浮点数
DECIMAL 小数值
DECIMAL(总位数,小数位) FLOAT(总位数,小数位) DOUBLE(总位数,小数位)
? 例如decimal(7,2),整数占五位,小数占两位
2.日期/时间
类型 大小 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/‘838:59:59’ HH–MM-SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份
DataTime 8 1000-01-01 00:00:00
9999-12-31 23:59:59
YYYY-MM-DD
HH:MM:SS
混合日期和时间值
TIMESTAMP 8 1970-01-01 00:00:00/2037某时 YYYYMMDDHHMMSS 混合日期和时间值,时间戳
3.字符串(字符)类型
类型 大小(字节) 用途
CHAR 0-255 定长字符串
VARCHAR 0-65535 变长字符串
TINYBLOB 0-255 不超过255字符二进制字符串
TINYTEXT 0-255 短文本字符串
BLOB 0-65535 二进制长文本数据
TEXT 0-65535 长文本数据
MEDIUMBLOB 0-16777215 二进制形式中等长度文本数据
MEDIUMTEXT 0-16777215 中等长度文本数据
LONGBLOB 0-4294967295 二进制形式极大文本数据
LONBTEXT 0-4294967295 极大文本数据
区别:
char(字符串长度) 定长 ???????varchar(字符串长度) 变长
? 设定多少长度,就会全部占满????以实际长度占用空间


数据库操作
1.查看现有的数据库show databases; 2.创建数据库create databases 数据库名字; 3.删除数据库drop database 数据库名字;

表的操作
在工具中,“打开表”–>看表内容
?????“设计表”–>看表结构

0.选择数据库操作 use 数据库名; 1.创建表 create table 表名( 属性名1 数据类型 [约束条件], //姓名 varchar(10) not null, 属性名2 数据类型 [约束条件], 属性名3 数据类型 [约束条件] ); 2.删除表 drop table 表名; 3.修改表 3.1添加列 alter table 表名 add 属性名 数据类型; //alter table 学生表 add 专业 carchar(10); 3.2删除列 alter table 表名 drop 属性名; //alter table 学生表 drop 成绩; 3.3修改列的数据类型 alter table 表名 modify 属性名 新数据类型; //alter table 学生表 modify 成绩 float(4,1); 3.4修改列名 alter table 表名 change 旧字段名 新字段名 数据类型; //alter table 学生表 change 姓名 学生名 数据类型; 4.显示表结构 desc 表名;




给表关联约束 实体完整性约束
在一个表中,找到一个列,该列做到唯一区分效果






主键约束 primary key
【MySQL详解】


创建
?创建表的同时关联约束
//方式一 create table student( id int primary key, name varchar(5), age int ); //方式二 create table student( id int, name varchar(5), age int, constraint 主键约束的名字(PK_列名)primary key(id) ); //方式三 create table student( id int, name varchar(5), age int, primary key(id) );

修改表的同时关联约束
//方式一 alter table student add constraint 主键约束的名字 primary key(列名); //方式二 alter table 表名 add primary key(列名); //方式三 alter table 表名 modify 列名 数据类型 primary key;

删除主键约束
alter table 表名 drop primary key;




唯一约束 unique
保证是唯一的,不能重复,但是可以为空
一个表中可以有多个唯一约束
设置一个唯一约束会默认给一个索引
若没有给唯一约束起名,默认和列名一致
创建
创建表的同时关联约束
//方式一 create table student( 学号 int unique, 姓名 varchar(5), 年龄 int, 课程号 varchar(10) unique ); //方式二 create table student( 学号 int, 姓名 varchar(5), 年龄 int, 课程号 varchar(10), constraint UN_学号 unique(学号), constraint UN_课程号 unique(课程号) );

?修改表的同时关联约束
alter table student add unique(学号);

删除唯一约束
alter table student drop index 学号(唯一约束的名字);


自动增长列 auto_increment
创建
?创建表的同时关联约束
create table student( 学号 int auto_increment, 姓名 varchar(5), 年龄 int, 课程号 varchar(10) );

?修改表的同时关联约束
alter table student modify 性别 varchar(3) default '男';

删除非空约束
alter table sudent modify 姓名 varchar(5);




外键约束 foreign key
针对两个表,加强表与表之间联系
一张表中可以有多个外键约束
主表想要删除被从表引用的数据,会删除失败
外键约束建立在从表中,拿上从表中的某个列参照引用主表的某个列
要求主表必须要有主键约束或者唯一约束
参照引用的列可以不一致,但数据类型和内容必须保持一致

创建
?创建表的同时关联约束
create table 主表( 列名1 数据类型 primary key, 列名2 数据类型 ); create table 从表( 列名1 数据类型, 列名2 数据类型, 列名3 数据类型, constraint 外键约束的名字(FK_列名) foreign key(从表列名1) references (主表列名1) );

修改表的同时关联约束
alter table 从表 add constraint 外键约束名 foreign key(从表列名) references (主表列名);

删除外键约束
alter table 从表 drop foreign key 外键约束名;



    推荐阅读