数据库(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’;

注:DELETETRUNCATE 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语言的更多相关文章

  1. Sybase数据库常用sql语言

    Sybase数据库常用sql语言 1,表备份: --table_name1:需要备份的表; table_name2:备份后的表 SELECT * into table_name2 from table ...

  2. MySQL入门——MySQL数据库和SQL语言

    MySQL入门——MySQL数据库和SQL语言 摘要:本文主要了解了MySQL关系型数据库和SQL语言的基本知识. MySQL数据库 简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB ...

  3. 架构-数据库访问-SQL语言进行连接数据库服务器-OLE:OLE

    ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器-OLE:OLE Object Linking and Embedding,对象连接与嵌入,简称OLE技术.OLE 不仅是桌面应用程序集 ...

  4. 架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO

    ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口,它显露了 Microsoft ...

  5. 架构-数据库访问-SQL语言进行连接数据库服务器:SQL语言进行连接数据库服务器

    ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器:SQL语言进行连接数据库服务器 数据库和应用服务器的连接. 在基于三层构架的信息系统开发中,应用服务器要利用SQL语言进行连接数据库服 ...

  6. mysql数据库基本操作sql语言

    mysql的启动与关闭 启动 /etc/init.d/mysql start 多实例使用自建脚本启动 2种关闭数据库方法 mysqladmin -uroot -p密码 shutdown #优雅关闭/e ...

  7. 架构-数据库访问-SQL语言进行连接数据库服务器-DB-Library:DB-Library

    ylbtech-数据库访问-SQL语言进行连接数据库服务器-DB-Library:DB-Library 1.返回顶部 1. 在基于三层构架的信息系统开发中,应用服务器要利用SQL语言进行连接数据库服务 ...

  8. SQL数据库—<1>SQL语言

    关系数据库.SQL语言简单.学习软件介绍 SQL:Structured Query Language 结构化查询语言 数据库分为:层次型,网状型,关系型. 关系型数据库:是一个二维表的集合,可以用来存 ...

  9. [SQL]SQL语言入门级教材_SQL数据操作基础(二)

    SQL数据操作基础(初级) netnova 于 -- :: 加贴在 数据库探讨: 为了建立交互站点,你需要使用数据库来存储来自访问者的信息.例如,你要建立一个职业介绍服务的站点,你就需要存储诸如个人简 ...

随机推荐

  1. hdu 5950 Recursive sequence 矩阵快速幂

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  2. 树--四分树(UVa297)

    郑重声明: 数据结构这部分内容, 由于博主才学很少(且很浅)的内容, 所以现在所写的(大都是抄的)一些典型例题, 再加上一些自己想法和理解而已, 等博主勤加修炼, 以后会大有补充和改进. 粗浅之处, ...

  3. jquery的隐式类型转换

    jquery的选择器想用变量来传,然后就纠结怎么写引号的问题??? 当时脑子就犯轴了,这个我要是传变量怎么写引号啊,我要是在最外层在加一层引号就不对了,就没法识别变量了,不加反而对了 那就用conso ...

  4. varchar(10)与nvarchar(10)有什么区别

    前者是非unicode型,存储字符按1个算(内部空间存储占1字节),存储汉字的话按2个算, 就是可以存10个字符或者5个汉字 后者是unicode型,存储什么都是按1个算(内部空间存储占2字节), 就 ...

  5. 个人博客Week3

    必应软件客户端测评 话不多说 先来一张高大上的客户端界面截图! 首先 映入眼帘的就是四个主要的模块!(1)词典(2)例句(3)翻译(4)应用 (1)词典: 在查询词条的时候,一旦查询了一个词条就不能够 ...

  6. java获取中问名字的首字母

    public class FirstLetterUtil { private static int BEGIN = 45217; private static int END = 63486; // ...

  7. Python 命令行参数和getopt模块详解

    有时候我们需要写一些脚本处理一些任务,这时候往往需要提供一些命令行参数,根据不同参数进行不同的处理,在Python里,命令行的参数和C语言很类似(因为标准Python是用C语言实现的).在C语言里,m ...

  8. mysql ERROR 1044 (42000): Access denied for user ''@'localhost' to database

    新安装的mysql密码是空的. ./mysql -u root -p use mysql SELECT `Host`,`User` FROM user; UPDATE user SET `Host` ...

  9. 使用火狐的restclient发送http接口post及get请求

    1.在firefox安装restclient插件,具体参照http://jingyan.baidu.com/article/1876c8529b07e3890b137623.html: —.发送pos ...

  10. Oracle数据库和DB2数据库分页SQL的区别举例

    --------------------------ORACLE数据库分页SQL举例------------------------------------------------ SELECT * ...