文档库

最新最全的文档下载
当前位置:文档库 > 关于数据库知识点的再学习和整理

关于数据库知识点的再学习和整理

个人声明:本文档所有代码并没有经过上机验证,仅供参考,另外,因为只是自己总结的关于最基本的知识点,所以难免遗漏,所以请参阅相关材料观看,最后,版权所有,翻版没事!哈哈~~~~

1,关系模型的数据结构非常简单,它只含有单一的数据结构——关系,在用户看来就是一张二维表,关系数据库就是用二维表表示关系以及他们之间的联系。

2.关于数据库的操作主要就是增删改查,其中尤其以查最重要,下面正对这几种数据库操作做一些sql语句方面的简单整理,以用来加强印象:

由于今天使用了mysql数据库,所以呢,先将一些使用的必须基本命令总结一些:

首先是安装了mysql数据库之后,进入dos命令提示窗口,

接下来我们要进入我们的数据库,那么要先进入mysql的bin路径下,

然后输入mysql -u root -p,然后会提示输入密码,然后进入,

进入后的命令提示符是mysql>

在mysql新建表之间和使用oracle 10g还是不一样的,先新建数据库,

Create database 数据库名字;

A.首先是新建表:create table table_name(

[列级完整性约束条件]

[,[列级完整性约束条件]]

......

[,<表级完整性约束条件>]);

E.g creatable table students(

id int(4) primary key,

Name char(20) not null,

Foreign key id references teachers(no));

B.接着是添加信息:insert into [[,]...]

values(常量[,常量]...);

E.g insert into students values(1,'tom');

注意,如果不列出来表格的属性的话,就说明添加一条完整的信息。

如果列出来表格的属性的话,那么没有列出来的就做,空值处理。

C.添加约束条件(注意,下面的语法只在oracle 10g中验证过,仅供参考)。

关于创建表格约束的时候是使用add constraint还是modify语法,我进行了可行性的测试,现在结果如下:

《》关于创建外键,两种语法都可以,语法如下

1,alter table 表格名add constraint 外键名foreign key(列名)references 被参照的表名(列名);

2,alter table 表格名modify foreign key(列名)references 被参照的表名(列名);

注意:alter table 表格名modify 列名foreign key references 被参照的表名(列名);是不可以的。

《》关于创建主键,两种方法都可以,语法如下

1,alter table 表格名add constraint 外键名primary key(列名) enable;

2,alter table 表格名modify 列名primary key;

《》关于创建约束unique,两种语法都可以,语法如下

1,alter table 表格名add constraint 约束命名unique(列名) enable;

2,alter table 表格名modify 列名unique;

《》关于创建约束not null,只可以使用语法modify,语法如下

1,alter table 表格名modify 列名not null;

《》关于创建约束check,只可以使用语法modify,语法如下

