数据库(一):数据定义

news/2024/7/7 20:22:58

数据定义

本人这学期在上数据库的课程,对SQL语言的查询功能有点头疼,所以决定写个笔记总结一下SQL实操相关的内容,也当作是在做期末复习材料吧。


参考书目:《数据库系统概论》第5版 王珊著 实验环境:ORACLE 实验语言:SQL

文章目录

  • 数据定义
  • 前言
  • 一、模式的定义与删除
  • 二、基本表的定义、删除与修改
    • 1.定义基本表
    • 2.数据类型
    • 3.模式与表
    • 4.修改基本表
    • 5.删除基本表
    • 6.查看表的结构
  • 三、索引的建立与删除
    • 1.建立索引
    • 2.查看索引
    • 3.修改索引
    • 4.删除索引
  • 四、数据字典
  • 总结


前言

本文将通过记录一些SQL语言的格式和例句,简单总结如何定义基本表和索引。内容主要来自于我的教材,老师的讲义,以及我的课后作业。


一、模式的定义与删除

略。

二、基本表的定义、删除与修改

1.定义基本表

SQL语言使用CREATE TABLE语句定义基本表,其基本格式如下:

CREATE TABLE table_name
(column_name data_type [列级完整性约束条件],
column_name data_type [列级完整性约束条件],

column_name data_type [列级完整性约束条件],
[表级完整性约束条件]
);

【例】建立一个“学生”表Student

CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,			/*列级完整性约束条件,Sno是主码*/
Sname CHAR(20) NOT NULL UNIQUE,		/*Sname不能取空值,且取唯一值*/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);

【例】建立一个“课程”表Course
参照表和被参照表可以是同一个表

CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,			/*列级完整性约束条件,Cno是主码*/
Cname CHAR(40) NOT NULL,			/*列级完整性约束条件,Cname不能取空值*/
Cpno CHAR(4),						/*Cpno的含义是先修课*/
Ccredit SMALLINT,
FOREIGN KEY(Cpno) REFERENCES Course(Cno)
			/*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/
);

【例】建立学生选课表SC

CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),	/*主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGN KEY(Sno) REFERENCES Student(Sno),
						/*表级完整性约束条件,Sno是外码,被参照表是Student*/
FOREIGN KEY(Cno) REFERENCES Course(Cno)
						/*表级完整性约束条件,Cno是外码,被参照表是Course*/
);

2.数据类型

数据类型含义
CHAR(n), CHARACTER(n)长度为n的定长字符串
VARCHAR(n),  CHARACTERVARYING(n)最大长度为n的变长字符串
CLOB字符串大对象
BLOB二进制大对象
SMALLINT短整数(2字节)
INT, INTEGER长整数(4字节)
BIGINT大整数(8字节)
NUMBERIC(p, d)定点数,由p位数字(不包括符号、小数点)组成,小数点后面有d位数字
DECIMAL(p, d), DEC(p, d)同NUMBERIC
REAL取决于机器精度的单精度浮点数
DOUBLE PRECISION取决于机器精度的双精度浮点数
FLOAT(n)可选精度的浮点数,精度至少为n位数字
BOOLEAN逻辑布尔量
DATE日期,包含年、月、日,格式为YYYY-MM-DD
TIME时间,包含一日的时、分、秒,格式为HH:MM:SS
TIMESTAMP时间戳类型
INTERVAL时间间隔类型

3.模式与表

略。

4.修改基本表

SQL语言使用ALTER TABLE语句修改基本表,其基本格式如下:

增加新列、新的列级完整性约束条件:
ALTER TABLE table_name
ADD column_new_name data_type [列级完整性约束条件];

增加新的表级完整性约束条件:
ALTER TABLE table_name
ADD <表级完整性约束条件>;

删除表中的列
ALTER TABLE table_name
DROP [COLUMN] column_name [CASCADE|RESTRICT];

如果指定了CASCADE短语,则自动删除引用了该列的其他对象,比如视图
如果指定了RESTRICT短语,则如果该列被其他对象引用,RDBMS将拒绝删除该列

删除约束
ALTER TABLE table_name
DROP CONSTRAINT <完整性约束名> [CASCADE|RESTRICT];

修改列名、数据类型
ALTER TABLE table_name
ALTER COLUMN column_name data_type;

【例】向Student表增加“入学时间”列,其数据类型为日期型。

ALTER TABLE Student ADD S_entrance DATE;

【例】修改Course表中Cname的数据类型为可变长度的字符型,长度最大值为20。

ALTER TABLE Course MODIFY (Cname VARCHAR(20));

【例】增加课程名称必须取唯一值的约束条件。

ALTER TABLE Course ADD UNIQUE(Cname);

【例】向Student表中删除“入学时间”列。

ALTER TABLE Student DROP COLUMN S_birthday;

5.删除基本表

SQL语言使用DROP TABLE语句删除基本表,其基本格式如下:

DROP TABLE table_name [CASCADE|RESTRICT];

选择CASCADE,则该表的删除没有限制条件。在删除基本表的同时,相关的依赖对象,例如视图都将被一起删除。
选择RESTRICT,则该表的删除是有限制条件的。想要删除的基本表不能被其他表的约束所引用(如CHECK,FOREIGN KEY等约束),不能有视图、触发器、存储过程或函数等。如果存在这些依赖该表的对象,则此表不能删除。默认的情况是RESTRICT。

【例】删除Student表。

DROP TABLE Student CASCADE;

6.查看表的结构

