数据库-个人-大杂烩

1.数据库设计三大范式

图片 1

范式一:保证数据库之中表每一列的原子性{假设 某一列 出生地的原委:湖北-布Rees托-望城区 ,这种数量已然背离了  第一范式,此时应有设计多张表    }

目录

图片 2

 

简介

在Android中存放数据偶然会用到数据库,Android给我们提供了
一多种的API来操作数据库,很轻便,我们只须求输入相应的SQL语句,以至不懂SQL语句,只传入对应的参数就能够使用。还可能有一对第三方库,如GreenDao,OrmLite等都相当的大的简化了对数据库的局部操作。那样尽管大家无需对数据库有多询问同样能达成效果与利益,不过在直面复杂操作时,对SQL语句的纯熟应用就显得尤为关键了。因为在Android我们只借使采取SQL语句对表操作,所以本文主要介绍SQL的使用,只是简短介绍了数据库一些有关的定义,那样能有越来越明显的认识。

**范式一:保障数据库之中表每一列与主键有关{假使 某一行之中数据描述的是三个上学的儿童的实体富含   {id name sex age classid }  倘若再多加一列 光照强度 这种数量已然背离了  第二范式,此时应该设计多张表    }**

数据模型

依照计算机系列的观念对数据进行建立模型。

 

概念模型

也称为消息模型,即依照客商的视角来对数码和音讯建立模型

  • 实业(Entity):客观存在并可交互开展区分的事物称为实体
  • 本性(Attribute):实体所怀有的某一风味称为属性,叁个实体可有若干个属性来形容。
  • 键(KEY):唯一标记实体的属性集称为键,通常分为超键、候选键、主键以致外键。
  • 域(Domain):属性的取值范围称为该属性的域。
  • 实体型(Entity
    type):用实体名以致其属性名群集来抽象和描写同类实体称为实体型
  • 实业集:同型实体的集聚称为实体集

范式一:保障数据库之中表每一列与主键直接有关 **{假若 某一行之中数据描述的是一个学员的实体包含   {id name sex age classid }  假诺再多加一列 classname  这种数据已然背离了  第三范式,此时应该设计多张表 }**

切实世界的实业走入数据库

  • 1.讲现实世界中的客观对象抽象为概念模型
  • 2.把概念模型转化为某一DBMS(数据库管理类别)接济的数据模型

2.数量的特性:正确,可信,完整

键的定义

  • 超键(super
    key):在论及中能独一区分实体的习性集称为涉及格局中的超键。
  • 候选键(candidate
    key):不带有多余属性的超键(每二个属性都能分别实体)
  • 主键(primary key):客户选作区分实体发的一个候选键(foreign key)
  • 外键:在有些关系A中的主键出现在另贰个提到B中,此时事关A中的该主键称为关系B中的外键。

事例表达:
职员和工人(居民身份证号、姓名、年龄、性别)假设姓名也是头一无二的超键:身份ID号、姓名、姓名+年龄、姓名+性别、身份证号+年龄、居民身份证号+性别候选键:居民身份证号、姓名

 

数据库设计范式

数据库设计范式一言以蔽之就是关周详据库在规划时索要根据的一种标准,数据库范式遵照供给从低到高分为6大范式,即首先范式(1NF)~第六范式(6NF)。在第一范式的基本功上尤为满意越多要求的名称为第二范式,一遍类推。越高的范式数据库冗余越小,平时的话,数据库只供给满意第三范式(3NF)就行了。

3.数据完整性分类

域完整性

实体完整性

自定义完整性

引用完整性

 

首先范式

是数据库设计的最主题的渴求,不满意1NF的数据库不是关系型数据库
所谓第一范式正是指数据库表的每一列都以不可分割的基本数据项,同一列中不得不有一性情情(约等于说四个属性下无法再分出其余的属性来)

4.数据完整性保持手腕:约束

 

 

其次范式

其次范式是在率先范式的根底上树立起来的,即满足2NF必得先满意1NF
只现出在复合主键的数据库表中
其次范式须求数据库表中的各类实例也许行必需能够被独一地分别,所以实体必得设置主键,而且实体的习性必得完全依附于主键,不得出现非主键属性部分信任于主键的图景。

