Quantcast
Channel: CodeSection,代码区,数据库(综合) - CodeSec
Viewing all articles
Browse latest Browse all 6262

关系型数据库基础总结

$
0
0

关系型数据库管理系统简介

数据库的集中式控制有如下优点:

1.降低数据存储的冗余度

2.更高的数据一致性

3.存储的数据可以共享

4.便于维护数据完整性

5.能够实现数据的安全性

数据在数据库中的存储形式

1.层次模型

2.网状模型

3.关系模型

4.对象模型

关系型数据库的基本概念

关系模型把世界是由实体和联系组成的。

实体就是指在现实世界中客观存在并可相互区别的事物。

实体所具有的某一特性称为属性。

以关系模型来创建的数据库称为关系型数据库。

表(table)是关系型数据库的核心单元,它是数据存储的地方。

在关系型数据库中用一个唯一的标识符来标识每一个行,这个标识符就是主键(Primary Key)。

在关系型数据库中,外键(Forergn Key)就是用来表达表与表之间的关联关系。

表与表的关联关系有:一对一关系 一对多关系 多对多关系

RDBMS是管理,操作和维护关系型数据库的一种软件程序。

分为本地和服务器数据库管理系统两种类型。

SQL(结构化查询语言)是关系型数据库的标准编程语言,我们可以通过编写SQL语句访问和操纵数据库中的数据。

SQL标准定义了操作关系型数据库及其包含的数据的多种技术,它分为数据定义语言(DDL),数据查询语言(DQL),数据操作语言(DML),数据控制语言(DCL)。

管理数据库和表

创建和使用数据库

创建数据库:

create database 数据库名;

数据库名在服务器中必须是唯一的,并符合标识符规则

