澳门游艺场9159-9159金沙游戏场

引用完整性,标识每一行                数据

作者: 澳门游艺场  发布:2019-09-26

 

执行sql语句变成为:
select
 t_date, 
 (select count(*) from t where t_status='胜' and t_date=e.t_date) 胜, 
 (select count(*) from t where t_status='负' and t_date=e.t_date) 负
from t e group by t_date order by e.t_date;

#引用完整性(参照完整性)

    外键约束:  foreing     key

9159金沙游戏场,     分清主次关系  外键依赖主键    先有主键  再有外键

      语法   

         CONSTRAINT 约束的名字   FOREIGN KEY(约束的字段) REFERENCES 主表(约束字段)

        ALTER  TABLE  次表名称  ADD CONSTRAINT 约束的名字 FOREIGN KEY(约束的字段)               REFERENCES   主表(约束的字段);

    例:

    CREATE TABLE student(sid int pirmary key,name varchar(50) not null,sex varchar(10)                   default‘男’);

    create table score(id int,score int,sid int , --外键列的数据类型一定要与主键的类型一致

    CONSTRAINT fk_score_sid foreign key (sid) references student(id));

   第二种添加外键方式。

    ALTER TABLE score1 ADD CONSTRAINT fk_stu_score FOREIGN KEY(sid) REFERENCES     stu(id);

3.数据完整性分类

域完整性

实体完整性

自定义完整性

引用完整性

 

集合

集合中的元素可以把一条记录或者一个字段当做一个元素
用了集合再排序的时候,order by 字段的位置(例如 1):只能用数字了

  • intersect:交集

  • minus:减集

    • 在一张表中显示了,就不在另一张表中出现了(A表 minus B表):显示B表去除与A表相同的部分
  • union all:并集(加all不去重)union :去重

    select * from (select * from (select * from employees2 e order by e.salary desc) where rownum<11
    minus
    select * from (select * from employees2 e order by e.salary desc) e where rownum<4) order by 6;--用到了集合再排序只能使用数字了
    

#实体的完整性

概述:  实体:即表中的一行(一条记录)代表一个实体(entity) 实体完整性的作用:标识每一行                数据不重复

约束类型有:主键约束 primary key      唯一约束 unique   自动增长列  auto_increment 

  *主键约束

            注:每个表中要有一个主键。特点:数据唯一,且不能为null。

            第一种添加方式:

                 CREATE TABLE student( id int primary key, name varchar(50));

            第二种添加方式:此种方式优势在于,可以创建联合主键

                 CREATE TABLE student(id int,name varchar(50),primary key(id));

                 CREATE TABLE student(classid int,stuid int,name varchar(50),primary key(classid                           ,stuid));

           第三种添加方式:

                 CREATE TABLE student(id int,name varchar(50));

                  ALTER TABLE  student  ADD PRIMARY  KEY (id);

*唯一约束

        特点是不能重复

        create table student(id int primary key,name varchar(255) unique);

*自动增长列

       sqlserver数据库(identity)     oracle数据库( sequence)��

       给主键添加自动增长的数值,列只能是整数类型

      create table student(id int primary key auto_increment,name varchar(255));

6.T-SQL组成

多行子查询

  • 查询结果为多行
  • 多行子查询只能使用多行比较运算符

    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)

#域完整性

  域完整性的作用:限制此单元格的数据正确,不对照此列的其它单元格比较  域代表当前单元     格 域完整性约束:数据类型   非空约束(notnull)  默认值约束(default)    check约束(mysql不支    持)check(sex='男'orsex='女')

  *数据类型

     数值类型、日期类型、字符串类型

  *非空约束  not null  

澳门游艺场9159,      CREATE TABLE student( Id int pirmary key, Name varchar(50) not null, Sex varchar(10));

      INSERT INTO  student values(1,’tom’,null);

  *默认值约束

      CREATE TABLE student(Id int pirmary key,Name varchar(50) not null,Sex varchar(10) default       ‘男’);

       insert into student1 values(1,'tom','女');

      insert into  student1 values(2,'jerry',default);

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

