数据库-个人-大杂烩

数据库-个人-大杂烩

3.数据完整性分类

域完整性

实业完整性

自定义完整性

援引完整性

 

组(聚合)函数

  • max(),min().avg():注意单行与多行不能够放在一块儿

    select max(e.aslary),e.type_id from employee e;--会直接报错的,单行结果与多行不能放在一起
    
  • count:计算函数 : 总括字段时不总计null的

    select count(*) from employee;--统计该表一共有多少条记录(里面加任意的数字也可以count(2))
    select count(e.manager_id) from employee e;--按照某个字段统计,空值不统计
    
  • group by:分组
    重组分组函数使用
    group
    by后边的列能够不出新在select后边,但现身在select前面包车型大巴列必须出现在group
    by子句里面
    一经select列表中既有常见列又有分组函数,则必须使用group by子句
    会晤分组函数的法则限制无法运用where,只可以选拔having,且用了having必须接纳group
    by。

    select e.division*id,avg(e.salary) from employees2 e group by e.division*id;--求每个部门的工资
    

范式一:保险数据库之中表每一列的原子性{假若 某一列 出生地的内容:莱茵河-纽伦堡-双峰县 ,这种多少已然背离了  第一范式,此时理应设计多张表    }

多表联合检查

购置数码超越二个的产品名,顾客名以及购买出售的多少(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;
    

5.7大约束

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

主键约束【不允许空,最少性,稳固性】P库罗德IMA大切诺基Y KEY

检查约束  CHECK

自定义约束 

暗中认可约束  DEFAULT

非空约束  NOT NULL

外键约束 FOREIGN KEY

 

 

not null(非空约束)

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

DCL数据调控语言【revoke  grant】

oracle有如下类型的牢笼:

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

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

DDL语句(数据定义语言)

对表的操作可以由此DDL语句举办,富含:

  • create:创设新表,必须以字母早先,访问别的用户的表时须要增加用户名的前缀

    create table dept(deptno number(2),dname varchar2(14),loc varchar2(3));
    create table dept30 as select empno,ename,sal*12 ANNSAL,hiredate from emp where deptno=30;--数据从别的表中拷贝
    
  • 开创联合主键的表

    create table emp( emp_id integer, emp_name varchar2(20) not null, emp_bir date default sysdate primary key(emp_id,emp_name) );
    
  • alter:退换表的结构(字段)

alert table 表名 add (扩充的列名 类型,。。。。。);–扩大列
alert table 表名 modify (修改的列名 类型);–修改列
alert table 表名 rename column 要修改的列名 to 新的列名;–修改列名
alter table 表名 rename to 新的表名;–修改表名
alert table 表名 drop column 要删减的列名;–删除列
alert table dept30 add (job varchar2(9));
alert table dept30 modify (job varchar2(15));
alert table dept30 raname column deptname to dname;alert table dept30
drop column job;

  • drop:删除表

表中的全体数据将被删去
东西被电动提交
全体的目录被删去
不可能回降
深透删除表
drop table 表名;–删除钦点的表

  • truncate:快捷删除表中的具备记录

直白删除全体的笔录,不能够内定删除条件
力不能及回落
只会去除数据,会保留表的构造(字段),能够重复插入数据
速度快于delect
truncate table 表名;–删除钦点的表

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

 

 

视图

能够掩饰一些消息
编造的表(不忠实存在,基表的数量删除时,视图中的数据也会删除)
能够举办增加和删除改查(对视图表中的数据变动时,基表的多少也会更改)
即使视图中能看到的,基表中肯定能来看

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);--插入数据

2.数据的特色:正确,可相信,完整

自律的项目:

  • 表级约束和列级约束,他们互相在功能上尚无别的的分别,但一般若是有些约束用于于四处八个列时,只好选取表级约束的花样来张开表述,假使七个字段组成耨表的一块主键时。
  • 列级约束: 在概念列的时候:列名 约束类型 表级约束
    在概念完全部的列后:列名,列名,。。。 约束类型

6.T-SQL组成

常用数据类型

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

 

语法的试行各种

1.select 2.from 3.where 4.group by 5.组函数 6.having 7.order by

