数据库与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 于 -- :: 加贴在 数据库探讨: 为了建立交互站点,你需要使用数据库来存储来自访问者的信息.例如,你要建立一个职业介绍服务的站点,你就需要存储诸如个人简 ...
随机推荐
- iOS - OC Foundation 框架
前言 框架是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使研发程序更容易. Foundation 框架:为所有程序开发奠定基础的框架称为 Foundation 框架. Cocoa :是指 ...
- bootstrap 手风琴效果
<!DOCTYPE HTML> <html><head><meta charset="utf-8"><title>按钮插 ...
- maven项目搭建
一.Maven简介 Maven是基于Java平台的项目构建(mvn clean install).依赖管理(中央仓库,Nexus)和项目信息管理的项目管理工具. Maven是基于项目对象模型(POM) ...
- apiCloud中图片裁剪模块FNImageClip的使用
思路 1.获取需裁剪图片的地址 2.跳转到裁剪页面 3.裁剪成功返回新图片地址 4.替换原有图片地址 增加修饰和事件 str += '<li class="tu image" ...
- iOS——Xcode中添加第三方库
一.只有.h和.a文件的库 1.向项目中添加三方库文件 如果添加的第三方库只有.h和.a文件,直接把文件夹拖进项目下面,这时会弹出下面的提示框,一定要勾选下面选择的选项: 这里要注意,在Add to ...
- jprofiler安装图解及破解码
原文:http://blog.csdn.net/lifuxiangcaohui/article/details/38677889 环境: 1.sun jdk1.6.0 2.jprofiler_wind ...
- Java 两个变量交换值
package test; public class Test { public static void main(String[] args) { int a, b; ...
- MySQL锁监视器
还在为看不懂何登成的加锁处理分析文章感到羞愧吗? 还在因为何大师的笔误,陷入深深的迷茫吗? 只要你拥有大于5.6.16版本的MySQL,锁监视器你值得拥有! 快速入门 开启 set GLOBAL in ...
- 倒计时原生js
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 元素过滤器(Element Filters)
元素过滤器可以同选择器一起使用, 从一堆候选元素中进行筛选.它们当前仅使用于’name’元素选择器.过滤器看起来更像是选择器,也就是:filterType=argument所支持的元素过滤器为:val ...