数据库的建表原则和方式

因为之前已经有过一些Java后端的基础了,所以现在这个笔记从MySQL学习开始记录。

操作命令作用
show databases查看已有的数据库
create database + 数据库名字创建一个空数据库

1. 数据库的建表原则和方式

这一节的学习目标:

  1. 掌握基本功能的操作命令
  2. 会创建表
  3. 掌握表中字段的数据类型
  4. 理解完整性的概念
  5. 会创建完整性约束

关系型数据库——数据的逻辑结构

  • 从用户的角度,关系模型中数据的逻辑结构是一张二维表
  • 表是关系数据库的基本存储单位
  • 现实中每一个对象都抽象为表来进行存储

image-20200731142422887

基本概念
记录:

  • 表中的一行称为一个记录。一个记录的内容是描述一类事物中的一个具体事物的一组数据,如一个雇员的编号、姓名、工资数目

字段:

  • 表中的一列称为一个字段。每个字段表示表中所描述的对象的一个属性。
  • 每个字段都有相对应的描述描述信息,如字段名、数据类型、数据宽度、数值型数据的小数位等

表的创建语法
Create table 表名(
属性名 数据类型 [约束条件],
属性名 数据类型 [约束条件],
属性名 数据类型 [约束条件]
);

  • []中括号中的内容是可选内容
  • 最后一个属性后没有逗号

实例:创建一张表
创建第一张表:student(包含学号、姓名、年龄、性别属性)
image-20200731151753534

可以看到,上面使用的关键字中含有INT、VARCHAR关键字,这些关键字在MySQL中代表不同的数据类型,那么MySQL支持哪些数据类型呢?

MySQL数据类型分类

  • 数值
  • 字符串(字符)类型

image-20200731152419920

日期和时间类型

  • 日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR

  • 每个时间类型有一个有效值范围和一个“零”值,当指定不合法的MySQL不能表示的值时使用“零”值

    image-20200731152838372

字符串类型

  • 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET
  • CHAR和VARCHAR类型类似,但它们保存和检索的方式不同
  • BINARY和VARBINARY类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串
  • BLOB是一个二进制大对象,可以容纳可变数量的数据。有4中BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGLOB。
  • 有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT

image-20200731153533634

数据的完整性
数据的完整性指存在数据库中的数据应该保持准确性和可靠性。如出现学号相同的数据就是不准确的。
完整性分为四大类:

  • 实体完整性
  • 域完整性
  • 参照完整性
  • 自定义完整性
  • 实体完整性、域完整性及参照完整性分别在行、列、表上实施

实体完整性(行)

  • 实体完整性是对关系中的记录唯一性
  • 定义表中的所有行能唯一的标识
  • 表中主属性(字段)不能为Null且不能有相同值
  • 一般用主键、唯一索引、unique关键字来实现

实体完整性——主键约束

  • 主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地识别表中某一条记录
  • 创建表时指定主键

添加主键约束
image-20200731214524049

思考:以上时添加主键约束的三个方法,其中方法二中为主键约束添加了名字。方法一、二分别时在创建字段以及创建字段后建立主键约束。
创建实例:
image-20200731215108058

修改主键约束
image-20200731215931469
操作实例:
image-20200731220245154

实体完整性——唯一约束

  • 唯一约束是指定table的列或列组合不能重复,保证数据的唯一性
  • 唯一约束不允许出现重复的值,但是可以为多个Null
  • 同一个表可以有多个唯一约束,多个列组合的约束
  • 如果不给唯一约束名称,就默认和列名相同
  • MySQL会给唯一约束的列上默认创建一个唯一的索引
create table temp(
id int not null,
name varchar(25)
constraint uk_name_pwd nuique(name,password)
);
alter table temp add nuique(name,password);--添加唯一约束
alter table temp modify name varchar(25)
nuique;--修改唯一约束
alter table temp drop index name;--删除约束

推荐不要使用CONSTRAINT关键字,因为不填写的情况下,MySQL默认使用列名作为唯一约束名字
思考:当使用NOT NULL关键字的时候,等效于给变量提供非空约束;
当使用UNIQUE关键字的时候,等效于给变量提供唯一约束。
因此需要唯一、非空约束的时候,需要同时包含NOT NULL UNIQUE关键字。