主键为学号+课程名称,而学分重视于学号,那就是所谓的非主键属性依赖于主键的景况,那是不合乎2NF的,出现了数据的冗余(存款和储蓄多余的数量,浪费空间),化解办法正是拆成3张表。

5.7大约束

独一约束【允许一个空】UNIQUE

主键约束【不一致敬空,起码性,牢固性】P瑞虎IMA大切诺基Y KEY

自己争辨约束  CHECK

自定义约束 

私下认可约束  DEFAULT

非空约束  NOT NULL

外键约束 FOREIGN KEY

 

 

其三范式

渴求五个数据库表中不带有已在其余表中已盈盈的非主关键字音信(非主键属性无法冒出在其次张表中)

非主键属性重复了,完全能够依靠编号(主键)去询问部门简要介绍和名称

6.T-SQL组成

数据库设计的完整性约束

DDL数据定义语言【create  drop  alter  declare  】

实体完整性约束

各种实例大概行的主键都不可能为空

DCL数据调节语言【revoke  grant】

参谋完整性约束

外键可感觉空值;当外键不为空时,其取值只能等于参照的主键的有些值

DML数据管理语言【insert  update  select  delete】

数据库的自律

自律是表级强制施行的平整,当表中数据有互动注重时,能够维护数量不被剔除

 

 

自律的等级次序:

  • 表级约束和列级约束,他们相互在坚守上尚未任何的区分,但日常固然有个别约束用于于不仅三个列时,只好利用表级约束的情势来进展发挥,要是多少个字段组成耨表的联合主键时。
  • 列级约束: 在概念列的时候:列名 约束类型 表级约束
    在概念完全数的列后:列名,列名,。。。 约束类型

6.询问办法

选择  【int()  not in()  between 
 and     】

模糊  【通配符: %   _   * 
   】

筛选  【where  like  = 】

排序  【order by  】

聚合  【count  sum  avge  max  min  

分组  【group by 】

总是  【
内连接  外接连  全连接  交叉连接  】

子查询  【select  * from  A   where
id not in (select  id from A where id>=10)】

 

 

 

 

 

 

 

 

 

 

 

 

oracle有如下类型的羁绊:

not null:非空
primary key:主键约束
foreign key:外键约束
check:检查约束
unique key:独一性约束

not null(非空约束)

create table student(
     name varchar2(10), 
     sex varchar(5) not null, 
     age integer)

primary key(主键约束)

表级格局定义主键

create table student( 
    name varchar2(19),
    sex varchar2(10),
    age integer,
    constraint student_age_pk primary key(age)
    );

把age定义为主键(student_age_pk:约束的名字有自然的正儿八经:表名主键名封锁类型)

列级形式定义主键

create table student( 
   name varchar2(19) primary key,
   sex varchar2(10),
   age integer);

foreign key(外键约束)

create table emp(
   empno number(4), 
   ename varchar2(10) not null, 
   job varchar2(9),
   deptno number(7,2) not null, 
   constraint emp_deptno_fk foreign key(deptno) references dept (deptn)
   );

–references dept (dept):外键所对应的主键所在的表 关键字 主表 主键

SQL语句

  • 常用数据类型 2.子查询(单行子查询和多行子查询)
  • select语句 条件查询 模糊查询 轻巧去掉重复的询问结果 关于空值
  • order by
  • 单行函数
  • 字符函数
  • 数值管理函数
  • 日子管理函数
  • 类型转换函数
  • 通用函数
  • 组(聚合)函数
  • 言辞的实践各种
  • insert
  • detect
  • update
  • 事务与锁
  • DDL语句(数据定义语言)
  • 多表联合查询
  • 集合
  • 视图
  • 封锁标准
  • 增添注释
  • 索引
  • 杰出案例

常用数据类型

  • varchar2(size):可变长度的字符串,最大尺寸为size个字节,size最大值为陆仟,最小值为1
  • char(size):固定长度的字符数据,其尺寸为size个字节,最大值为两千,最小值和默许值为1,不管实际的长短为多少都会分配钦点的size个字节
  • number(p,s):有效位数为p且精度为s的数值(小数点后有s位)p的取值范围为1到38
  • date:有效日期范围从公元前4712年1四月到公元后4712年3月14日
  • long:可变长度的字符数据,其长度可达2G个字节

