iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >1-3 SQL与建立关系型数据表
  • 615
分享到

1-3 SQL与建立关系型数据表

数据表关系SQL 2023-01-31 06:01:41 615人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

1-3  sql与建立关系型数据表 u 了解关系型数据库的完整性基本理论 u 掌握通过SQL语句创建基本表 u 掌握通过SQL语句修改基本表的模式结构 u 掌握通过SQL删除基本表 1-3-1 关系型数据库的完整性理论 SQL(Struct

1-3  sql与建立关系型数据表

u 了解关系型数据库的完整性基本理论
u 掌握通过SQL语句创建基本表
u 掌握通过SQL语句修改基本表的模式结构
u 掌握通过SQL删除基本表

1-3-1 关系型数据库的完整性理论

SQL(Structured Query Language结构化查询化语言)不仅仅具有查询功能。它是一个通用性的数据库操纵、定义语言,被普遍使用在信息系统的应用中。SQL的数据定义语句首先是针对基本表、视图和索引的创建、删除和修改,具体的定义包括:
1-4  主文件组和用户定义文件组的差异

 

SQL在建立基本表信息的时候,必须按照关系型数据库完整性理论建立基本表,该理论包括:实体完整性,参照完整性和用户定义完整性。各个完整性内容包括:

1. 实体完整性

即主码的非空性原则,如果主码为空则意味着这条元组不知道或者无意义。

2. 参照完整性

要求外码的填写或者为空,表示尚无规定的信息与此条主码信息对应;如果非空,则填充的外码信息必须出自父表的主码信息集合

3. 用户定义完整性

由用户根据具体的信息逻辑所定义的信息填充方案,如性别只能够是男或者女
 

1-3-2 由一个案例所见到的关系数据理论

1 基本表情况说明

这里给出一个学校数据库的三个基本表,用在以后的实例中说明SQL语句的各种用法。
1)学生表:Student(Sno,Sname,Ssex,birthday,class)
Student由学号(Sno)、姓名(Sname)、性别(Ssex)、生日(birthday)、班级(class)五个属性组成,其中Sno为主码。
2)课程表:Course(Cno,Cname,Cpno,Ccredit,tno)
Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(ccredit)、任课教师号(tno)五个属性组成,其中Cno为主码。
3)学生选课表:SCore(Sno,Cno,Grade
SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,主码为(Sno,Cno)
4)教师表:Teacher(tno,name,sex,prof,depart,salary
Teacher由教师号( tno)、教师名(name)、性别(sex)、职称(prof)、部门(depart)、薪酬(salary)六个属性组成,主码为(tno)
 表1-5  student基本表表                       
______________________________________________
Sno Sname Ssex Birthday Class
103 李勇 男 1982-3-4 95031
105 刘晨 女 1983-5-8 95031
107 王明 女 1983-12-21 95033
109 赵明棋 男 1982-11-4 95033
110 张惠 女 1982-9-26 95033
______________________________________________
1-6  sc基本表
______________________________________________
Sno Cno Grade
103 322 92
103 343 85
105 105 93
105 245 63
107 166 78
______________________________________________
表1-7  course基本表
______________________________________________
Cno Cname Cpno Ccredit Tno
322   数据库 166 4 804
343   数学  2 
105   信息系统  322 4 825
245   操作系统  166 3 835
166   数据结构  888 4 804
324   数据处理  166 2 856
888   C语言 343 4 856
______________________________________________
表1-8  Teacher基本表
______________________________________________
Tno Name Sex Birthday   Prof    Depart Salary
804 李诚    男      1958-12-2  副教授  计算机系     3400
825 王萍   女      1972-5-5   助教    计算机系     1230
835 刘冰    女      1977-8-14  助教    电子工程系   1142
856 张旭    男      1969-3-12  讲师    电子工程系   2450
______________________________________________
实验:可视化状态下建立基本表实验
第一步:启动SQL Server2005Management Studio,进入管理平台界面后,鼠标右击对象资源管理器中的数据库,选择“新建数据库”后,新建数据库school
第二步:在对象资源管理器中用鼠标右键单击新建数据库school,在弹出的快捷菜单中选择 “新建表”,如表1-13
第三步:按照基本表说明内容依次建立四张基本表,需要说明的是针对于每一张基本表需要认真规定每个属性的名称和数据类型,见图1-14所示。另外对于主键以及外键的设计必须按照数据库概念设计模型进行规划设计后才可以实施,具体设计的方法和步骤见数据库模式设计篇章。
    
 
              1-13  新建基本表           1-14  定义基本表的属性名称和数据类型
第四步:在对象资源管理器school数据库的树形结构中找到数据库关系图一项,用鼠标右键单击后,于弹出的快捷菜单中选择“新建关系图”,见图1-15所示。
第五步:在弹出的“添加表”中将全部的表都选中,单击添加按钮后,将全部表添加到新建关系图之中,见图1-16所示。
 
1-16  添加基本表和基本关系图
第六步:在基本关系图之中,用鼠标左键点击某张表的外键,将之拖至父表的主键上,从而建立起主、外键的关联。需要特别说明的是对于基本表course,由于cpno是先修课程号码,必须来自course表中的cno主码集合,因此cpno属于单表自映射的主外键关系。见图1-17所示。在建立完该关系图后,既可以将具体数据录入数据表之中。
  
          1-15  新建数据库关系图图                     1-17  建立主外键之间的关系

1-3-3 通过SQL创建基本表

通过SQL可以更便捷的创建基本表,同时也可以更好的反映数据库完整性的思维方式。建立基本表语句格式见下:
create  table   表名(
列名  数据类型  [default  缺省值]  [not null][ UIQUE]
[,列名 数据类型  [default  缺省值]  [not null]]
……
[primary  key(列名 [,列名] …]
[foreign  key (列名 [,列名] … references  表名 (列名 [,列名] …]
[check(条件)]

1 SQL建立基本表注意事项:

(1)    表名是所要定义的基本表名称,它可以由一个或多个属性列组成。
(2)    建立表的时候,还可以定义与该表有关的关系性约束性条件,这些关系性约束性条件被存入系统的数据字典中。当用户操作数据库中表内的数据的时候,由DBMS自动检查该项操作是否违背这些关系性约束条件。
(3)    语句定义说明:
qDefault:设置该列的缺省值,当插入数据,没有指定该列的值的时默认取该值。
qUNIQUE:唯一性约束,该列不允许取重复的值。
qNOT NULL:该列不允许取空值。
qPrimary Key:主键约束。
qforeign  key 本表中的外码 .references  对应主表中的主键:外键约束。
qCHECK:用户自定义的约束条件,根据实际需要而定。

2 SQL Server 2005的主要数据类型

    SQL Server 2005的基本数据类型包括有:
qcharn):固定长度的字符串,此数据类型可存储1~8000个定长字符串,字符串长度在创建时指定;如未指定,默认为char(1)。每个字符占用1byte存储空间。
qvarcharn):可变长字符串。(由于该类型可根据实际录入的数据字节量存储,因此在一定程度上较char要节省磁盘空间,故对于字符串类型数据建议使用该种类型。)此数据类型可存储最大值为8000个字符的可变长字符串。可变长字符串的最大长度在创建时指定,如varchar(50),每个字符占用1byte存储空间。
qint:整数,此数据类型存储-2147483648~2147483647的整数,占用4bytes存储空间。
qsmallint:小整数类型,此数据类型存储-32768~32767的整数,占用2bytes存储空间。
qnumericpd):定点数,小数点左边p位,右边q位。
qfloat:此数据类型存储1~53的可变精度的浮点值,n1~24,占用4bytes存储空间;n25~53,占用8bytes存储空间。
qreal:此数据类型存储-3.40E+38~-1.18E-38的负数和1.18E~3.40E+38的正数。占用4bytes存储空间。
qdatetime:此数据类型存储从17531199991231的日期。占用8bytes存储空间。
qsmalldatetime:此数据类型存储从190011207966的日期。占用4btyes存储空间。
qtime:时间(小时、分、秒)。
qmoney:此数据类型存储-922337203685477.5808~922337203685477.5807的货币值,精确到小数后4位。占用8bytes存储空间。
qbinary:此数据类型存储1~8000个字符的二进制数据,其指定长度即为占用的存储空间。
实验:建立基本表的SQL实验
--1:建立基本表student
        CREATE TABLE Student
        (Sno varchar (5) NOT NULL UNIQUE,  
        
         Sname varchar (20) UNIQUE,                     
         Ssex char(1),
         Sage INT,
         Sdept varchar (15));
--2:建立基本表sc
     CREATE TABLE SC
        (Sno varchar (5) NOT NULL UNIQUE,  
         Cno varchar (4) default '1',
         GRADE Smallint,                     
         Primary Key(Sno,Cno),
         Foreign Key (sno) References  student(sno),
        
         Foreign Key (Cno) References  Course(Cno),
         Check(Grade between 0 AND 100));
        
--3:建立基本表student
        CREATE   TABLE   STUDENT
         (SNO varchar(4),
          SNAME  varchar (8)  NOT NULL,
          SAGE   Smallint,
          SSEX   varchar (1),
          sdept varchar (8),
          PRIMARY KEY (SNO),
          CHECK (SEX=0 OR  SEX=1)); 
--4:建立基本表course
         CREATE   TABLE  COURSE
         (CNO  varchar (4),
          CNAME varchar (10)  NOT NULL,
          CPNO  varchar (4),
          CCREDIT  SMALLINT, PRIMARY KEY(cno));
1-3-4 SQL修改基本表关系结构
建立完基本表后,由于关系数据库的模式设计需要,或者项目逻辑关系的变化,经常需要进行基本表逻辑关系的修改。修改基本表的语法见下:
alter table 表名
          [add <新列名> <数据类型> [完整性约束]]   --这里可以增加新的属性
          [drop <完整性约束名>]  --删除列
          [alter column <列名> <数据类型>] --修改列属性
 注意:
    增加完整性约束可以是Add Constraint 数据库中约束名称 [完整性约束条件],如果是用户定义完整性约束可以是check()语句。
实验:修改基本表的SQL实验
--1:向student表中增加入学时间列,其数据类型为日期型
 ALTER TABLE Student ADD Scome datetime;
--2:将年龄的数据类型改成为短整型,需注意的是修改原有的列可能会破坏已有的数据
alter table student alter column sage smallint;
--3:重新设定student的主键是sno
 ALTER TABLE Student ADD PRIMARY KEY(Sno);
--4:去除掉sage
ALTER TABLE Student drop column sage;
--5:给教师表增加一项教研室号码int类型,并且不可以大于
Alter table teacher
Add 教研室号码int Constraint fk1 check(教研室号码<20)
--6:将刚才的教研室号码约束删掉后再将教研室号删掉
Alter table teacher drop fk1
Alter table teacher drop column 教研室号码
--7:更改一条外键的约束
alter table sc add constraint fk3 foreign key(sno) references student(sno)
--8:删除一个属性列
CREATE TABLE doc_exb ( column_a INT, column_b VARCHAR(20) NULL)
     ALTER TABLE doc_exb DROP COLUMN column_b 

1-3-5 SQL删除基本表

删除基本表的SQL语法比较简单,基本格式为:DROP TABLE <表名>。例如删除学生表student就是DROP TABLE Student即可。
 注意:
q         撤消基本表后,基本表的定义、表中数据、索引都将被删除。
q         Drop Table不能够除去由foreign key约束引用的表,因此必须先除去引用的 foreign key约束条件。
小问题:
对关系型数据库系统而言,删除基本表的顺序是先删除父表还是先删除子表呢?
    父表是主键所在表,子表是外键所在表,根据参照完整性规则,外键必须受制于主键集合的约束,添加信息或者为空,否则必须出自主键集合。如果先删除父表,则外键将无所依靠,必将产生错误。因此对关系型数据库系统而言,删除基本表的顺序是先删除子表,再删除父表。

 

--结束END--

本文标题: 1-3 SQL与建立关系型数据表

本文链接: https://www.lsjlt.com/news/190397.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 1-3 SQL与建立关系型数据表
    1-3  SQL与建立关系型数据表 u 了解关系型数据库的完整性基本理论 u 掌握通过SQL语句创建基本表 u 掌握通过SQL语句修改基本表的模式结构 u 掌握通过SQL删除基本表 1-3-1 关系型数据库的完整性理论 SQL(Struct...
    99+
    2023-01-31
    数据表 关系 SQL
  • sql表与表之间怎么建立关联
    在 SQL 中,表与表之间可以通过外键建立关联。外键是一个表中的字段,它包含了另一个表的主键,从而建立了两个表之间的关联。 要建立表...
    99+
    2024-04-09
    sql
  • 数据库表与表之间如何建立联系
    这篇文章主要介绍了数据库表与表之间如何建立联系,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。数据库表与表之间通过主外键来建立联系。如果为表指...
    99+
    2024-04-02
  • MySQL创建数据表并建立主外键关系详解
    前言 为mysql数据表建立主外键需要注意以下几点: 需要建立主外键关系的两个表的存储引擎必须是InnoDB。 外键列和参照列必须具有相似的数据类型,即可以隐式转换的数据类型。 外键列和参照列...
    99+
    2024-04-02
  • 关系型数据库与非关系型数据库简介
    目录关系型数据库:OracleSQLServerSybaseInformixAccessDB2mysqlvfpIngersFoxPro非关系型数据库:MongoDBCassandra...
    99+
    2024-04-02
  • 头歌--第2关:建立读者数据表
    任务描述 本关任务:建立数据表 为了完成本关任务,你需要掌握: 如何选择数据库 如何创建数据表 设置数据表的原则 如何显示数据表的结构 相关知识 选择数据库 命令格式: use 数据库名 选择数据库为当前数据库 创建数据表 创建数据表的命令...
    99+
    2023-09-25
    数据库 mysql sql
  • mongodb与sql关系型数据比较的示例分析
    这篇文章给大家分享的是有关mongodb与sql关系型数据比较的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。摸索了几天,大体也初步算入了mongodb的门,仔细一想,m...
    99+
    2024-04-02
  • sql server数据库及基本表的建立方法
    这篇文章主要讲解了“sql server数据库及基本表的建立方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“sql server数据库及基本表的建立方法”...
    99+
    2024-04-02
  • 关系型数据库与非关系型数据库的区别是什么
    今天就跟大家聊聊有关关系型数据库与非关系型数据库的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。关系模型指的就是二维表格模型,而一个关系型...
    99+
    2024-04-02
  • 关系型数据库和非关系型数据库概述与优缺点对比
    目录一、关系型数据库1、概念2、关系型数据库的特点3、关系型数据库的瓶颈4、关系型数据遵循ACID原则1、A(Atomicity)原子性2、C(Consistency)一致性3、I(...
    99+
    2024-04-02
  • 使用SQL语句创建数据库与创建表
    前言 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 c语言初阶 🔑个...
    99+
    2023-09-29
    数据库 sql
  • Cassandra的数据模型与关系型数据库有什么不同
    Cassandra的数据模型与关系型数据库有以下几点不同之处: 数据存储方式:Cassandra采用分布式的方式存储数据,数据按...
    99+
    2024-04-02
  • mysql,用sql语句,建立学生-课程数据库基本表
    首先要准备三个表Student学生表、Course课程表、SC选课表 学生表学号姓名年龄性别院系StudentSnoSnameSageSsexSdept 课程表课程号课程名先行课学分CourseCnoCnameCpnoCcredit 选课表...
    99+
    2023-10-12
    数据库 mysql sql
  • Hive与传统关系型数据库相比
    Hive和传统关系型数据库在很多方面有着明显的区别,以下是它们之间的一些比较: 数据存储方式: 传统关系型数据库使用表格形式存...
    99+
    2024-03-11
    Hive
  • Linux系统:Centos7下搭建PostgreSQL关系型数据库
    本文源码:GitHub·点这里 || GitEE·点这里一、PostgreSQL简介1、数据库简介PostgreSQL是一个功能强大的开源数据库系统,具有可靠性、稳定性、数据一致性等特点,且可以运行在所有主流操作系统上,包括Linux、U...
    99+
    2023-06-05
  • 如何使用SQL构建一个关系数据库
    本篇文章给大家分享的是有关如何使用SQL构建一个关系数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用 SQL 构建一个关系数据库比你想...
    99+
    2024-04-02
  • 【数据类型】C#和Sql Server、Mysql、Oracle等常见数据库的数据类型对应关系
    🏆🏆这是小5写的第二篇城市领跑者文章,一起为所在城市领跑助力吧! 🏆🏆在实际项目中,不管是用C#后端编程语言也好,还是Java后端编...
    99+
    2023-09-01
    数据库 c# mssql mysql oracle
  • Java数据类型之细讲char类型与编码关系
    目录一、开头二、整形三、Byte.toUnsignedInt四、Integer.divideUnsigned五、Integer.remainderUnsigned六、Long.div...
    99+
    2024-04-02
  • 数据库表中关系模型结构有哪些
    这篇文章主要介绍了数据库表中关系模型结构有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一个关系数据库表中的各条记录前后顺序可以任意颠倒...
    99+
    2024-04-02
  • 头歌:数据库 || 第1关:创建表 (实战答案+做题总结)
    在右侧命令行中操作,创建数据库 TestDb ,在 TestDb 中创建表 t_emp ,表结构如下: 字段名称数据类型备注idINT员工编号nameVARCHAR(32)员工名称deptIdINT所在部门标号salaryFLOAT...
    99+
    2023-10-09
    数据库 oracle mysql json
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作