在ORACLE系统中,可以通过DESC table_name来查看表的结构。

【例】查看选课表SC的结构。

DESC SC;

结果如下:
查看选课表SC的结构

三、索引的建立与删除

当表的数据量比较大时,建立索引是加快查询速度的有效手段。

1.建立索引

SQL语言使用CREATE INDEX语句建立索引,其基本格式如下:

CREATE [UNIQUE] [CLUSTER] INDEX index_name
ON table_name(column_name [order_kind][,column_name[order_kind]] …);

UNIQUE表名次索引的每一个索引值只对应唯一的数据记录。
CLUSTER表示要建立的索引是聚簇索引。
次序可选ASC(默认值,升序)或DESC(降序)

【例】为学生-课程数据库中的Student、Course和SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。

CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);

2.查看索引

查询出用户所有表的索引
select * from user_indexes
查询用户表的索引(非聚集索引)
select * from user_indexes where uniqueness=‘NONUNIQUE’
查询用户表的主键(聚集索引)
select * from user_indexes where uniqueness=‘UNIQUE’
查询表的索引
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name=‘NODE’

原文:查询oracle表的信息(表,字段,约束,索引)

3.修改索引

SQL语言使用ALTER INDEX语句建立索引,其基本格式如下:

ALTER INDEX old_index_name RENAME TO new_index_name;

【例】将SC表的SCno索引名改为SCSno。

ALTER INDEX SCno RENAME TO SCSno;

4.删除索引

建立索引是为了减少查询操作的时间,但如果数据增、删、改频繁,系统会花费许多时间来维护索引,从而降低了查询效率。SQL语言使用DROP INDEX语句建立索引,其基本格式如下:

DROP INDEX index_name;

【例】删除Student表的Stusname索引。

DROP INDEX Stusname;

四、数据字典

略。

总结

以上就是本文的所有内容,简单总结了如何定义基本表和索引,关于数据查询、数据更新、单表查询、多表查询、定义视图等其他内容将在后续笔记中记录。本文中略掉的部分,有时间我再填完整。第一次写博客,有不完善的地方还请多多指教~


http://www.niftyadmin.cn/n/3652457.html

相关文章

使用PHP简单网页抓取和内容分析

没事的时候想抓取点网页看看&#xff0c;也不太懂&#xff0c;只是玩玩&#xff0c;写了点代码&#xff0c;聊以娱乐。稍微有点意义的函数是&#xff1a;get_content_by_socket(), get_url(), get_content_url(), get_content_object 几个函数&#xff0c;也许能够给你点什么想…

解决JSP出错:HTML中的列表不能正常显示

项目场景&#xff1a; JSP搭建在线图书管理系统。 问题描述&#xff1a; 首页的推荐图书列表不能正常显示&#xff0c;模糊查询目标书籍的搜索结果列表、借阅排行榜列表也不能正常显示。调用Dao中的方法&#xff0c;可以得到数据&#xff0c;数据库连接正常。推测为前端列表显…

数据库(二):数据查询之单表查询

单表查询 单表查询是指仅涉及一个表的查询。 参考书目&#xff1a;《数据库系统概论》第5版 王珊著 实验环境&#xff1a;ORACLE 实验语言&#xff1a;SQL 文章目录单表查询前言一、选择表中的若干列1.查询指定列2.查询全部列3.查询经过计算的值二、选择表中的若干元组1.消除取…

[转] 使用 DHTML 与 XML 制作 Ajax 幻灯片

使用 DHTML 与 XML 制作 Ajax 幻灯片Jack Herrington (jack_d_herringtoncodegeneration.net), 高级软件工程师, Code Generation Network2006 年 5 月 23 日学习如何创建通过 “Ken Burns Effects” 实现动画的 Ajax 客户端幻灯片放映。通过本文&#xff0c;您将了解如何创建 …

数据库(六):数据查询之基于派生表的查询

基于派生表的查询 子查询不仅可以出现在WHERE子句中&#xff0c;还可以出现在FROM子句中&#xff0c;此时子查询生成的临时派生表成为主查询的查询对象。 参考书目&#xff1a;《数据库系统概论》第5版 王珊著 实验环境&#xff1a;ORACLE、MySQL、Navicat 实验语言&#xff1a…

[转] 通过 PHP 和 Sajax 使用 Ajax(二)

通过 PHP 和 Sajax 使用 Ajax &#xff08;二&#xff09;简单 Ajax 工具包如何把服务器端 PHP 与 JavaScript 集成Tyler Anderson , 自由作者, Stexar 公司2006 年 05 月 11 日构建 PHP 应用程序这一节介绍使用 Ajax 创建 PHP 应用程序&#xff0c;程序将显示一个带有面板链接…

【计算机网络】思科实验(1):交换机的VLAN划分

系列文章目录 【计算机网络】思科实验(1)&#xff1a;交换机的VLAN划分 【计算机网络】思科实验(2)&#xff1a;交换机间的VLAN通信 【计算机网络】思科实验(3)&#xff1a;使用三层交换机实现跨VLAN间的通信 【计算机网络】思科实验(4)&#xff1a;综合实验作业之办公室的…

数据库(七):ORACLE数据库管理系统实验

ORACLE数据库管理系统实验 数据库&#xff08;一&#xff09;&#xff1a;数据定义 数据库&#xff08;二&#xff09;&#xff1a;数据查询之单表查询 数据库&#xff08;六&#xff09;&#xff1a;数据查询之基于派生表的查询 实验环境&#xff1a;ORACLE 文章目录ORACLE数…