SQL计算

作者:数据库

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

 

 

 

 

 

 

 

 

 

 

 

 

相关子查询

图片 1

#实业的完整性

概述:  实体:即表中的一行(一条记下)代表三个实体(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));

1. 每列只能有一个默认约束。
2. 约束表达式不能参照表中的其他列和其他表、视图或存储过程。

 

 

参照完整性约束

外键可认为空值;当外键不为空时,其取值只可以等于参照的主键的某部值

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

    外键约束:  foreing     key

     分清主次关系  外键正视主键    先有主键  再有外键

      语法   

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

        ALTEMurano  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.数据完整性分类

域完整性

实体完整性

自定义完整性

援用完整性

 

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

Case国际sql通用援救的,使用case可移植更加好。也等于在SQL中进行if语句 CASE 可用于允许选用有效表达式的狂妄语句或子句。 比方,能够在 SELECT、UPDATE、DELETE 和 SET 等语句以及 select_list、IN、WHERE、ORubiconDER 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;

#域完整性

  域完整性的意义:限制此单元格的多寡精确,不对照此列的其余单元格比较 域代表当前单元     格 域完整性约束:数据类型   非空约束(notnull)  私下认可值约束(default)    check约束(mysql不支    持)check(sex='男'orsex='女')

  *数据类型

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

  *非空约束  not null  

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

FOREIGN KEY约束

6.T-SQL组成

现实世界的实体进入数据库

  • 1.讲实际世界中的客观对象抽象为概念模型
  • 2.把概念模型转化为某一DBMS(数据库管理体系)补助的数据模型

当希望删除UNIQUE索引时,能够行使如下步骤:

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

多行子查询

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

    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 Server中,依照数量全部新点子所遵循的数据库对象和界定不一,能够将数据完整性分为以下几种。

 

SQL语句

  • 常用数据类型 2.子查询(单行子查询和多行子查询)
  • select语句 条件查询 模糊查询 轻便去掉重复的查询结果 关于空值
  • order by
  • 单行函数
  • 字符函数
  • 数值管理函数
  • 日期处理函数
  • 类型调换函数
  • 通用函数
  • 组(聚合)函数
  • 言语的推行各类
  • insert
  • detect
  • update
  • 作业与锁
  • DDL语句(数据定义语言)
  • 多表联合查询
  • 集合
  • 视图
  • 封锁规范
  • 增加注释
  • 索引
  • 杰出案例

在上头的P揽胜IMA大切诺基Y KEY约束定义中,WITH子句设置为P本田UR-VIMAEnclaveY KEY约束所创造目录的页面填充度,ON子句提议存款和储蓄索引的数据库文件组名称。将引得文件和表数据文件分寸到数据库中位居不一致硬盘驱动器的数据文件中,有助于减轻单个硬盘的负荷。

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

视图

能够遮盖一些音讯
编造的表(不真正存在,基表的多寡删除时,视图中的数据也会去除)
可以开始展览增加和删除改查(对视图表中的数据变动时,基表的数码也会退换)
假若视图中能看到的,基表中一定能观望

create or replace view ch_view as select * from products p where p.price<15;--创建视图
select * from ch_view;--查询视图insert into ch_view values(14,3,'fff','ggg',12);--插入数据

列级PEscortIMA福特ExplorerY KEY约束的定义格式为:

5.7大约束

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

主键约束【不容许空,最少性,稳固性】PWranglerIMA途乐Y KEY

检查约束  CHECK

自定义约束 

暗中认可约束  DEFAULT

非空约束  NOT NULL

外键约束 FOREIGN KEY

 

 

封锁标准

  • 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);
    

3.

1.数据库设计三大范式

累加注释

comment on table 表名 is ‘注释’;--表增加注释
comment on column 表名.字段名 is ‘注释’;--字段增加注释

3.

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

实业完整性约束

各样实例可能行的主键都不能够为空

  当主表中没有关联的记录时,将记录添加到相关表中。
  更改主表中的值并导致相关表中的记录孤立。
  从主表中删除记录,但仍存在与该记录匹配的相关记录。

2.数量的风味:准确,可靠,完整

多表联合检查

购进数码当先贰个的产品名,顾客名以及购买的数码(3张表)
select * from products;
select * from customers;
select * from purchases;

  • 第一种艺术

    select * from customers c inner join (select * from products p inner join purchases pr on p.product_id=pr.product_id) a on a.customer_id=c.customer_id where a.quantity>1;
    
  • 第二种方法

    select * from (products p inner join purchases pr on p.product_id=pr.product_id and pr.quantity>1) inner join customers c on c.customer_id=pr.customer_id;
    
  • 其两种艺术

    select * from products p,purchases pr,customers c where p.product_id=pr.product_id and pr.customer_id=c.customer_id and pr.quantity>1;
    

用户定义完整性

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

图片 2

1.

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

 

 

死锁

T1 update students set name='gfd' where id=3;
update students set name='gfd' where id=4; T2 update students set name='gfd' where id=4; 
update students set name='gfd' where id=3; 

