草庐IT

【MySQL】实验一 数据定义

Want595 2023-04-08 原文

目录

1. 表定义:创建student表 

2. 表定义:创建course表

3. 表定义:创建sc表 

4. 表定义:创建供应商表 

5. 表定义:创建零件表 

6. 表定义:创建工程项目表

7. 表定义:创建供应情况表

8. 修改表结构:修改课程表

9. 修改表结构:修改零件表 

10. 修改表结构:修改供应情况表

11. 修改表结构:修改供应情况表 


1. 表定义:创建student表 

创建student(学生表)

列名

说明

数据类型

约束

SNO

学号

CHAR(7)

主码

SNAME

姓名

CHAR(10)

NOT NULL

SSEX

性别

枚举类型

取“男”或“女”

SAGE

年龄

SMALLINT

SDEPT

所在系

VARCHAR(20)

默认“计算机系”

2. 表定义:创建course表

创建course(课程表)

列名

说明

数据类型

约束

CNO

课程号

CHAR(10)

主码

CNAME

课程名

VARCHAR(20)

NOT NULL,惟一约束

CCREDIT

学分

SMALLINT

>0

SEMSTER

学期

SMALLINT

>0

PERIOD

学时

SMALLINT

>0

CREATE TABLE course(
CNO CHAR(10),
CNAME VARCHAR(20) NOT NULL,UNIQUE(CNAME),
CCREDIT SMALLINT CHECK(CCREDIT>0),
SEMSTER SMALLINT CHECK(SEMSTER>0),
PERIOD SMALLINT CHECK(PERIOD>0),
PRIMARY KEY(CNO)
); 

3. 表定义:创建sc表 

创建sc(选课表)

列名

说明

数据类型

约束

SNO

学号

CHAR(7)

主码

引用Student的外码,设置删除限制,更新级联

CNO

课程号

CHAR(10)

主码,引用Course的外码,设置删除限制,更新级联

GRADE

成绩

SMALLINT

CREATE TABLE sc(
SNO CHAR(7),
CNO CHAR(10), 
GRADE SMALLINT,
PRIMARY KEY(SNO,CNO),
FOREIGN KEY(SNO) REFERENCES student(SNO) 
ON DELETE RESTRICT ON UPDATE CASCADE,
FOREIGN KEY(CNO) REFERENCES course(CNO) 
ON DELETE RESTRICT ON UPDATE CASCADE
);

4. 表定义:创建供应商表 

创建 s(供应商表)

列名

说明

数据类型

约束

SNO

供应商号

CHAR(6)

PRIMARY KEY

SNAME

供应商名

VARCHAR(20)

NOT NULL

SSTATUS

供应商状态

SMALLINT(2)

取值0或1

CITY

所在城市

VARCHAR(50)

CREATE TABLE s(
SNO CHAR(6) PRIMARY KEY,
SNAME VARCHAR(20) NOT NULL,
SSTATUS SMALLINT(2) CHECK(SSTATUS=0 OR SSTATUS=1),
CITY VARCHAR(50)
);

5. 表定义:创建零件表 

创建p(零件表)

列名

说明

数据类型

约束

PNO

零件号

CHAR(6)

PRIMARY KEY

PNAME

零件名

VARCHAR(20)

NOT NULL

COLOR

颜色

枚举类型

取(红、绿、蓝)其中之一

WEIGHT

重量

DECIMAL(9,2)

默认值1.0

CREATE TABLE p(
PNO CHAR(6),
PNAME VARCHAR(20) NOT NULL,
COLOR ENUM('红','绿','蓝'),
WEIGHT DECIMAL(9,2) DEFAULT 1.0,
PRIMARY KEY(PNO)
); 

6. 表定义:创建工程项目表

创建 j(工程项目表)

列名

说明

数据类型

约束

JNO

项目号

CHAR(6)

PRIMARY KEY

JNAME

项目名

VARCHAR(20)

NOT NULL

CITY

城市

VARCHAR(50)

CREATE TABLE j(
JNO CHAR(6),
JNAME VARCHAR(20) NOT NULL,
CITY VARCHAR(50),
PRIMARY KEY(JNO)
);  

7. 表定义:创建供应情况表

供应情况表spj

列名

说明

数据类型

约束

SNO

供应商号

CHAR(6)

主码

PNO

零件号

CHAR(6)

主码

JNO

项目号

CHAR(6)

主码

QTY

供应数量

SMALLINT

DEFAULT 100

CREATE TABLE spj(
SNO CHAR(6),
PNO CHAR(6),
JNO CHAR(6),
QTY SMALLINT DEFAULT 100,
PRIMARY KEY(SNO,PNO,JNO)
);

8. 修改表结构:修改课程表

修改课程表course的CNAME属性列的类型为VARCHAR(30);

ALTER TABLE course
MODIFY CNAME VARCHAR(30);

9. 修改表结构:修改零件表 

为零件表:p 增加一个规格(GUIGE)列,数据类型为字符,长度50;

ALTER TABLE p
ADD GUIGE CHAR(50);

10. 修改表结构:修改供应情况表

已知供应情况表spj

列名

说明

数据类型

约束

SNO

供应商号

CHAR(6)

NOT NULL

PNO

零件号

CHAR(6)

NOT NULL

JNO

项目号

CHAR(6)

NOT NULL

QTY

供应数量

SMALLINT

DEFAULT 100

ALTER TABLE spj
ADD id INT auto_increment PRIMARY KEY; 

11. 修改表结构:修改供应情况表 

为供应情况表spj添加参照完整性约束(无需设置规则,采用默认约束规则)

spj的SNO列参照s表SNO列,采用默认规则;

spj的PNO列参照p表PNO列,设置删除级联;

spj的JNO列参照j表JNO列,设置更新级联;

ALTER TABLE spj
ADD  FOREIGN KEY (SNO) REFERENCES s(SNO),
ADD  FOREIGN KEY (PNO) REFERENCES p(PNO)
ON DELETE CASCADE,
ADD  FOREIGN KEY (JNO) REFERENCES j(JNO)
ON UPDATE CASCADE;

有关【MySQL】实验一 数据定义的更多相关文章

  1. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  4. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  5. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  6. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

  7. ruby - 定义方法参数的条件 - 2

    我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano

  8. ruby - 如何在 Grape 中定义哈希数组? - 2

    我使用Ember作为我的前端和GrapeAPI来为我的API提供服务。前端发送类似:{"service"=>{"name"=>"Name","duration"=>"30","user"=>nil,"organization"=>"org","category"=>nil,"description"=>"description","disabled"=>true,"color"=>nil,"availabilities"=>[{"day"=>"Saturday","enabled"=>false,"timeSlots"=>[{"startAt"=>"09:00AM","endAt"=>

  9. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  10. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

随机推荐