数据库系统概论总结(一)

一、数据库理解
数据库怎么来的?以前的数据主要是以文件存储的方式存储,由于数据的日益庞大,文件存储难以查询并且造成巨大的数据冗余,因此,数据库就被创造出来。
数据库的特点:
(1)数据结构化
(2)数据的共享性高,冗余度低且易扩充
(3)数据独立性高
(4)数据由数据库管理系统统一管理和控制
数据库的发展经历层次模型、网状模型和关系模型,现在主要是以关系模型为主。
层次模式下的
在这里插入图片描述

优点
层次模型的数据结构比较简单清晰
查询效率高,性能优于关系模型,不低于网状模型
层次数据模型提供了良好的完整性支持

缺点
结点之间的多对多联系表示不自然
对插入和删除操作的限制多,应用程序的编写比较复杂
查询子女结点必须通过双亲结点
层次数据库的命令(语言)趋于程序化

网状模型下的,采用网状结构来表示各类实体以及实体间的联系
在这里插入图片描述

优点
能够更为直接地描述现实世界,如一个结点可以有多个双亲;
具有良好的性能,存取效率较高。

缺点
结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越
复杂,不利于最终用户掌握;
DDL、DML语言复杂,用户不容易使用;
记录之间联系是通过存取路径实现的,应用程序必须选择存取路径,
加重了程序员的负担。

关系模型下的
在这里插入图片描述
 关系(Relation)—— 一个关系对应通常说的一张表
 元组(Tuple)—— 表中的一行即为一个元组
 属性(Attribute)——表中的一列即为一个属性,给每一个属性起一个名称即属
性名
 主码(Key)——也称码键。表中的某个属性组,它可以唯一确定一个元组
 域(Domain)——是一组具有相同数据类型的值的集合。
属性的取值范围来自某个域。
例:学生年龄属性的域(15~45岁),
性别的域是(男,女),
系名的域是一个学校所有系名的集合;
 分量——元组中的一个属性值。
 关系模式——对关系的描述
关系名(属性1,属性2,…,属性n)
学生(学号,姓名,年龄,性别,系名,年级)

优点
建立在严格的数学概念的基础上
概念单一
实体和各类联系都用关系来表示
对数据的检索结果也是关系
关系模型的存取路径对用户透明
具有更高的数据独立性,更好的安全保密性
简化了程序员的工作和数据库开发建立的工作

缺点
存取路径对用户透明,查询效率往往不如格式化数据模型
为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统
的难度

二、数据库模式
数据库的结构分为三层结构,依次为内模式、模式、外模式,内模式指的是数据的物理存储方式,是以树、堆等结构存储的,模式指的是数据库中全体数据的逻辑结构和特征的描述,一般指的是表以及表的数据项,而外模式则指的是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示,一般指的是视图。
一个模式可以有多个外模式,一个数据库只能有一个内模式和一个模式,正是由于数据库的模式结构以及数据库的二级映像功能,保证了数据的独立性和稳定性。
在这里插入图片描述

二、常见的数据类型
在这里插入图片描述

三、数据库语句
3.1 表操作

创建表
CREATE TABLE students(
					std_id INT NOT NULL,
					std_name VARCHAR(100),
					std_age INT,
					std_sex INT,
					std_class VARCHAR(100),
					std_date DATE,
					PRIMARY KEY(std_id)
					);

在这里插入图片描述

更新表
1、增加一列
ALTER TABLE students ADD bz VARCHAR(30);
2、修改列类型
ALTER TABLE students change bz bz VARCHAR(3); 【Oracle用不了】
或者
ALTER TABLE students modify bz VARCHAR(2);
3、修改列名
ALTER TABLE students CHANGE COLUMN bz bz1 VARCHAR(30);【Oracle用不了】
或者
修改(列名)project表的complete_number为complete_number1
ALTER TABLE "PROJECT" RENAME COLUMN complete_number TO complete_number1;
【Oracle专用】
4、删除列
ALTER TABLE students DROP COLUMN bz

3.2 数据语句

以两个表city和 county为例子
在这里插入图片描述

在这里插入图片描述

单表查询

1、DISTINCT 去重
SELECT DISTINCT * FROM country WHERE country = 'china'

在这里插入图片描述

2、查询项作为别名
SELECT country 国家 FROM country

在这里插入图片描述

3、BETWEEN  AND 和 NOT BETWEEN  AND的用法,这个效率会比LIMIT高
SELECT country_id,country FROM country 
WHERE country_id BETWEEN 30 AND 60
表示从第30条数据到第60条数据

在这里插入图片描述

4、LIMIT
SELECT country_id,country FROM country WHERE country_id LIMIT 30,60
表示从第30起后的60条数据,所以这里的范围是31-90的数据

在这里插入图片描述

4、IN 和NOT IN
SELECT country_id,country FROM country WHERE country_id IN(20,30,60)
同时IN的括号内也可以是一个select语句
SELECT country_id,country FROM country 
WHERE country_id IN(
SELECT country_id FROM country WHERE country_id>90
)

在这里插入图片描述

在这里插入图片描述

5、LIKE '匹配串'和NOT LIKE '匹配串'

匹配字符的区别
% (百分号) 代表任意长度(长度可以为0)的字符串
例如a%b表示以a开头,以b结尾的任意长度的字符串

_ (下横线) 代表任意单个字符。
例如a_b表示以a开头,以b结尾的长度为3的任意字符串,两个下划线代表一个汉字

匹配串为固定字符串,‘ab’,匹配为ab

使用换码字符将通配符转义为普通字符,如 LIKE '/_China' ESCAPE '/ ' 
转义在这里和直接LIKE '_China'的效果是一致的

在这里插入图片描述
在这里插入图片描述

6、IS NULL 和 IS NOT NULL
SELECT country_id,country FROM country 
WHERE country LIKE '_China' IS NOT NULL
表示country LIKE '_China' IS NOT NULL的结果为真,那么就执行前面的SELECT country_id,country FROM country 语句,查出来就是有所有的结果,如果为假,
那么不执行结果为空,注意如果在多表时的情况的返回结果

在这里插入图片描述

7、AND 和 OR
这个就不说了,比较常用,自己领会
8、聚集函数
SELECT COUNT(*) FROM country
SELECT COUNT(country_id) FROM country
SELECT SUM(country_id) FROM country
SELECT AVG(DISTINCT country_id) FROM country

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9、分组查询GROUP BY .... HAVING
分组查询,就是把某一数据列抽取查询出来
SELECT country,country_id FROM country 
GROUP BY country ORDER BY country_id
而 HAVING后面接上条件完成查询
SELECT country,country_id FROM country 
GROUP BY country HAVING country LIKE '_china'
ORDER BY country_id

在这里插入图片描述
在这里插入图片描述

参考:数据库系统概论 王删

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值