约束条件

  • primary key(主键约束)

    • 在创建的表的时候指定

      create table emp(emp_id integer primary key)
      
    • 在表创建完成后添加主键约束

      alter table stu add primary key (emp_id);
      
  • foregin key(外键约束)

    • 两张表没有建立外键关系

      alter table stu add foregin key(stu_id) references xi(xi_id)
      
    • 删除外键的时候,相应表中与该外键的有关的记录也全部删除

      alter table stu add foregin key(stu_id) references xi(xi_id) on delete cascade
      
    • 删除外键的时候,相应表中与该外键的有关的列全部设置为null

      alter table stu add foregin key(stu_id) references xi(xi_id) on delete set null
      
  • unique(不能重复约束)

    alter table emp add unique(emp_name);--可以插入null(null值可以重复)
    
  • check(取值范围约束)

    alter table emp add check(em_sex in ("男","女"));alter table emp add check(em_id>0);
    

DCL数据控制语言【revoke  grant】

数值处理函数

  • 1.round:保留指定的位数(按四舍五入)

    SELECT round(5.75), round(5.75, 1), round(15.75, -1) FROM dual;--1代表保留一位小数,-1表示个位也四舍五入
    
  • trunc:直接去掉小数点,没有四舍五入

    SELECT trunc(5.75), trunc(5.76, 1), trunc(15.75, -1) FROM dual;--1表示保留一位小数,直接去掉后面的,不四舍五入
    
  • mod:去余数

    select mod(1600,300) from dual;--返回结果为100
    
  • abs:去绝对值

    select t.quotedprice -100 from order_details t where t.ordernumber =354 and t.productnumber = 13;--返回
    
  • sign(x)返回x的符号

若x<0,返回-1;若x=0,返回0;若x>0,返回1

  • floor(x)返回小于或等于x的最大整数

    select floor(5.8),floor(-5.6) from dual;
    
  • ceil(x)返回大于或等于x的最小整数

    select ceil(5.8),ceil(-5.6) from dual;
    
  • power(x,y)返回x的y次幂

2.数据的特点:正确,可靠,完整

9159金沙游戏场 1

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

not null(非空约束)

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

**范式一:保证数据库之中表每一列与主键有关{如果 某一行之中数据描述的是一个学生的实体包括   {id name sex age classid }  如果再多加一列 光照强度 这种数据已然背离了  第二范式,此时应该设计多张表    }**

case表达式:(选择表达式)

Case国际sql通用支持的,使用case可移植更好。相当于在SQL中执行if语句 CASE 可用于允许使用有效表达式的任意语句或子句。 例如,可以在 SELECT、UPDATE、DELETE 和 SET 等语句以及 select_list、IN、WHERE、ORDER BY 和 HAVING 等子句中使用 CASE。

select e.salary,
case e.type_id
   when 1 then e.salary*2 
   when 2 then e.salary*3
   when 3 then e.salary*4 
    eles e.salary*5
end 
as new_salary from employee e;

说明:当typeid为1时,薪水2,当typeid为2时,薪水3,当type_id为3时,薪水4,其他情况下薪水5;

1.数据库设计三大范式

目录

9159金沙游戏场 2

 

第二范式

第二范式是在第一范式的基础上建立起来的,即满足2NF必须先满足1NF
只出现在复合主键的数据库表中
第二范式要求数据库表中的每个实例或者行必须可以被唯一地区分,所以实体必须设置主键,并且实体的属性必须完全依赖于主键,不得出现非主键属性部分依赖于主键的情况。

主键为学号+课程名称,而学分依赖于学号,这就是所谓的非主键属性依赖于主键的情况,这是不符合2NF的,出现了数据的冗余(存储多余的数据,浪费空间),解决办法就是拆成3张表。

5.7大约束

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

主键约束【不允许空,最少性,稳定性】PRIMARY KEY

检查约束  CHECK

自定义约束 

默认约束  DEFAULT

非空约束  NOT NULL

外键约束 FOREIGN KEY

 

 

概念模型

也称为信息模型,即按照用户的观点来对数据和信息建模

  • 实体(Entity):客观存在并可互相进行区分的事物称为实体
  • 属性(Attribute):实体所具有的某一特性称为属性,一个实体可有若干个属性来刻画。
  • 键(KEY):唯一标识实体的属性集称为键,一般分为超键、候选键、主键以及外键。
  • 域(Domain):属性的取值范围称为该属性的域。
  • 实体型(Entity type):用实体名以及其属性名集合来抽象和刻画同类实体称为实体型
  • 实体集:同型实体的集合称为实体集

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

 

 

