8.1SQL概述与数据库定义

简介: 8.1SQL概述与数据库定义

SQL的基本组成

1、数据定义语言。
2、交互式数据操纵语言。
3、事务控制。
4、嵌入式SQL和动态SQL
5、完整性。
6、权限管理

7、SQL语言中完成核心功能的9个动词:

(1)数据查询:Select

(2)数据定义:Create、Drop(删除)、Alter(修改)

(3)数据操纵:Insert(插入)、Update(更新)、Delete(删除)

(4)数据控制:Grant(授权)、Revoke(撤销授权)

SQL的数据类型

此处了解即可

表的创建、修改和删除

1、创建表

语句格式:CREATE TABLE <表名> (<列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]]…
[,<表级完整性约束条件>]);
(注意分号表示该语句结束)

注:[ ]表示可选,< >表示必填。

如创建表S :create Table S (sno char(6));

1、实体完整性约束:主码唯一且不为空

(1)在列后面加 PRIMARY KEY

如表S的主码为sno create Tables S (sno char(10) primary key)

(2)在最后加PRIMARY KEY(属性名1,属性名2) //主码为属性组(两个或以上属性的组合)只能
用这种方法

2、参照完整性约束:

1)在列后面加 References 表名(属性名)

如表SC的外码sno参照s表中的sno:create table sc(sno references s(sno))

(2)在最后面加 ,有几个外码,就写几行。
Foreign Key(属性名) References 表名(属性名)

注:[ON DELETE[CASCADE|SET NULL]]
ON DELETE CASCADE 表示删除被参照关系的元组时,同时删除参照关系中的元组;
ON DELETE SET NULL表示删除被参照关系的元组时,将参照关系的相应属性值置为空值

3、属性值上的约束

(1)NULL:表示为空;NOT NULL表示不能为空;

(2)UNIQUE:表示取值唯一;

(3)NOT NULL UNIQUE:表示取值唯一且不为空,与属性列后面的PRIMARY KEY可互换;

(4)CHECK:限制列中值的取值范围。
如:CHECK (Sex='男' OR Sex='女'),CHECK (余额>=0),CHECK (年龄>=18 AND 年龄<=60),
CHECK (离职日期 > 入职日期)

例题;

例:建立一个供应商、零件数据库。其中关系供应商S(Sno,Sname,Status,City),关系零件P(Pno,Pname,Color,Weight,City)。该数据库要满足如下要求:

(1)供应商代码不能为空,且值是唯一的,供应商的名称也是唯一的。

(2)零件号不能为空,且值是唯一的;零件名不能为空。

(3)一个供应商可以供应多个零件,而一个零件可以由多个供应商供应。

Create Table S (Sno CHAR(5) NOT NULL UNIQUE,

                      Sname CHAR(30) UNIQUE,

                      Status CHAR(8),

                      City CHAR(20),

                      PRIMARY KEY(Sno)); //教材这里有错误(前面已经又NOT NULL UNIQUE)

Create Table P (Pno CHAR(6),

                      Pname CHAR(30) NOT NULL,

                      Color CHAR(8),

                      Weight NUMERIC(6,2),

                      City CHAR(20),

                      PRIMARY KEY(Pno));

Create Table SP (Sno CHAR(5),

                         Pno CHAR(6),

                         Status CHAR(8),

                         Qty NUMERIC(9),

                         PRIMARY KEY(Sno,Pno), //如果主键为属性组合,只能用这种方法

                         FOREIGN KEY(Sno) REFERENCES S(Sno),

                         FOREIGN KEY(Pno) REFERENCES P(Pno));

09年下午题:

某网上书店后台数据库的部分关系模式如下:

会员(会员编号,用户名,密码,姓名,地址,邮编,电话,消费额,积分)

图书(图书编号,类型名称,图书名称,作者,出版社,出版日期,ISBN,价格)

订单(订单编号,用户名,销售额,订购日期,出货日期)

订单明细(订单明细编号,订单编号,图书编号,数量)

问题1:

下面是创建订单关系的SQL语句,订单编号唯一识别一个订单,用户名为订购图书的会员用户名,且不能为空。要求订购日期不能大于出货日期。请将空缺补充完整。

Create Table 订单 (

                        订单编号 CHAR(6) (a) ,

                       用户名 VARCHAR(40) NOT NULL (b) ,

                       销售额 FLOAT,

                       订购日期 DATE NOT NULL,

                        出货日期 DATE (c) ;

解答: (a)NOT NULL UNIQUE 或 PRIMARY KEY
(b)REFERENCES 会员(用户名)
(c)CHECK (订购日期<=出货日期)

2、修改表

语句格式:ALTER TABLE <表名> [ADD <新列名><数据类型>[列级完整性约束条件]]
[DROP <完整性约束名>]
[Modify <列名><数据类型>]);
如:
ALTER TABLE S ADD Zap CHAR(6); //在表S中新增一列ZAP,该列的数据为空
ALTER TABLE S MODIFY Status INT; //将表S的Status属性的数据类型更改为INT
ALTER TABLE S ADD Constraint C_cno CHECK(......) //在表S中新增CHECK约束,取名为C_cno