查询

子查询

  • 子查询在主查询的前三回实践
  • 主查询使用子查询的结果
  • 子查询要用括号括起来
  • 将子查询放在比较运算符的左边手
  • 子查询中毫无加OGL450DERubicon BY子句

行使场景:比如那多少个雇员的工薪比林志玲女士的高?

单行子查询

  • 查询结果为一行

  • 单行子查询只能接纳单行相比运算符 =,>,>=,<,<=,<>

    select name,job from emp where job = (select job from emp where empno = 7369);
    select ename,job,sal from emp where sal=(select min(sal) from emp)
    

相关子查询

图片 3

多行子查询

  • 询问结果为多行
  • 多行子查询只好利用多行比较运算符

    IN:等于列表中的任何值
    ANY:比较子查询再次回到的每三个值,只要当中一个知足条件就回去true
    ALL:相比较子查询再次回到的每贰个值,要此中全体的值都满意条件才重回true

使用IN:

select empno,ename,job from emp where deptno in(select deptno from emp where ename = 'SMITH' or ename ='MITLER');

使用ANY

  • <ANY : 指小于最大值

  • ANY : 指大于最小值

  • ANY:与IN等价

    select empno,ename,job from emp where sal <ANY (select sal from emp where job = 'clerk')
    

使用ALL

  • <ALL : 指小于最小值
  • “>ALL” : 指大于最大值

select empno,ename,job,sal from emp where sal > ALL(select avg(sal) from emp GROUP BY depton)

SQL语句

  • select语句

select 列名 form 表名select name from student
select * from student :查询全体的列
select name,sex from student

  • select name as myname from student:队列中动用别名

    • 查询结果呈现的列用小名突显(as 用小名展现)
    • 前边是结果列名称为name as后为myname
    • 不写as将要加引号也许空格:select name “myname” form student
  • 列使用算数表明式:

    • select name,sal,sal+100 from student: 查询sal和sal+100
  • 关于空值

    • 空值为不可用,不知底,不适用的值
    • 空值不等于0或然空格
    • 带有空值的算数表明式等于空
  • 接连操作符

    • 可将列恐怕字符与另外列连接起来,用双竖线标志(||)
    • 发出的结果是一个字符表明式
    • 接纳连接操作符查询,再次回到结果是二个一连后的结果(每一个结果的连日)
    • select name || sex as new from
      student:将name和sex的查询结果连接起来彰显并安装查询结果对应的列名叫new
  • 简单易行去掉重复的询问结果

    • 行使distinct关键字能够是某列中再度的值不出示
    • distinct操作会挑起排序,通过排序去掉重复的记录
    • distinct必需放在第一列的眼下,只能促成单列去重
    • select distinct sex from student
  • 规格查询

    • select 列名 from 表名 where 条件
    • where前边不可能运用小名
  • 指鹿为马查询

    • 运用like运算符实行通配查询
    • 询问条件得以包含文字字符或数字
    • %:表示0或几个字符
    • _:表示一个字符

    select name from student where name like ‘S%’
    :只展现以S最初的全名
    select name from student where name like ‘_A%’
    :只显示第1个字符为A的名字
    select naem from student where name like ‘%A_B%’
    :只展现含有A_B的名字(:转义字符)

order by

  • 行使order by能够将记录进行排序
  • ASC:升序(暗中认可的),DESC:降序排列
  • order by 只好放到全部select语句的尾声

select name,sex,age from student order by age
asc:根据age实行降序排列
select name,sex,age,sal from student order by age asc,sal
desc:依照age降序排列,如果相等则在奉公守法sal升序排列

单行函数

  • 用来操作数据项
  • 还不错参数并重返一个值
  • 对每三个回去行起作用,每一行重临二个结果
  • 可应用转变函数修改数据类型
  • 可接纳嵌套情势
  • 大范围的单行函数包含字符、数字、日期管理函数、类型转变函数、逻辑管理函数等

发表评论

电子邮件地址不会被公开。 必填项已用*标注