数据库系统学习二

一、SQL数据库的体系结构要点如下:

1、一个SQL模式(Scheme)是表和约束的集合;  ----->SQL模式(scheme)又名数据库(database)

2、一个表由行集构成,一行是列的序列,每列对应一个数据项;

3、表有三种类型:基本表、视图、导出表。基本表是实际存储在数据库中的表,视图是由若干基本表或其他视图构成的表的定义,而导出表是执行查询时产生的表。

二、SQL的组成:

核心SQL主要四个部分:

1、数据定义语言:即SQL DDL,用于定义SQL模式,基本表、视图、索引等结构。

2、数据操纵语言:即SQL  DML。数据库操作分成数据查询和数据更新两类,而数据更新又分为插入、删除、修改。

3、嵌入式SQL语言的使用规定,

4、数据控制语言:即SQL DCL。这一部分包括对基本表和视图的授权、完整性规则的描述、事务控制等内容。

三、数据库的语句(语句测试数据库用的是MySQL)

数据库创建:create database <数据库名>

删除数据库:drop database <数据库名>[CASCADE][RESTRICT]

CASCADE(级联式)方式:执行DROP语句时,只要SQL模式(数据库)及其下属的基本表,视图、索引等所有元素全部撤销。

RESTRICT(约束式)方式:执行DROP语句时,只有当SQL模式(数据库)中没有任何下属元素时,才能撤销SQL模式,否则拒绝执行DROP语句。

SQL允许用户使用“create domain”语句定义新的域,比如定义一个新的域PERSON_NAME:

CREATE DOMAIN  PERSON_NAME  CHAR(8);

这样就可以像使用基本类型一样,用域名PERSON_NAME来定义属性的类型。

基本表的创建:

             CREATE TABLE <表名>

                                ( <列名 类型>,

                                           。。。

                                    <完整性约束>,

                                         。。。

                                )

           eg:  create table c

(  C#  CHAR(4),

CNAEM  CHAR(10) NOT NULL,

T# CHAR(4),

PRIMARY KEY(C#),

FOREIGN KEY(T#) REFERENCES T(T#)

);

在基本表 C 的定义中说明了主键是C#,外键是T#。并指出看外键T#和基本表T中的T#类对应,此处对应的列名恰好相同,

实际上也可以不同名,只要指出其对应性即可(也就是说C表中的T#可以改成M等等,只要指出他,和其他表中的那个属性对应即可),

外键体现了关系数据库的参照完整性。外键的取值:空或者主键值。



基本表的修改:

     1、增加新的列用“alter ...add...”语句,其句法如下:

alter table <基本表名> add<列名><类型>

eg:在基本表S中添加一个地址(address)列

alter table S add  address varchar(30);

应该注意:新增加的列不能定义为“not null” 。基本表在增加一列后,原有元组在新增加的列上的值都是被定义为空值(null);

2、删除原有的列用“alter ... drop...”语句,其句语法如下:

alter table <基本表名>  drop <列名>[CASCADE][RESTRICT]

此处的CASCADE方式表示:在基本表中删除某列时,所有引用到该列的视图和约束也要一起自动的被删除,而RESTRICT方式表示,

在没有视图或约束引用该属性时,才能在基本表中删除该列,否则拒绝删除操作。

3、修改基本表S中S#的长度修改为6 可以下列语句:

alter table  S modify S#  char(6);


时间: 2024-10-07 03:18:53

数据库系统学习二的相关文章

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

OpenCV for Python 学习 (二 事件与回调函数)

今天主要看了OpenCV中的事件以及回调函数,这么说可能不准确,主要是下面这两个函数(OpenCV中还有很多这些函数,可以在 http://docs.opencv.org/trunk/modules/highgui/doc/user_interface.html 找到,就不一一列举了),然后自己做了一个简单的绘图程序 函数如下: cv2.setMouseCallback(windowName, onMouse[, param]) cv2.createTrackbar(trackbarName,

Makefile持续学习二

Makefile概述 一.Makefile里有什么? Makefile里主要包含5个东西:显式规则.隐晦规则.变量定义.文件指示和注释 1.显式规则:显式规则说明如恶化生成一个或多的目标文件,包含要生成的文件,文件的依赖文件,生成的命令 2.隐晦规则:由make自动推动功能完成 3.变量定义:变量一般都是字符串,类似C语言中的宏定义,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上 4.文件指示: 在一个Makefile中引用另一个Makefile 根据某些情指定Makefil

redis ruby客户端学习( 二)

接上一篇redis ruby客户端学习( 二) 对于redis的五种数据类型:字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介绍了字符串. 1,哈希(Map) hset.设置 key 指定的哈希集中指定字段的值.如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联.如果字段在哈希集中存在,它将被重写. require "redis" r = Redis.new r.hset 'my_h

Duilib学习二 第一个程序 Hello World

Duilib学习二  第一个程序 Hello World #pragma once #include <UIlib.h> using namespace DuiLib; #ifdef _DEBUG # ifdef _UNICODE # pragma comment(lib, "DuiLib_ud.lib") # else # pragma comment(lib, "DuiLib_d.lib") # endif #else # ifdef _UNICOD

Jquery Easy UI初步学习(二)datagrid的使用

第一篇学的是做一个管理的外框,接着就是数据datagrid绑定了,这里我用asp.net mvc3来做的,主要就是熟悉属性.方法. 打开easyui的demo 就可以看到如下一段代码: 和上篇一样class="easyui-datagrid", data-options="...",这是一样的,其他我在网上查了查,并做了整理 DataGrid 属性 参数名 类型 描述 默认值 title string Datagrid面板的标题 null iconCls strin

Oracle学习(二):过滤和排序

1.知识点:可以对照下面的录屏进行阅读 SQL> --字符串大小写敏感 SQL> --查询名叫KING的员工信息 SQL> select * 2 from emp 3 where ename = 'KING'; SQL> --日期格式敏感 SQL> --查询入职日期为17-11月-81的员工 SQL> select * 2 from emp 3 where hiredate='17-11月-81'; --正确例子 SQL> ed 已写入 file afiedt.b

Jetty学习二:配置概览-怎么配置Jetty

Jetty POJO配置 Jetty的核心组件是Plain Old Java Objects(POJOs):配置Jetty的大部分工作就是在Jetty POJOs上的初始化.装配和设置域的处理,你能通过以下的方式来实现:  1)直接通过Java代码初始化和装配Jetty对象.这个在后面Embedding Jetty讲. 2)用Jetty XML配置(一个控制反转(IoC)框架)初始化和装配Jetty对象.etc/jetty.xml文件是基本的Jetty XML配置文件,但有一些其它的etc/je

nodejs学习二 深入了解console

上一篇我们用console.log编写了第一个程序,虽然如此简单.那么我就从它来说说Node.js中的对象. 对于学过Java .net 的人来说,对象这个词应该都很亲切,如果不觉得亲切,还是先学习一下面向对象. 我们编程中,一切皆对象.你可以把任何一个东西当做对象. 然而,Node.js中也存在对象,而console也是一种对象.既然是对象,他应该有公有的方法.正如你所看到的,log就是它的方法,貌似还是静态的. 那么console中有哪些方法呢,那我们就让他输出一下吧. 噢,原来consol