表明:having与where成效雷同,就是施行的一一区别等eg:select
e.division_id,avg(e.salary) from employees2 e group by e.division_id
where
avg(e.salary)>150000;–会报错的,因为where比组函数(avg)先进行,在实行where的时候,avg(e.salary)还从未算出来,所以会出错,换到having就没事了。

  • insert into(插入语句)
    插入时注意完整性约束原则(外键的取值)
    安顿的时候插入到首行

    insert into 表名(插入的字段)values(字段对应的值)
    insert into student values(3,'name','sex',12); 
    insert into student(id,name) values(4,'name'); 
    insert into student values(5,'''name','sex',12);
    

安插的名称为’name insert into student(name,sex) values(&Name,’nan’);
&:变量,在实行该语句时,会让您输入name要插入的值(Name变量名本人起的)
一遍插入多条语句,要查入得值从另一个表中取多少 insert into
student(name,sex,age) select name,sex,age from student2 where
id>10;

  • delete(删除语句) : delect from 表名 条件

    delect from student where id=3
    
  • update(修改语句) : update 表名 set 字段名=要修改的值 条件

    update student set name=gfdd where id=2;
    update studnet set name=gggg,sex=nv where 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;--用到了集合再排序只能使用数字了
    

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

死锁

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数据库会活动解锁一条语句

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

 

 

 

 

 

 

 

 

 

 

 

 

参照完整性约束

外键可感到空值;当外键不为空时,其取值只好等于参照的主键的某些值

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

相关子查询

图片 1

 

 

数据库的约束

自律是表级强制实践的准则,当表中数量有互相依赖时,能够保险数量不被删除

1.数据库设计三大范式

目录

图片 2

 

单行子查询

  • 查询结果为一行

  • 单行子查询只好利用单行相比运算符 =,>,>=,<,<=,<>

    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)
    

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%’
    :只显示第叁个字符为A的名字
    select naem from student where name like ‘%A_B%’
    :只浮现含有A_B的名字(\:转义字符)

实践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;

精细入微微信公众号获取更加多相关资源

图片 3

Android小先生

图片 4

概念模型

也称之为音讯模型,即遵照用户的见解来对数码和音讯建立模型

  • 实体(Entity):客观存在并可相互开始展览区分的东西称为实体
  • 天性(Attribute):实体所全数的某一性格称为属性,三个实体可有若干天性子来形容。
  • 键(KEY):独一标记实体的习性集称为键,一般分为超键、候选键、主键以及外键。
  • 域(Domain):属性的取值范围称为该属性的域。
  • 实体型(Entity
    type):用实体名以及其属性名集结来抽象和描写同类实体称为实体型
  • 实体集:同型实体的联谊称为实体集

数值处理函数

  • 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次幂

外接连:不独有重返符合连接条件的记录,也回到钦点表中的不相符连接条件的笔录

图片 5

  • 左外连接:先对A表和B表做内连接,再把A表中并未有相称的结果集加多进去形成新的结果集(相应的右表的值(对应A表未有相称的)为null)

    select * from newdept left outer join newemp on newdept.deptid = newemp.deptid;--outer可以省略 
    。。。。。。。where a.deptno = b.deptno(+);--左连接
    
  • 右外连接:
    先对A表和B表做内一连,再把B表中尚无相称的结果集增添进去产生新的结果集(相应的左表的值(对应B表未有相称的)为null)也回到

    select * from newdept right outer join newemp on newdept.deptid = newemp.deptid
    。。。。。。。where a.deptno(+) = b.deptno;--右连接
    
  • 全外连接:在内连接的根底上,把左右两表中不符合连接条件的笔录都回去

在emp中每一个职员和工人都有友好的mgr(COO),何况每三个经营本身也是信用合作社的职员和工人,本身也会有和好的mgr。我们要求将每三个职工要好的名字和经营的名字都找寻来。

  select worker.ename,'work for',manager.ename from emp worker,emp managetr 
  where worker.mgr = manager.empnework for:连接字符串

用SQL语句列出EMP表中有着单位的详细消息以及对应的机构人数

select a.* , b.* from dept a,(select deptno,count(*) from emp group by deptno) b where a.deptno = b.deptno(+)
  • 全外连接

用SQL语句列出NEWEMP表和NEWDEPT表中具备机关和职工的详细音讯:

select * from newdept full outer join newemp on newdept.deptid = newemp.deptid

多表联合查询

未曾点名连接条件的多表查询将产生笛Carl积的结果
笛Carl积结果:多少个表中有所数据的聚焦都会询问出来

图片 6

笛Carl积

多表连接查询中的连接类型

图片 7

锁:保障数据库的一致性(同步):自增多锁

T1推行 update students set name=’gfd’ where id=3;
要是T2想修改id=3的数据,必须等T1提交后能力修改(也正是说提交后自动释放锁)

索引

行使索引大大增加速度查询的速度
对数据量大的,平时应用的表才去制造索引(须求保证的)
查询的时候与寻常的一样

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

实业完整性约束

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

自律原则

  • 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);
    
网站地图xml地图