第一个字符必须是Unicode标准3.0所定义的字母,下划线(-),at符号(@)或者数字符号(#)

后续字符可以是Unicode标准3.0所定义的字母,下划线(-),at符号(@),美元符号()或者数字符号(#),十进制数字

标识符不能是所用RDBMS的保留字

不允许嵌入空格或其它特殊字符

连接数据库:

use 数据库名;

删除数据库:

DROP DATABASE 数据库名;

数据类型

1.整数数据类型

2.浮点数据类型

3.字符串类型

4.日期和时间数据类型

创建表:

create table 表名(

列名 列的数据类型 列的约束

);

删除表:

drop table 表名;

查询所有信息:

select * from 表名;

复制表,包括数据结构和数据:

create table 复制的表名 select * from 被复制的表名;

复制表,只复制数据结构:

create table复制的表名select * from被复制的表名where 100=0(不等于ture的条件);

添加列:

alter table 表名 add 列名 列的数据类型;

修改列:

alter table 表名 change 旧列名 新列名 列的数据类型;

删除列:

alter table 表名 drop column 列名;

创建索引:

create index 索引名 on 表名(列名);

删除索引:

alter table 表名 drop index 索引名;


保证数据完整性

数据完整性概述

1.实体完整性

2.域完整性

3.引用完整性

4.用户自定义完整性

设置非空约束(NOT NULL)

设置主键约束(Primary Key Constraint)

设置唯一约束(Unique Constraint)

指定默认值(DEFAULT)

设置检查约束(Check Constraint)

创建主表:

create table 表名 (

列名1 int primary key,

列名2 char(20) not null,

列名3 char(20) not null

)charset=utf8;

创建从表:

create table 表名(

列名1 int primary key,

列名2 char(20)not null,

列名3 int not null,

列名1 int references 主表名(列名(主键)),

Constraint foreign key(列名1)references主表名(列名(主键))

)engine=innoDB default charset=utf8;

创建自增长:

create table 表名(

列名1 int primary key auto-increment,

列名2 char(20) not null,

列名3 int nto null

)charset=utf8;

设置自增长初始值:

alter table 表名 auto-inrement=100;

删除唯一约束:

alter table 表名 drop index 列名(unique);

添加主键:

alter table 表名 change 旧列名 新列名 列的数据类型, add primary key(新列名);

第四章 使用DML语句更改数据

1.插入单行记录:
insert into 表名 (列名列表) values (值列表);
在数据库中,字符串用单引号‘’包含。
2.可以省略列名列表,但插入的数值必须和表中的一一对应。
3.列名列表:指定插入记录的目标表的列名,是一个以逗号分隔的列名列表。
4.插入多行记录:(只能在my sql 中使用)
insert into 表名(列名列表) values(值列表),(值列表),(值列表),(值列表).........
5.复制表数据:(前提是:需要有一张与被复制的表的数据结构一模一样)
insert into 新表名 select * from 被复制的表名;
6.修改数据类型:alter table 表名 change 旧列名 新列名 数据类型;
7.更改已有数据:
update 表名 set 列名=值 where 过滤条件;
8.通过更新删除列的数据:
删除某列数据:把该列的值设置为null;前提是:该列允许为空值,即没有非空约束。
(1).将一列的数据全部删除:update 表名 set 列名=null;
(2).删除列中某一属性的值:update 表名 set 列名=null where 过滤条件;
10.删除数据:(如果一张表中存在外键约束,就不能使用有过滤条件(where)的约束)
(1).delete from 表名 where 过滤条件;
(2).删除多行:delete from 表名 where 过滤条件 or 过滤条件;
(3).删除某一区间的数据:delete from 表名 where 列名 between 下限 and 上限;
11.使用 truncate 语句(没有过滤条件)
truncate table 表名;
truncate table 不能用于有外键约束引用的表。
12.delete 会记录删除日志,删除数据后还能恢复,但执行效率低。
13.truncate table 不会记录删除日志,删除数据后不能恢复,但执行效率高。
14.复制表数据:insert into 新表名 select * from 被复制的表名;

15.修改约束:alter table 表名 change 旧列名 新列名 数据类型;

第五章 简单的数据查询

投影操作:

Select 列名 from 表名;

Select 列名1,列名2 from 表名;

Select * from 表名;

表名前缀:

Select 表名.列名 from 表名;

列别名:

Select 列名1 AS a,列名2 AS b from 表名 AS c;

排除重复数据:

SELECT DISTINCT 列名 FROM 表名;

查询限定行数据:

SELECT * FROM 表名 LIMIT 1,50;

选择操作:

Select 列名 from 表名 where 条件1(and/or)条件2;

单条件选择操作:

Select列名1,列名2 from 表名 where 列名3 = 值;

执行范围操作:

Select 列名 from 表名 where 列名 beween 下and 上

定义集合:

Select 列名 from 表名 where 列名(in/not in);

模糊查询:

Select 列名 from 表名 where列名 like _%;

处理空值数据:

Select 列名 from where 列名(is null/is not null);

升序和降序:

Select 列 from 表 order by 列(asc/desc);


第六章 聚合函数与分组

聚合函数:

count;返回结果集中行的数目

Select count()from 表名;

2.sum;返回结果集中所有值得总和

Select sum()from 表名;

3.avg;返回结果集中所有值的平均值

Select avg()from 表名;

4.max;返回结果集中所有值的最大值

Select max()from 表名;

5.min;返回结果集中所有值的最小值

Select min()from 表名;

在带有groupby子句的查询语句中,在select 列表中指定的列要么是groupby子句中指定的列,要么包含聚合函数

查询语句的select 和groupby,having 子句是聚合函数唯一出现的地方,在where 子句中不能使用聚合函数。

当在gropuby子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件。where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。


第七章 组合查询

什么为子查询:

子查询又称之为内部查询,包含子查询的查询语句成为外部查询。

子查询我们又分为两类:

1.非相关子查询:是独立于外部查询的子查询,子查询总共执行一次,执行完后将值传递给外部查询。

2.相关子查询:她的执行依赖于外部查询的数据,外部查询返回一行,子查询就返回一次。

注意:如果子查询与外部查询使用同一个表,子查询也需要加上前缀作为限定,在这是我们一般使用表的别名来区分。WHERE 子句中的子查询:

select columnA from table columnB =(子查询)

在子查询中使用运算符:

1:使用EXISTS运算符(后总是跟一个子查询,只要子查询返回了行,它的值就为真)

2:使用ALL运算符

3:使用ANY运算符

ANY与ALL不同的是:在子查询返回的值中,只要有一行满足比较运算,那么比较表达式就为真,如果所有值都不满足,则返回假。

组合查询数据:使用union的运算符

第八章 联接

内联接:

内部联接是使用比较运算符比较要联接列中的值的联接。

joinon用在from子句后面,而=,>,<,<>,>=,<=则用在where子句中。

外联接:

左外联接:则左表中的所有行存在于查询结果中,而匹配列中列值不匹配的将用空值填充。(lift join)

右外联接:则右表中的所有行存在于查询结果中,而匹配列中列值不匹配的将用空值填充。(right join)

完全外联接:将返回两个表的所有行 (full join)

第九章 数据库建模

传统软件开发五个阶段:


需求分析

设计

编码

测试

维护

数据库设计过程:


规划阶段(三步骤):系统调查,可行性分析(分析报告),开发计划

需求分析(工作):分析用户活动(业务流程图),确定系统范围(系统范围图),分析用户活动涉及的数据(数据流图),分析系统数据(数据字典)。

概念涉及(的主要步骤):进行数据抽象,涉及局部概念模式;将局部概念模式综合成全局概念模式;评审。

逻辑设计(目标):数据模型映射

物理设计(的步骤):存储记录结构设计,确定数据存放的位置,存储方法的设计,完整性和安全性考虑,程序设计。

数据库的实现(主要工作):用DDL定义数据库结构;组织数据入库;编制与调试应用程序;数据库试运行(功能测试,性能测试)。

数据库的运行与维护工作:数据库的转储和恢复;数据库安全性,完整性控制;数据库性能的监督,分析和改进;数据库的重组织和重构造。

概念设计---ER建模(概念数据模型):

为什么要用ER建模?

--- 通用的数据库建模的方法

--- 与具体数据库无关

什么是模型?

---ER:实体(Entity)关系(Relation)

范式一:列不可再分(值必须唯一),行不可重复(定义主键)。

范式二:非主键列必须依赖于主键列(非主依主)。

范式三:非主键列之间必须相互独立(非主独立)。



点击复制链接 与好友分享!回本站首页

上一篇:Golang访问SQLlike数据库(二)――sqlpackage主要数据结构及方法
下一篇:最后一页
相关文章

数据库拷贝的注意事项

您的数据库审计了吗?

精通数据库系列之入门-基础篇2

精通数据库系列之入门-基础篇1

精通数据库系列之入门-技巧篇5

精通数据库系列之入门-技巧篇4

精通数据库系列之入门-技巧篇3

精通数据库系列之入门-技巧篇2

精通数据库系列之入门-技巧篇1

精通数据库系列之入门-基础篇3


图文推荐

关系型数据库基础总结
基于Hadoop生态圈的数
关系型数据库基础总结
基于Hadoop生态圈的数
关系型数据库基础总结
学生调试问题总结
关系型数据库基础总结
数据库知识学习笔记



文章
读书

Win2000下关闭无用端口
禁止非法用户登录综合设置 [win9x篇]
关上可恶的后门――消除NetBIOS隐患
网络入侵检测系统
潜伏在windows默认设置中的陷井
调制解调器的不安全
构建Windows 2000服务器的安全防护林
SQL Server 2000的安全配置
黑客攻防技术宝典:Web实战篇(第2版)
超级网管员――网络安全
代码大全(第二版)
软件之道:软件开发争议问题剖析
CSS插件工具箱
CSS入门经典(第3版)
C#并行编程高级教程:精通.NET 4 Pa
CMMI+敏捷整合开发




点击排行

机器学习面试问题7
Mybatis传多个参数(三种解决方案)
mysql分表和表分区详解
Oracle使用——PLSQL的中文乱码显示全
oracle11g客户端如何完全卸载
一点实例明白mysql数据库存储过程
Oracle行转列、列转行的Sql语句总结
实战体验几种MySQLCluster方案







Viewing all articles
Browse latest Browse all 6262

Latest Images

Trending Articles