日期处理函数

  • sysdate:返回系统的当前时间

    select sysdate from dual;
    
  • add_months(x,y):返回x加上y个月的结果,如果y为负值,就是减去

    select add_months(sysdate,10) from dual;
    
  • last_day(x):返回包含x月的最后一天

    select last_day(date '1993-04-28') from dual;--返回结果为1993-04-30
    
  • next_day(x,day):从x时间开始,返回下一个day的时间值

    select next_day(sysdate,'星期一') from dual;--从系统的当前时间开始,返回下一个星期一的日期
    
  • months_between(x,y):返回x和y之间有多少个月(x-y),可以是负数

    select months_between(sysdate,date '1993-04-28')/12 from dual;--计算出某个人的周岁
    
  • round(date,month/day):

Month 1-15日算上一个月,15日后算下一个月
Year 1-6月算上一年,7-12月算下一年

select round(date'2014-7-16','month') from dual;--返回2014-8-1 select round(date'2014-7-16','year') from dual;--返回结果为2015-1-1
  • trunc

    select trunc(date'2014-7-16','month') from dual;返回结果为2014-7-1
    

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

oracle有如下类型的约束:

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

 

 

约束的类型:

  • 表级约束和列级约束,他们两者在作用上没有任何的区别,但通常如果某个约束用于于不止一个列时,只能使用表级约束的形式来进行表达,如果多个字段组成耨表的联合主键时。
  • 列级约束: 在定义列的时候:列名 约束类型 表级约束 在定义完所有的列后:列名,列名,。。。 约束类型

范式一:保证数据库之中表每一列的原子性{如果 某一列 出生地的内容:湖南-长沙-芙蓉区 ,这种数据已然背离了  第一范式,此时应该设计多张表    }

相关子查询

9159金沙游戏场 3

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)】

 

 

 

 

 

 

 

 

 

 

 

 

字符函数

  • lower:将字符串全部变为小写

    select name,sex from student where LOWFR(name) = 'blake'; 查询姓名为blake的相应属性,不管姓名是大小写还是大小写混写的都能查出
    
  • upper:将字符串全部变为大写

  • initcap:将字符串的第一个字母变为大写

  • concat:将两个字符串拼接起来

  • substr:截取字符串

    select substr('helloword',2,5) from dual;--从第二个开始数5个
    
  • length:返回字符串的长度

    select length(t.empfirstname) from employee t;
    
  • instr:在一个字符串中定位子字符串的位置(没有的话返回值为0)

    select instr('hellword','w')from dual;--查询w在hellword中的位置
    
  • 左补齐函数(lpad)

  • 右补齐函数(rpad)

    select e.empfirsname,rpad(e.empfistname,10,'&') from employees e;--设置长度为10,不够的用&补齐
    
  • replace:替换函数

    select replace('ABCDFG','D','www') from dual;--用www替换D
    
  • trim(leading|trailing|both y from x):从x中截去单个字符y

  • both:截去两边的;leading:从左边;traiing:从右边

    select trim(both 'h' from 'hooojdhh') from dual;--截去两边的h
    

 

两张表中的数据运算

9159金沙游戏场 4

select kc.mc "种类",kc.s1-(select sum(s1) from ck where ck.mc = kc.mc ) "剩余量" from KC;

索引

使用索引大大加快查询的速度
对数据量大的,经常使用的表才去创建索引(需要维护的)
查询的时候与正常的一样

create index 索引名 on 表名(字段名。。。。);--创建索引delete index 索引名;--删除索引

常用数据类型

  • varchar2(size):可变长度的字符串,最大长度为size个字节,size最大值为4000,最小值为1
  • char(size):固定长度的字符数据,其长度为size个字节,最大值为2000,最小值和默认值为1,不管实际的长度为多少都会分配指定的size个字节
  • number(p,s):有效位数为p且精度为s的数值(小数点后有s位)p的取值范围为1到38
  • date:有效日期范围从公元前4712年1月到公元后4712年12月31日
  • long:可变长度的字符数据,其长度可达2G个字节

四表联查

有如下几张表:

部门表:organization(orgid ,orgName)
商品表:Goods(goodsid,goodsName)
销售单(单头):sale(billid,billdt,orgid,status)
销售单(单体):sale_item(billid,goodsid,qty)

orgid:组织编码;
orgName:组织名称;
billid:单据编号
billdt:订单日期

查询“销售一部”本月的商品销售明细(商品编码。商品名称,销售日期,销售数量)

select * from organization o,goods g,sale s,sale_item si 
where 
o.orgid=s.orgid and g.goodsid=si.goodsid ands.billid=si.billid and orgName="销售一部" and billdt>trunc(sysdate) and billdt < last_day(sysdate);

本文由澳门游艺场9159发布于澳门游艺场,转载请注明出处:引用完整性,标识每一行                数据

关键词: