day12:数据类型和约束
一、了解数据类型
数据类型指表中的列可以包含的数据类型。MySQL支持大量的数据类型用来指定列中可以包含的数据类型,根据一些共同特征,这些数据类型可以分为以下类型:数值、字符串、日期
1、数值:数值数据类型用于存储数字。例如,在给定场景中,已出租的房间或可供出租的房间数将为数值数据类型。此数据类型可以进一步分为以下几类:整数数据类型、小数数据类型、Bit数据类型
整数数据类型用于存储整数值。整数可以为正数或负数,因此,使用其中一种整数数据类型声明的列可以接受正值也可以接受负值。整数值绝对不会有小数部分或小数点,因此,声明为整数的列永远不会接受带有小数部分的值。常用的整数类型是:int
小数数据类型用于存储带有整数部分和带有小数部分的值。因此,使用其中一种小数数据类型声明的列可以接受不带小数部分的值、不带整数部分的值和包含两个部分的值。同样可以是正数或负数。常用的小数类型有:float和double
bit数据类型用于存储除了整数和小数的值。常见的bit数据类型有:bit
2、字符串:为存储字符或二进制值,常见的字符类型有:char和varchar
3、日期:日期数据类型用于存储日期或时间值。因此,应将可以接受日期或时间值的列与任一日期数据类型相关联。常见的日期类型有:date(日期数据)、time(时间数据)、year(年份数据)
二、创建表
基本语法:
create table 表名称(
字段名称 字段类型(字段长度),
字段名称 字段类型(字段长度),
...
字段名称 字段类型(字段长度)
);
应用约束:
约束定义必须遵从的规则,以维护数据的完整性。约束可以在创建表的过程中定义,也可以稍后在添加。在创建表后添加约束时,它将检查现有数据以确定其是否违背约束。如果有数据违背了将添加的约束,那么不会向指定的列施加该约束。
约束的类型:
NOT NULL 非空约束、主键约束、唯一约束、外键约束
NOT NULL 非空约束:非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
主键约束:对一个列或一组列定义,这些列的值唯一地标识表中的所有行。这些列称为主键列。并且,主键列不能包含NULL值,因为它用于唯一地标识表中的行。定义主键列用:primary key,例如:
create table student( sid varchar(55) primary key not null, sname varchar(55) not null, sage varchar(55) not null );
或
create table student( sid varchar(55) not null, sname varchar(55) not null, sage varchar(55) not null, primary key( sid) );
唯一约束:唯一约束用于强制非主键列的唯一性。主键约束列自动包括对唯一性的限制。唯一约束与主键约束类似,但是它在唯一约束所定义的列中允许NULL值。可以向表中添加多个唯一约束。但是,表中只能有一个主键,它可以基于一列或一组列。定义唯一约束用:unique,例如:
create table teacher( tid varchar(55) unique, tname varchar(55), tage varchar(55) );
或:
create table teacher( tid varchar(55) , tname varchar(55), tage varchar(55), unique(tid) );
外键约束:当一个表中的数据依赖另一个表中的数据时,将使用外键约束维护这些表中数据的一致性。表中的外键总是引用其他表中的主键列。
CREATE TABLE department ( id INT PRIMARY KEY auto_increment,
dname CHAR (255)
);
CREATE TABLE employee (
did INT,
username CHAR (255),
PASSWORD CHAR (255),
FOREIGN KEY (did) REFERENCES department (id)
);