3、删除表

语句格式:DROP TABLE <表名>
如:
DROP TABLE S; //表删除后,不再是数据库模式的一部分

索引的创建和删除

1、索引的概念

• 数据库中的索引与书籍中的索引类似,在一本书中,利用索引可以快速查找到所需信息,无须阅
读整本书。在数据库中,索引使数据库无须对整个表进行扫描,就可以在其中找到所需数据。
• 比如在字典中,我们按字母建立索引。在数据库中,索引是某个表中的一列或者若干列的值的集
合,和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

2、索引的作用

(1)通过创建唯一索引,可以保证数据记录的唯一性。
(2)可以大大加快数据检索速度。
(3)可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。
(4)在使用ORDER BY和GROUP BY子句中进行检索数据时,可以显著减少查询中分组和排序的时间。
(5)使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。
索引分为聚集索引和非聚集索引。聚集索引是指索引表索引项的顺序与表中记录的物理顺序一致的
索引。

3、建立索引:

语句格式:CREATE [UNIQUE][CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>]]…);

• 次序:ASC(升序)或DESC(降序),默认为升序。
• UNIQUE:表明此索引的每一个索引值只对应唯一的数据记录。
• CLUSTER:表明要建立的索引是聚簇索引,索引项的顺序是与表中记录的物理顺序一致的索引组织。

如:
CREATE UNIQUE INDEX S_Sno on S(Sno); //在表S的Sno列上建立索引S_Sno,默认为升序
CREATE UNIQUE INDEX P_Pno on P(Pno); //在表P的Pno列上建立索引P_Pno,默认为升序
CREATE UNIQUE INDEX J_Jno on J(Jno); //在表J的Jno列上建立索引J_Jno,默认为升序
CREATE UNIQUE INDEX SPJ_NO on SPJ(Sno ASC,Pno DESC,Jno ASC);
//在表SPJ上建立索引SPJ_NO,属性Sno按升序,Pno按降序,Jno按升序

4、删除索引

语句格式:DROP INDEX <索引名>

例:DROP INDEX StudentIndex; //删除索引StudentIndex

视图的创建和删除

1、创建视图

语句格式:CREATE VIEW 视图名(列表名)
                                    AS SELECT 查询子句
                                   [WITH CHECK OPTION];
• 视图的创建中,必须遵循如下规定:
(1)子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语。

(2)WITH CHECK OPTION表示对UPDATE,INSERT,DELETE操作时保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)
(3)组成视图的属性列名或者全部省略或者全部指定。如果省略属性列名,则隐含该视图由SELECT子查询目标列的主属性组成。

例:学生关系模式S(Sno,Sname,Sage,Sex,SD,Email,Tel),建立计算机系(CS表示计算机系)学生的视图,并要求进行修改、插入操作时保证该视图只有计算机系的学生。
CREATE VIEW CS_STUDENT //创建视图CS_STUDENT
                                         AS SELECT Sno,Sname,Sage,Sex //选择学号、姓名、年龄、性别列
                                         FROM Student //从学生表中查询
                                         Where SD='CS' //选择系名等于“CS”的行
                                         WITH CHECK OPTION; //以后对该视图进行修改、插入操作时DBMS
                                          会自动加上SD='CS'的条件,保证视图中只有计算机系的学生

3、删除视图

语句格式:DROP VIEW 视图名
如:DROP VIEW CS_STUDENT //删除视图CS_STUDENT

【题】 某大型集团公司的数据库的部分关系模式如下:员工表:EMP(Eno,Ename,Age,Sex,Title),各属性分别表示员工工号、姓名、年龄、性别和职称级别,其中性别取值为“男”“女”;公司表:COMPANY(Cno,Cname,City),各属性分别表示公司编号、名称和所在城市;工作表:WORKS(Eno,Cno,Salary),各属性分别表示职工工号、工作的公司编号和
工资。有关关系模式的属性及相关说明如下:(1)允许一个员工在多家公司工作,使用身份证号作为工号值。(2)工资不能低于1500元。

【问题1 1】请将下面创建工作关系的SQL语句的空缺部分补充完整,要求指定关系的主码、外码,以及工资不能低于1500元的约束。

CREATE TABLE WORKS(
                 Eno CHAR(10) (a) ,
                Cno CHAR(4) (b) ,
                Salary int (c) ,
               PRIMARY KEY (d) ,
);

答:a:reference EMP(Eno)

b:reference COMPANY(Cno)

c:CHECK(salary>=1500)  注意大于等于的符号

d:(Eno,Cno)

【问题2】(1)创建女员工信息的视图FemaleEMP,属性有Eno、Ename、Cno、Cname和Salary,请将下面SQL语句的空缺部分
补充完整。
CREATE (e)

e:Female Emp(Eno,Ename,Cno,Cname,salary) 理解2-(3)的概念


目录
打赏
0
0
0
0
15
分享
相关文章
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
355 3
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
55 6
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
85 11
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
46 2
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
119 11
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等