1,alter table 表格名modify 列名check(条件;

《》关于创建约束default,只可以使用语法modify,语法如下

1,alter table 表格名modify 列名default(默认值;

以上资料是我亲自测试整理的,可信度百分之百。~—~

其实上面的知识点,准确的说是在alter中的内容才对。

A.删除表:drop table [restrict|cascade]

其中restict表示删除表是有条件限制的,想要删除的表不能有外键,视图,触发器等等的这些依赖该表的对象时,才可以删除。

Cascade就是没有限制的,如果有依赖于该表的对象,那么就一起给删除了。

一般默认的都是restrict。

E.g drop table students;

B.删除数据:其实关于改的知识点,在查的后面来整理的话会更好,因为,你选择你要删除的数据的时候就是要用到查询的知识点来选择的。

Delete from [where <条件>];

E.g delete from students where id = 1;

A.修改表格:alter table

[add [完整性约束]]

[drop <完整性约束名>]

[alter column ];

E.g alter table students add sex char(4) not null;

alter table students alter column name char(21);

B.修改数据:update <表明>

Set = <表达式>[, = <表达式>]...

[where <条件>]

其实对于删和改,我们基本上都是建立在查的基础上的,下面是重点和难点了:

对于sql的查询,提供了select语句来进行查询,其一般的格式为:

Select [all|distinct] <目标表达式> [,<目标表达式>]...

From <表名或视图> [,<表名或视图>]...

[where <条件表达式>]

[group by [having <条件表达式>]]

[order by [asc|desc]];

其中:1.all和district表示是将查询到得结果全部(all)显示出来,还是去除重复的之后再显示出来。缺省值为all。

2.目标表达式,表示你想展示的是查询结果的哪几列的值。

3.表名或视图,表示你要查询的源,可以为其取别名,在其后空格再加别名,就可以了。

4.Group by子句,表示将结果按照一属性的值进行分组,改属性列值相等的元组为一组,如果其还带有having子句的话,就只有满足这个制定条件的组才能显示出来。

5.Order by表示查询的结果按照一属性的值进行排序。Asc表示升序,desc表示降序。

A.单表查询:单表查询只涉及到一张表的查询。

选择表中的若干列:

1.选择特定列。

Select id from students where name = 'tom';

2.选择全部列:

Select * from students where id = 1;

3.查询计算后的值:

Select id,2004-sage from students where id = 1;

用户可以通过制定别名来改变查询的列标题,这对于含有算数表达式,常量,函数名的目标表达式尤为有用。

E.g select id 编号,name 姓名,sex 姓名from students;

选择表中的若干元组:

1.消除重复的行:

Select distinct id from student;

其中distinct代表的是消除重复的行,与其相对的是,选择所有的行all。

2.查询满足条件的元组:

这种查询主要是通过where子句来实现的:

常用的查询条件:

比较:=, >, <, >=, <=, !=, <>, !>, !<, ;not 加上述比较符。

E.g select id from students where name <> 'tom';

确定范围:between and,not between and

E.g select id from students where id between 1 and 5;

确定集合:in, not in;

E.g select id from students where in(1,2,3);

注意,当in用在嵌套查询(子查询)的时候,会有很好的效果哦。

与之相类似的还有exist,not exist

但是呢,exist代表存在量词,它不会返回任何的数据,只产生逻辑真值true和逻辑假值false;

那么not exist就很好理解了,就是代表不存在。

由exist引出的子查询其目标表达式通常都是用*,因为带exist子句返回逻辑真值或者假值,那么给出列名就没有任何的意义了。

字符匹配:like,not like

其一般的语法格式如下:

[not] like '<匹配串>' [escape '<换码字符>'];

其含义是查找指定的属性的列值于<匹配串>相匹配的元组。匹配串可以是个完整

的字符,也可以含有通配符%和_。其中:

%表示代表任意长度(长度可以为0)的字符串。

_表示代表单个字符。

E.g select id from students where name like 't%';

Select id from students where name like 'to_';

其中一个汉字是占用两个字节,所以如果使用_的话,那么就需要一个汉字两个_

空值:is null , is not null

E.g select id from students where name is null;

多重条件(逻辑运算):and , or , not

Select id from students where name = 'tom' and id < 4;

Group by子句:

E.g select * from students group by name;

这句就是对查询的结果按照name的值,进行分组,相同的为一组,然后对每一组作用聚集函数count计算,以求得改组的数量。

在分组后还可以对结果进行一定条件的筛选,使用的是having短语。

其实where和having的作用是一样的,但是呢,他们有一点区别,就是当使用的聚合函数的时候,比如sum,avg,count的时候,就只能只用having。也就是说where 子句中不能使用聚合函数,而having子句中却是可以的。

E.g select * from students group by name having count(*) > 3;

Order by子句:

用户可以使用order by子句来对查询结果进行排序,asc代表升序,desc代表降序。

E.g select * from students where id = 1 order by name desc;

聚合函数:

Count([distinct|all] *); 统计元组的个数。

E.g select count(*) from students;

Count([distinct|all]<列名>) 统计一列中元组的个数。

E.g select count(id) from students where name = 'tom';

Sum([distinct|all]<列名>) 统计一列值的总和(此列必须是数值型)

avg([distinct|all]<列名>) 统计一列值的平均值(此列必须是数值型)

max([distinct|all]<列名>) 求一列中的最大值。

min([distinct|all]<列名>) 求一列中的最小值。

B.连接查询:(这是重点important)

当查询同时涉及两个以上的表,则称之为连接查询,连接查询是关系数据库查询中最主要的查询,包括等值连接查询,自然连接查询,非等值连接查询,自身连接查询,外连接查询和复合条件查询。

1.等值与非等值连接查询。

一般的格式为:

[<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2>

此外还可以使用以下的形式:

[<表名1>.]<列名1> between [<表名2>.]<列名2> and [<表名3>.]<列名3>

当运算符为=时,称为等值连接,否则称为非等值连接。

E.g select * from student,teacher where student,id = teacher.id;

我们还可以给我们的表格和查询属性取别名:

Select student.id 学生编号from student s1,teacher t1 where s1,id = ti,id;

在本例子中,select子句与where子句中的属性名前面都加上了表名前缀,这是为了避免混淆,如果属性名在参加连接的各表中时唯一的,那么就可以表名前缀。

2.自然连接

若在等值连接中,把目标列中重复的属性列去掉就是自然连接。

很容易理解,就不做举例了。

3.自身连接

连接操作不仅可以再两个表之间进行,也可以是一个表与其自己进行连接,称为表的自身连接。

E.g select * from student s1,student s2 where s1.id = s2.id;

哈哈~~~发现了是吧?这一句查询语句其实意义不大,只是为了说明语法,意思一下就好,不要较真!~_~

4.内连接

使用inner join来进行内连接:

仅当两个表都至少有一个行符合连接条件时,内连接才返回行。

内连接消除了表中的与另一个表中的行不匹配的行。

E.g select * from student s1 inner join teacher t1 on s1,id = t1.id;

Select * from student s1 inner join teacher t1 on s1,id = t1.id inner join course c1 on t1.id = c1.id;

5.外连接(important)

其实外连接可以简单的理解为是为了某一张表的数据不要丢失。

Left join, right join,full join(mysql不支持),对于left out join中间的out是可以省略的,所以这种写法知道就可以了,就不一一写出来了,以后我们也只写省略out的形式。

E.g select * from student s1 left join teacher t1 on s1.id = t1.id;

改句会将student的所有行都输入出来,对于teacher如果没有相对应的话就补null。

Select * from students s1 right join teacher t1 on s1.id = t1.id;

Select * from students s1 full join teacher t1 on s1.id = t1.id;

对于在oracle中,其实关于左外部连接和右外部连接还有一种简单的写法,但是呢,在其他数据库中是否支持,并没有验证。

对应左外部连接:

Select * from student s1,teacher t1 where s1.id(+) = t1.id;

对应右外部连接:

Select * from student s1,teacher t1 where s1.id = t1.id(+);

对于完全外部连接并没有简单的写法。

由上面的列子中我们很容易发现,左和右外部连接时很容易相互转换的。

6.集合查询

Select语句的查询结果是元组的集合,所以多个select语句的结果可以进行集合操作,主要的集合操作包括,并操作union,交操作intersect,差操作except。

注意,参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同。

Union [all](important)

使用union是将多个查询结果合并起来,系统会自动去掉重复的元组,如果要保留重复元组则使用union all操作符。

E.g select * from students where id = 1 union select * from students where id = 2;

关于其他两个不具体列举了,请自行查看相关资料,可以根据平时的集合操作来进行理解。

C.嵌套查询(子查询)(important)

在sql语言中,一个select—from—where语句称为一个查询块,将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询称为嵌套查询,上层的查询块称为外层查询或父查询,下层查询称为内层查询或子查询。

1.带有谓词in的子查询。

在嵌套查询中,子查询的结果往往是一个集合,所以谓词是经常使用的谓词。

E.g select * from student where id in (select id from teacher where name = 'tom');

2.带有比较运算符的子查询。

E.g select * from student where id = (select id from teacher where name = 'tom');

3.带有any(some)或者all谓词的子查询。

在子查询返回单值时可以运用比较符,但是,返回值是多值时要用any有的系统可能用some或者all来修饰,而使用any或者all谓词时,则必须同时使用比较运算符。

其语义为:

> any 大于子查询结果的某个值

> all 大于子查询结果的所有值

>= any 大于等于子查询结果的某个值

= any 等于子查询结果的某个值

!=(<>)any 不等于子查询结果的某个值

其他的请自己类推。

4.带有exist谓词的子查询。

Exist代表存在量词,带有exist谓词的子查询不返回任何数据,值产生逻辑真值true 或者逻辑假值false。

注:这只是一些最基本和常用的,至于视图,索引,触发器之类,请自行查阅资料。

数据库知识点整理(全)
数据库知识点整理(全)_计算机软件及应用_IT/计算机_专业资料。UNIT 1 ...
数据库知识点整理(全)
数据库知识点整理(全)_计算机软件及应用_IT/计算机_专业资料。UNIT 1 ...
(完整版)数据库知识点整理(全)
(完整版)数据库知识点整理(全)_计算机软件及应用_IT/计算机_专业资料。HF...
数据库知识点整理
数据库知识点整理_计算机软件及应用_IT/计算机_专业资料。. 数据库 ppt 整理: 1. 数据库(DataBase,DB)是指长期存储计算机内、有组织的、可共享的大量数据的......
数据库系统概论知识点整理
数据库系统概论知识点整理_其它_高等教育_教育专区。第一章:绪论数据库(DB) :长期存储在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照一定的......
数据库原理知识点整理
数据库原理知识点整理_计算机软件及应用_IT/计算机_专业资料 人阅读|次下载 数据库原理知识点整理_计算机软件及应用_IT/计算机_专业资料。目录 四个基本概念.........
数据库知识点重点章节总结学习资料
学习资料 1. 基本概念 (1) 数据库(DB):是一个以一定的组织形式长期存储在计算机内的,有组织的可共享的相关数据概念(2) 数据库管理系统 (DBMS);是位于用户与......
数据库基础知识个人整理版_强烈推荐
数据库基础知识个人整理版_强烈推荐_学习总结_总结/汇报_实用文档。数据库基础知识个人整理版_强烈推荐 完美WORD 格式 数据库知识要点总结第一章 关系数据模型数据......
数据库期末考试知识点笔记整理
数据库期末考试知识点笔记整理_电脑基础知识_IT/计算机_专业资料。数据库期末考...
数据库系统概论知识点整理1
数据库系统概论知识点整理1_计算机软件及应用_IT/计算机_专业资料。第一章:绪论数据库(DB) :长期存储在计算机内、有组织、可共享的大量数据的集合。数据库中的......
大学数据库全面知识点资料整理
大学数据库全面知识点资料整理_院校资料_高等教育_教育专区。第 1 章 绪论 1 .数据库管理系统是数据库系统的一个重要组成部分,它的功能包括数据定义功能、数据 ......
数据库原理(王珊)知识点整理
10 文案大全 实用标准文档 1.1.1 四个基本概念 数据(Data) 是数据库中存储的基本对象,数据库中的数据具有永久储存、有组织和可共享三个特点。 数据(Data)的......
数据库期末考试知识点笔记整理
数据库期末考试知识点笔记整理_幼儿读物_幼儿教育_教育专区。浙江万里学院 / 年第 学期 数据库期末考试复习题库(非常全面) 第一部分 第一章: 一选择题: 1.......
数据库原理(王珊)知识点整理
数据库原理(王珊)知识点整理_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载 | 举报文档 数据库原理(王珊)知识点整理_计算机软件及应用_IT/......
数据库原理及应用基本知识点与习题
第一章、数据库系统概述 1.1 基本知识点 本章先介绍数据库技术的产生与发展,然后介绍数据库的基本概念和数据库系统的特点。本章 的学习重点是数据库的基本概念......
Oracle数据库期末复习知识点整理
Oracle数据库期末复习知识点整理_工_高等教育_教育专区。oracle数据库复习资料,含代码 计1301 班数据库复习资料 基础知识表3.2 Oracle数据类型数据类型 char 格式......
数据库原理王珊知识点整理
数据库原理王珊知识点整理_计算机软件及应用_IT/计算机_专业资料 人阅读|次下载 数据库原理王珊知识点整理_计算机软件及应用_IT/计算机_专业资料。目录 1.1.1 ......
数据库知识点整理(全)
数据库知识点整理(全)_计算机软件及应用_IT/计算机_专业资料。精品文档 UN...
大学数据库全面知识点资料整理
第1 章 绪论 1 .数据库管理系统是数据库系统的一个重要组成部分,它的功能包括数据定义功能、数据 操纵功能、数据库的运行管理、数据库的建立和维护功能。 2 .......