数据库建表原则和方式

MySql中数据类型:

  1. 数值型:

    整数类型:int

    小数类型:decimal

    小数格式:decimal(总长度,小数位)

    decimal(5,2) 要求你传递过来的数据总长度是5位,小数位是2位

  2. 日期和时间类型

  1. 字符串类型

char(字符串的长度) 定长

varchar(字符串的长度) 变长

姓名 char(10) tom--->3 10个字符-3=7个字符的空间 剩余的空间不会释放,系统会用空格填充满

varchar(10) tom--->3 还剩下7个字符空间,给释放出来

创建表语法格式:

create table 表名(

​ 列名1 数据类型,

​ 列名2 数据类型,

​ 列名3 数据类型,

​ 列名4 数据类型,

);

 

删除表

格式:drop table 表名;

删除多张表:drop table 表名1,表名2...

修改表结构

  1. 添加列(属性):

    alter table 表名 add 属性名 数据类型:

  2. 删除列(属性):

    alter table 表名 drop 属性名;

  3. 修改i列的数据类型:

    alter table 表名 modify 列名 新的数据类型

  4. 修改列名(字段):

    alter table 表名 change 旧列名 新列名 数据类型;

  5. 显示表结构

    desc 表名

数据的完整性:指的是数据库中数据的准确性和可靠性

实体完整性约束:

目的:在表中至少有一个唯一的标识,主属性字段中,不能为空,不能重复

  • 主键(primary key)约束:唯一,不重复,不能为空 一个表中有且只有一个主键约束

  1. 创建表的同时创建主键约束

    格式一

    create table 表名(

    ​ 列名1 数据类型 primary key,

    ​ 列名2 数据类型

    );

    格式二:主键约束名字的写法:PK_列名

    create table 表名(

    ​ 列名1 数据类型,

    ​ 列名2 数据类型,

    ​ constraint 主键约束的名字 primary key(列名1)

    );

    格式三:

    create table 表名(

    ​ 列名1 数据类型,

    ​ 列名2 数据类型,

    ​ primarily key(列名1)

    );

  2. 针对已经存在的表,添加主键约束

    格式一:

    alter table 表名 modify 列名 数据类型 primary key;

    格式二:

    alter table 表名 add primary key(列名):

    格式三

    alter table 表名 add constraint 主键约束的名字 primary key(列名)

  3. 删除主键约束

格式:alter table 表名 drop primary key;

联合主键:指的是把两个列看成是一个整体,这个整体是不为空、唯一、不重复

  1. 创建表的同时创建联合主键

  2. 格式二:主键约束名字的写法:PK_列名

    create table 表名(

    ​ 列名1 数据类型,

    ​ 列名2 数据类型,

    ​ constraint 主键约束的名字 primary key(列名1,列名2)

    );

    格式三:

    create table 表名(

    ​ 列名1 数据类型,

    ​ 列名2 数据类型,

    ​ primarily key(列名1,列名2)

    );

  3. 针对已经存在表,添加联合主键

alter table 表名 add constraint 主键约束的名字 primary key(列名1,列名2)

唯一约束 unique

特征:

  1. 不允许有重复的值,保证数据的唯一性

  2. 可以有空值

  3. 在一个表中,可以有多个唯一约束

  4. 默认情况下,唯一约束的名字和列名保持一致

  5. 添加唯一约束的列,系统也会默认给这个列添加一个唯一索引

索引:等同于书本的目录,将来能够加跨数据的查询速度

  • 创建表的同时创建唯一约束

    格式一:

    create table 表名(

    ​ 列名1 数据类型,

    ​ 列名2 数据类型,

    ​ constraint 唯一约束的名字 unique(列名1)

    );

​ 格式二:

create table 表名(

​ 列名1 数据类型 unique,

​ 列名2 数据类型 unique,

​ 列名3 数据类型

);

  • 针对已经存在的表,添加唯一约束

    格式:alter table 表名 add unique(列名);

  • 删除唯一约束

    格式:alter table 表名 drop index 唯一约束的名字

域完整性约束:保证在表中不会输入无效的数据

默认约束 default 当默认约束来修饰某个列的时候,修饰的列即使不写数据也会默认一个值的

  1. 创建表的同时创建默认约束

    格式:create table 表名(

    ​ 列名1 数据类型 default '字符串类型或者日期类型的默认值',

    ​ 列名2 数据类型 default 数值,

    ​ 列名3 数据类型

    );

    1. 针对已经存在的表,添加默认约束

      格式:alter table 表名 modify 列名 数据类型 default '值'

    2. 删除默认约束

      格式:alter table 表名 modify 列名 数据类型;

非空约束 not null 当前列是必须有值

  1. 在创建表的同时创建非空约束

    格式:create table 表名(

    ​ 列名1 数据类型 not null,

    ​ 列名2 数据类型 not null,

    ​ 列名3 数据类型

    );

  2. 针对已经存在的表,添加非空约束

    格式:alter table 表名 modify 列名 数据类型 not null;

参照完整性 foreign key

  1. 创建表的同时创建外键约束

主表(接下来再建新表的时候,要参照的表)

create table 表1(

​ 列名1 数据类型 primary key,

​ 列名2 数据类型,

);

从表(外键约束所在表)

create table 表2(

​ 列名1 数据类型,

​ 列名2 数据类型,

​ constraint 外键约束的名字 foreign key(从表的列名1) references 主表表名1(列名10

);

注意:关于引用的列是要求:从表的列和主表的列,列名可以不一样,但是,这两个列的数据类型和内容必须保持一致

  1. 针对已经存在的表,添加外键约束

    格式:alter table 从表 add constraint 外键约束的名字 foreign key(从表表名1) references 主表表名(主表列名)

  2. 删除外键约束

    格式:alter table 表名 drop foreign key 外键约束的名字


版权声明:本文为LevyC原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。