数据库与SQL语言
数据库(DB) :长期储存在计算机中、有组织、可共享的数据的集合。
特点:
(1)数据按一定的数据模型组织、描述和储存;
(2)较小的冗余度;
(3)数据独立性较高;
(4)易扩展;
(5)可共享(不同用户可按各自的用法使用数据库中的数据;多个用户可以同时共享数据库中的数据资源)
数据库设计:主要包括需求分析、概念结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运行和维护阶段。
数据库管理系统DBMS: 数据库系统的核心组成部分,它是位于用户与操作系统之间的对数据进行高效管理的系统软件。作用是科学地组织和存储数据、高效地获取和维护数据。
功能:
(1)数据定义:提供数据定义语言(DDL);定义数据库中的数据对象
(2)数据操纵:提供数据操纵语言(DML);实现对数据库的基本操作 (查询、插入、删除和修改)
(3)数据库的事务管理和运行管理(核心所在)
(4)数据库的建立和维护:数据库初始数据装载转换;数据库转储;介质故障恢复;数据库的重组织;性能监视分析等
Oracle数据库、数据文件、表空间
1、Oracle数据库:又名Oracle RDBMS,是甲骨文公司的一款关系数据库管理系统。
2、数据文件:每一个ORACLE数据库有一个或多个物理的数据文件,包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。
3、表空间:是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中,但主要存放的是表,所以称作表空间。
数据库事务:指作为单个逻辑工作单元执行的一系列操作。
特点:
(1)原子性:一个事务要么全部执行,要么不执行。
(2)一致性:事务的运行并不改变数据库中数据的一致性。
(3)独立性:事务间不会交错执行。
(4)持久性:事务运行成功以后,就系统的更新是永久的。
范式:
1NF:第一范式。关系模式R所有属性的值域中每个值都不可再分解。
2NF:第二范式。若R是第一范式,且R中每个非主属性完全函数依赖于R的某个候选键。(传递依赖)
3NF:第三范式。若R是第二范式,且每个非主属性都不传递依赖于R的候选键。
BCNF:BC范式。若R是第一范式,且每个属性都不传递依赖于R的候选键。
4NF:第四范式。D是R上的多值依赖集合,若D中成立非平凡多值依赖X→ → Y时,X必是R的超键,则是第四范式。
外模式/逻辑模式映像功能:保证数据的逻辑独立性;
模式/内模式映像功能:保证数据的物理独立性。
在关系模型中,数据的逻辑结构是一张二维表,表中的每行(即数据库中的每条记录)是一个元组,每列是一个属性。
关系模型的完整性,包括实体完整性、域完整性、参照完整性和用户定义完整性。前三者是关系模型必须满足的完整性约束条件。
索引
1、主索引:候选索引的特例,能唯一标识一条记录,只能由一个字段组成。一个表只能建立一个主索引。
2、候选索引:也能唯一标识一条记录,但不一定只由一个字段组成,一个表可以建立多个候选索引。
3、普通索引:没有任何限制,不能唯一标识一条记录,可以任意建立,数量不限。建立普通索引的主要目的是为了加快查询速度和建立表之间的联系。
4、唯一索引:已经淘汰不用了,它的唯一性是指索引项的唯一而不是字段值的唯一。
5、聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物理顺序,一个表只能包含一个聚集索引,但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。
6、非聚集索引:数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。非聚集索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储(这可以由聚集索引规定)。对于非聚集索引,可以为在表非聚集索引中查找数据时常用的每个列创建一个非聚集索引。有些书籍包含多个索引,例如,一本介绍园艺的书可能会包含一个植物通俗名称索引和一个植物学名索引,因为这是读者查找信息的两种最常用的方法。
应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,降低效率。
视图
视图在以下情况不允许更新:
1、由两个以上基本表导出;
2、视图的字段来自字段表达式或常数,则不允许对视图执行INSTER和UPDATE操作,但允许delete;
3、视图的字段来自聚集函数;
4、视图中含有GROUP BY子句;
5、视图中含有DISTINCT短语;
6、视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表;
7、一个不允许更新的视图上定义的视图;
表和视图的区别:
表是数据库中的主要结构,它总是表示单个的、特定的集合。每个表至少包含一个字段,即一个主键,它唯一地标识表的每条记录。
视图是由来自数据库中的一个或多个表或多个表的字段所组成的一个虚拟的表。自身不存储任何数据,存储在数据库中的有关视图的唯一信息就是它的结构。
SQL语言
结构化查询语言,关系数据库的标准语言。
(1)查询:select
聚合函数:sum,avg,max,min,count
例1:找出表p里面num最小的数
select * from p where num <=all (select num from p)
select top 1 num from p order by num
select * from p where num =(select Min(num) from p)
例2:复制表(只复制结构,源表A,新表B)
select * into B from A where 1=0
例3:查询总人数
select count(*) from student
例4:统计平均分超过80的学生,列出学号和平均成绩
select xh,AVG(grade)from sc
group by xh
having avg(grade)>=80
例5:按成绩降序排列,若成绩相同则按学号升序排列
order by grade DESC, xh ASC
例6:Null 值使用 is not 或者 is 比较,不能使用=比较;
(2)定义:create、drop(删除整张表)、alter
例1:建立一张临时表
create table #Temp(字段1 类型,字段2 类型···)
例2:给表Department 增加一列字段notes,长度为10的字符串,默认值0。
Alter table Department add notes varchar(10) default 0;
(3)操纵:insert、update、delete(删除表的数据)
例1:为表Department 增加一条记录 (‘12’, ‘研发部’, ‘张三’)
Insert into Department(dept_id,dept_name,dept_leader) values (‘12’,’研发部’,’张三’) ;
例2:更新一条dept_id=’12’的记录为 (‘12’, ‘研发部’, ‘张三新’)
Update Department set dept_leader=’张三新’ where dept_id=’12’;
注:DELETE和TRUNCATE TABLE都是删除表中的数据的语句,它们的不同之处在于:
1、TRUNCATE TABLE比DELETE的速度快;
2、TRUNCATE TABLE 是删除表的所有行,而DELETE是删除表的一行或者多行(除非DELETE不带WHERE语句);
3、在删除时如果遇到任何一行违反约束(主要是外键约束),TRUNCATE TABLE仍然删除,只是表的结构及其列、约束、索引等保持不变,但DELETE是直接返回错误;
4、对于被外键约束的表,不能使用TRUNCATE TABLE,而应该使用不带WHERE语句的DELETE语句。
5、如果想保留标识计数值,要用DELETE,因为TRUNCATE TABLE会对新行标志符列搜用的计数值重置为该列的种子。
(4)控制:grant(授权)、revoke(收回授权)
例1:经理(manager)有权查询、修改雇员(emp)信息并有权授权
Grant all priviliges on emp to manager with grant option
常用符号
1、+:连接字符串;
2、%:表示任意0个或多个字符;
3、_:表示任一字符;
存储过程和函数的区别:
存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程;
函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。
@表示声明一个局部变量;
@@表示声明一个全局变量;
申明局部变量语法:declare @变量名 数据类型;例如:declare @num int;
赋值:set @num=value 或者 select @num=value;
游标:用于定位结果集的行。通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,若不等于0则表示出错或到了最后。
PCTFREE:为一个块保留的空间百分比,表示数据块在什么情况下可以被insert;PCTUSED:是指当块里的数据低于多少百分比时,又可以重新被insert。
举例说明:
一个杯子一共可装
10
分水:
PCTFREE =
10
,说明杯子装到
9
分水,就不能再装了,即:不能进行insert操作,但可以进行update操作。
PCTUSED =
40
,说明杯子中的水喝到
4
分以下,就可以往里面装水,即:可以进行insert操作。
数据库与SQL语言的更多相关文章
- Sybase数据库常用sql语言
Sybase数据库常用sql语言 1,表备份: --table_name1:需要备份的表; table_name2:备份后的表 SELECT * into table_name2 from table ...
- MySQL入门——MySQL数据库和SQL语言
MySQL入门——MySQL数据库和SQL语言 摘要:本文主要了解了MySQL关系型数据库和SQL语言的基本知识. MySQL数据库 简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB ...
- 架构-数据库访问-SQL语言进行连接数据库服务器-OLE:OLE
ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器-OLE:OLE Object Linking and Embedding,对象连接与嵌入,简称OLE技术.OLE 不仅是桌面应用程序集 ...
- 架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO
ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口,它显露了 Microsoft ...
- 架构-数据库访问-SQL语言进行连接数据库服务器:SQL语言进行连接数据库服务器
ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器:SQL语言进行连接数据库服务器 数据库和应用服务器的连接. 在基于三层构架的信息系统开发中,应用服务器要利用SQL语言进行连接数据库服 ...
- mysql数据库基本操作sql语言
mysql的启动与关闭 启动 /etc/init.d/mysql start 多实例使用自建脚本启动 2种关闭数据库方法 mysqladmin -uroot -p密码 shutdown #优雅关闭/e ...
- 架构-数据库访问-SQL语言进行连接数据库服务器-DB-Library:DB-Library
ylbtech-数据库访问-SQL语言进行连接数据库服务器-DB-Library:DB-Library 1.返回顶部 1. 在基于三层构架的信息系统开发中,应用服务器要利用SQL语言进行连接数据库服务 ...
- SQL数据库—<1>SQL语言
关系数据库.SQL语言简单.学习软件介绍 SQL:Structured Query Language 结构化查询语言 数据库分为:层次型,网状型,关系型. 关系型数据库:是一个二维表的集合,可以用来存 ...
- [SQL]SQL语言入门级教材_SQL数据操作基础(二)
SQL数据操作基础(初级) netnova 于 -- :: 加贴在 数据库探讨: 为了建立交互站点,你需要使用数据库来存储来自访问者的信息.例如,你要建立一个职业介绍服务的站点,你就需要存储诸如个人简 ...
随机推荐
- git :设置 object-c 的忽略文件
使用 git 命令行来进行版本控制的时候, 需要设置忽略文件. 这里能找到所有语言的忽略文件的内容:https://github.com/github/gitignore OBJECT的忽略文件内容: ...
- FLASH CC 2015 CANVAS 导出音频问题
1,导入音频无法成功发布(软件假死) 解决办法:先用个格式工厂重新压缩 在导入软件 发布 2, 音频 长度小于1秒(左右)的时候,导出后音频会变成 “哧”的一声, 估计和FLASH软件内部的音频编 ...
- C/C++内存泄漏及检测 转
C/C++内存泄漏及检测 2011-02-20 17:51 by 吴秦, 30189 阅读, 13 评论, 收藏, 编辑 “该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏, ...
- poj1873The Fortified Forest
链接 居然是WF的水题~ 二进制枚举砍哪些树,剩余的树围成一个凸包. 因为传数组WA了两发,忘记修改排序数组中的p[0]; #include <iostream> #include< ...
- DDL和DML的定义和区别
DML(Data Manipulation Language)数据操纵语言: 适用范围:对数据库中的数据进行一些简单操作,如insert,delete,update,select等. DDL(Data ...
- linux下,一些关于动态库的问题:
程序运行是加载动态库的几种方法: 第一种,通过ldconfig命令 ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令它,ldconfig命令通 ...
- 【Todo】蒙特卡洛(蒙特卡罗)树 & 卷积网络
https://www.zhihu.com/question/41176911/answer/90066752 这里面有关于Deep Learning和蒙特卡洛树的一些内容 https://www.z ...
- Android SQLite数据库
SQLite数据库 SQLiteDatabase //管理操作数据库 管理 openDatabase //打开 openOrCreateDatabase //打开或创建 操作 ...
- Android布局_网格布局GirdLayout
自Android4.0版本后新增的GirdLayout网格布局(API 14) <?xml version="1.0" encoding="utf-8"? ...
- C++ Primer 第三章 标准库类型vector+迭代器iterator 运算
1.vector: 标准库类型vector表示对象的集合,其中所有对象的类型都相同,集合中的每个对象都有一个与之对应的索引,索引用于访问对象.因为vector“容纳着”其他对象,所以它也常被称作容器( ...