数据类型介绍
# 数据类型
MySQL数据类型是指在创建表时为字段指定的数据类型.
create table 表名 (字段名 字段类型 字段完整性约束, .....)
### 重点掌握数据类型的种类和常用的数据类型
# 一共分为5大类:数值型(int), 字符串型(char, varchar, text), 时间日期型(date, time, datetime), 枚举(*), 集合(*)
常用数据类型:
- 数值类型: tinyint, smallint, mediumint, int, bigint, float, double, decimal
- 字符串类型:char, varchar, tinyblob, tinytext, blob, text, mediumblob, mediumtext, longblob, longtext
- 时间日期类型: date, time, year, datetime, timestamp
- 枚举: enum
- 集合: set
字段完整性约束
默认值约束,非空约束与唯一约束
# 非空约束: not null, 要求设置了非空约束的字段, 在插入数据时必须有值
# 默认值约束: default, 给字段设置一个默认值, 语句注意:
insert into t5 values (1, 'dfs', default);# 唯一约束: unique, 给某个字段加了唯一约束, 要求这张表中, 该字段不能有重复的值, 唯一约束有两种设置方式.
create table t6 (
id int,
name varchar(32) unique, # 设置唯一约束
age int
);create table t6 (
id int,
name varchar(32),
age int,
unique(name) # 设置唯一约束
);
联合唯一: 多个字段组合绑定一起, 只有所有唯一字段的值都相同才插入失败# 2.DEFAULT约束(default)
1.DEFAULT约束: 约束一个字段不为空, 如果这一列中经常有重复的内容, 就需要频繁的插入, 操作冗余, 于是出现了默认值的概念.
2.示例:
create table tb2 (id int not null, name char(6), gender char(3) default '男');
insert into tb1 values (1, 'jeremy', '女');
insert into tb2 values (1, 'jeremy', default);# 3.UNIQUE约束
1.UNIQUE约束是约束字段的值唯一的, 在一张表中不可重复
2.实现方法示例
(1).方法一:
create table tb3 (
id int,
name varchar(20) unique,
age int
);
# 测试:
insert into tb3 values(1, 'lqq', 18);
insert into tb3 values(2, 'lqq', 20);(2).方法二:
create table tb4(
id int,
name varchar(20),
age int,
unique(name)
);
# 测试
insert into tb4 values(1, 'wzy', 18);
insert into tb4 values(2, 'wzy', 20);# 联合唯一
create table tb4 (
id int,
name varchar(20),
department varchar(20),
age int,
unique(name, department)
)
# 测试:
insert into tb4 values(1, '人工智能', '老于', 18),(2, '人工智能', '老王', 84),(3, '大数据', '老于', 19);
insert into tb4 values(4, '人工智能', '老于', 25);
主键约束
# 4.PRIMARY KEY约束: 主键约束
1.主键为了保证表中的每一条数据的该字段都是表格中的唯一值. 就是用一个唯一的值来标识这一行数据.
主键可以包含一个字段或多个字段, 当主键包含多个字段时称为联合主键.
注意: 主键必须唯一, 主键值非空.
2.单主键示例:
(1).方法一:
create table tb6 (
id int not null unique,
name varchar(20),
age int
)
# 测试:
desc tb5;
insert into tb5 values(1, '老于', 25);
insert into tb5 values(1, '老鞠', 22);(2).方法二:
create table tb7 (
id int primary key,
name varchar(20),
age int
)
# 测试
desc tb6;
insert into tb5 values(1, '老于', 25);
insert into tb5 values(1, '老鞠', 22);(3).方法三:
create table tb7 (
id int,
name varchar(20),
age int,
primary key(id)
);##### 给已存在的表添加主键 #####
create table tb8 (
id int,
name varchar(20),
age int,
primary key(id)
);
alter table tb8 modify id int primary key;
自增约束
自增约束:在MySQL中可通过字段的AUTO_INCREMENT属性来自动增长。
# 创建一张my_auto表,将id设置为主键,并且自增
create table my_auto(
-> id int primary key auto_increment,
-> name varchar(20) not null,
-> pass varchar(20) not null);
外键约束
1.外键约束作用:
外键约束:对外键字段的值进行更新和插入时会和引用表中字段的数据进行验证,数据如果不合法则更新和插入会失败,保证数据的有效性2.对于已经存在的字段添加外键约束
-- 为cls_id字段添加外键约束 alter table students add foreign key(cls_id) references classes(id);
在创建数据表时设置外键约束
-- 创建学校表 create table school(id int not null primary key auto_increment,name varchar(10)); -- 创建老师表 create table teacher(id int not null primary key auto_increment,name varchar(10),s_id int not null,foreign key(s_id) references school(id));
删除外键约束
-- 需要先获取外键约束名称,该名称系统会自动生成,可以通过查看表创建语句来获取名称 show create table teacher; -- 获取名称之后就可以根据名称来删除外键约束 alter table teacher drop foreign key 外键名;
表操作
表的创建
create table 表名 (字段名 字段类型 字段完整性约束, 字段名 字段类型 字段完整性约束);
表的修改
语法:
1. 修改表名
ALTER TABLE 表名
RENAME 新表名;
2. 增加字段
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…],
ADD 字段名 数据类型 [完整性约束条件…];
3. 删除字段
ALTER TABLE 表名
DROP 字段名;4. 修改字段
ALTER TABLE 表名
MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];5.修改字段排列顺序/在增加的时候指定字段位置
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;
FIRST;
ALTER TABLE 表名
MODIFY 字段名 数据类型 [完整性约束条件…] AFTER 字段名;
表的查询与删除
# 表查询
(1).查看当前库中的所有表
show tables;
(2).查看表结构
desc 表名;# 表删除
drop table 表名;