表达:在T1,T2施行完第一条语句时,再推行下一条语句时,都被各相互锁着,所以都不可能进行下去了。 就应运而生了死锁的情事,oracle数据库会自行解锁一条语句

  数据完整性分类
  实体完整性
  域完整性
  引用完整性
  用户定义完整性
  PRIMARY KEY约束
  DEFAULT约束
  CHECK约束
  UNIQUE约束
  FOREIGN KEY约束

DCL数据调控语言【revoke  grant】

三回修改多条记下
update employees e set e.salary = 
case e.employee_id
  when 1 then 5555
  when 2 then 6666
end
where e.employee_id<3;

图片 3

 

oracle有如下类型的束缚:

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

当在查询中利用主键时,也正是运用主键所在的列作为关键字张开查询,该所因还能用来对数码开展急迅访谈。固然在PLacrosseIMAHavalY KEY约束中未钦命索引类型时,默许意况下所树立的目录为簇索引。该索引只可以因而删除PXC90IMAMuranoY KEY约束或其相关表的不二秘技来删除,而无法利用DROP INDEX语句删除。当PENVISIONIMARubiconY KEY约束由另一张表的FOREIGN KEY约束援用时,不能去除P兰德哈弗IMARAV4Y KEY约束;要刨除它,必须先删除FOREIGN KEY约束。

范式一:保障数据库之中表每一列的原子性{假使 某一列 出生地的内容:湖南-德雷斯顿-武冈市 ,这种多少已然背离了  第一范式,此时应有设计多张表    }

两张表中的数额运算

图片 4

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

-或-

 

单行函数

  • 用以操作数据项
  • 尚可参数并回到三个值
  • 对每三个回去行起功能,每一行重返一个结出
  • 可使用转变函数修改数据类型
  • 可利用嵌套情势
  • 大规模的单行函数蕴含字符、数字、日期管理函数、类型调换函数、逻辑处理函数等

1.

内一连:再次回到符合一定连接条件的查询记录
  • 等值连接:再次回到符合钦点连接条件的值,这一个值是相等关系

    select * from products p,product_type pt where p.type_id = pt.type_id;
    select * from products p inner join prodect_type on p.type_id = pt.type_id;--inner join on 条件
    
  • 非等值连接:再次来到符合钦赐连接条件的值,那一个值不是相等关系

    select * from products p,product_types pt where p.product_type_id <> pt.product_type_id;--<>:不等于
    
  • 当然连接:特指在一直以来张表内通过一定连接条件查询符合连接条件的值

图片 5

select * from products p natural inner join purchases pt;--自动按着相等的去连接,不用加条件了 在emp中每一个员工都有自己的mgr(经理),并且每一个经理自身也是公司的员工,自身也有自己的mgr。我们需要将每一个员工自己的名字和经理的名字都找出来。
select worker.ename,'work for',manager.ename from emp worker,emp managetr where worker.mgr = manager.empne work for:连接字符串
[CONSREAINT constraint_name]
 DEFAULT constant_expression

子查询

  • 子查询在主查询的前壹次实行
  • 主查询使用子查询的结果
  • 子查询要用括号括起来
  • 将子查询放在相比较运算符的右边
  • 子查询中实际不是加OPAJERODETiguan BY子句

采纳场景:比如那一个雇员的工资Billing志玲的高?

选择"创建 UNIQUE"复选框。

数据库的封锁

自律是表级强制试行的平整,当表中多少有互动倚仗时,能够维护数量不被删去

UNIQUE约束

键的概念

  • 超键(super key):在关系中能独一区分实体的习性集称为涉嫌情势中的超键。
  • 候选键(candidate key):不分包多余属性的超键(每三个性质都能分别实体)
  • 主键(primary key):用户选作区分实体发的三个候选键(foreign key)
  • 外键:在有个别关系A中的主键出现在另四个关联B中,此时波及A中的该主键称为关系B中的外键。

事例表达: 员工(身份ID号、姓名、年龄、性别)假如姓名也是不今不古的超键:身份ID号、姓名、姓名 年龄、姓名 性别、居民身份证号 年龄、身份ID号 性别候选键:居民身份证号、姓名

举个例子,借使输入了 employee_id 值为 123 的人员,那么该数据库不应允许别的干部使用同一 ID 值。若是陈设将 employee_rating 列的值范围设定为从 1 到 5,则数据库不接待受 6。假如表有一 dept_id 列,该列存款和储蓄人士的单位编号,则数据库应只同意接受厂商中的有效部门编号。

日子管理函数

  • 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-三三日算前段日子,16日后算下二个月
Year 1-五月算二零一两年,7-四月算前一季度

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
    

一样,大家得以使用CHECK或NOCHECK来开荒只怕关闭有些约束。比如,上面包车型客车口舌将关门上边创设的CH_ZIP_CODE约束:

依照时间总括胜负数

图片 6

用户定义完整性使您能够定义不属于任何任何完整性分类的一定业务法规。全部的完整性类型都帮助用户定义完整性。

四表联合检查

有如下几张表:

部门表: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);

在运用FOREIGN KEY约束是,需求稳重以下几点:

本文由ca88发布,转载请注明来源

关键词: ca88网址 数据库 Android进阶 Android MySql入门学习