操作实例:

--创建一张表temp,添加主键、唯一、非空约束
CREATE TABLE temp
(
id INT NOT NULL,
tname VARCHAR(20),
PRIMARY KEY(id),
CONSTRAINT uk_tname_id UNIQUE(tname,id)
);

域完整性(列)

域完整性

  • 域完整性是对数据表中字段属性的约束
  • 它是由确定表结构时所定义的字段的属性决定的
  • 限制数据类型,缺省值,规则,约束,是否可以为空
  • 域完整性可以确保不会输入无效的值

默认值约束

--添加默认约束
--1)在创建表的时候添加
CREATE TABLE t_user(user_id INT(10) DEFAULT 3);
--2)通过ALTER语句
ALTER TABLE t_user MODIFY user_id INT(10) DEFAULT 2;
--3)删除默认约束
ALTER TABLE t_user MODIFY user_id INT(10);

check约束

  • MySQL不支持check约束,但是使用时也没有错误提示

参照完整性

  • 指表与表之间的数据参照引用
  • 使用外键约束实现

外键约束

  • 外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系
  • 表的外键值必须在主表中能找到或者为空
  • 当主表的记录被从表参照时,主表的记录将不允许删除
  • 如果要删除数据,需要先删除从表中依赖该记录的数据

操作实例:

--创建两张表:class、student
--主表:
CREATE TABLE class
(
cla_id INT(6) PRIMARY KEY,
cla_name VARCHAR(30) NOT NULL UNIQUE
);
--从表:
CREATE TABLE students
(
stu_id INT(10) PRIMARY KEY,
stu_name VARCHAR(30) NOT NULL,
stu_score FLOAT(5,2) DEFAULT 0.0,
cla_id INT(10),
CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id) REFERENCES
class(cla_id)
);

思考:CONSTRAINT关键字后一般有约束名字跟随,上面的FOREIGN KEY()表示从表中的键值,REFERENCES表示该从表键值参考的自哪个主表哪个键值。

--在建立TABLE后,也可以添加外键约束:
ALTER TABLE students 
ADD CONSTRAINT FK_CLA_ID FROEIGN KEY(cla_id) REFERENCES class(cla_id);
--删除外键约束
ALTER TABLE students DROP FOREIGN KEY FK_CLA_ID;
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Learun框架是一个用于快速开发.NET应用程序的开源框架。在Learun框架中,数据库建表是定义数据存储结构的重要一步。 首先,我们需要选择一个合适的数据库管理系统,Learun框架支持多种主流数据库,包括SQL Server、MySQL、Oracle等。我们可以根据项目需求和数据库特性来选择合适的数据库。 接下来,我们需要创建数据库,在数据库中创建一个新的模式或使用现有模式来存储Learun框架的相关数据表。可以使用数据库管理工具(如SQL Server Management Studio)或命令行来创建数据库模式。 然后,我们需要根据项目需求来设计表结构。可以根据功能模块划分,创建相应的数据表,并确定表的字段、数据类型、长度、约束等。 在设计表结构时,需要注意以下几点: 1. 数据库表需要适应业务需求,考虑数据的完整性、一致性和可扩展性。 2. 每个表应该有一个唯一键(Primary Key),确保每条记录的唯一性。 3. 表之间的关系可以通过外键(Foreign Key)来建立关联,确保数据的一致性。 4. 可以使用索引来提高数据的检索效率,根据查询的需求选择适当的字段进行索引创建。 最后,使用Learun框架提供的数据库操作工具(如Learun.Util.Database)来执行数据库建表操作。可以使用建表语句直接创建表,也可以使用Learun框架提供的代码生成工具(如Learun.CodeGenerator)根据实体类生成数据库表结构。 总结起来,Learun框架数据库建表需要选择合适的数据库管理系统,创建数据库模式,设计表结构,考虑数据的完整性和一致性,并使用Learun框架提供的工具来执行数据库建表操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值