澳门新蒲京娱乐


的具体含义
图片 2
查询无法运行或数据库表无法打开

数据库-个人-大杂烩

 

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的名字(\:转义字符)

范式一:保障数据库之中表每一列的原子性{若是 某一列 出生地的内容:湖北-塞内加尔达喀尔-石峰区 ,这种多少已然背离了  第一范式,此时应该设计多张表    }

数据库设计范式

数据库设计范式简单来说正是关全面据库在规划时索要依照的一种标准,数据库范式依据要求从低到高分为6大范式,即首先范式(1NF)~第六范式(6NF)。在第一范式的基础上尤其满意越来越多须求的称为第二范式,一回类推。越高的范式数据库冗余越小,一般的话,数据库只供给知足第三范式(3NF)就行了。

 

 

多表联合查询

一向不点名连接条件的多表查询将形成笛卡尔积的结果
笛Carl积结果:五个表中具备数据的汇合都会询问出来

图片 1

笛卡尔积

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

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

    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;--<>:不等于
    
  • 理之当然连接:特指在同一张表内通过特定连接条件查询符合连接条件的值

图片 2

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:连接字符串

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

视图

能够遮掩一些消息
虚拟的表(不忠实存在,基表的数据删除时,视图中的数据也会删除)
能够开始展览增删改查(对视图表中的数据变动时,基表的多少也会变动)
假定视图中能看到的,基表中肯定能收看

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

6.T-SQL组成

外接连:不止再次回到符合连接条件的笔录,也回到钦点表中的不相符连接条件的记录

图片 3

  • 左外连接:先对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(老董),并且每三个经营自己也是商号的职工,本身也可能有投机的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

 

索引

使用索引大大加速查询的速度
对数据量大的,常常接纳的表才去成立索引(必要爱戴的)
查询的时候与常规的同样

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

 

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 表名;–删除钦点的表

DCL数据调控语言【revoke  grant】

字符函数

  • 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
    

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

 

 

 

 

 

 

 

 

 

 

 

 

基于时间总括胜负数

图片 4

4.数据完整性保持花招:约束

 

 

数据模型

依照Computer种类的意见对数码进行建立模型。

3.数据完整性分类

域完整性

实业完整性

自定义完整性

引用完整性

 

优秀例子

1.数据库设计三大范式

参谋完整性约束

外键可认为空值;当外键不为空时,其取值只好等于参照的主键的有个别值

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

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):外键所对应的主键所在的表 关键字 主表 主键

5.7大约束

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

主键约束【不相同意空,最少性,稳固性】P大切诺基IMAENCOREY KEY

反省约束  CHECK

自定义约束 

暗中同意约束  DEFAULT

非空约束  NOT NULL

外键约束 FOREIGN KEY

 

 

SQL语句

  • 常用数据类型 2.子查询(单行子查询和多行子查询)
  • select语句 条件查询 模糊查询 简单去掉重复的查询结果 关于空值
  • order by
  • 单行函数
  • 字符函数
  • 数值管理函数
  • 日子处理函数
  • 类型转变函数
  • 通用函数
  • 组(聚合)函数
  • 话语的实行顺序
  • insert
  • detect
  • update
  • 作业与锁
  • DDL语句(数据定义语言)
  • 多表联合查询
  • 集合
  • 视图
  • 封锁规范
  • 加上注释
  • 索引
  • 卓越案例

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

相关子查询

图片 5

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

四表联合检查

有如下几张表:

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

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

图片 6

多行子查询

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

    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)

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升序排列

实体完整性约束

种种实例恐怕行的主键都不可能为空

目录

图片 7

死锁

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

简介

在Android中累积数据有的时候会用到数据库,Android给大家提供了
一文山会海的API来操作数据库,非常轻松,大家只须要输入相应的SQL语句,以致不懂SQL语句,只传入对应的参数就可以使用。还大概有局地第三方库,如GreenDao,OrmLite等都大幅的简化了对数据库的一对操作。那样尽管大家没有供给对数据库有多驾驭同样能促效率益,不过在面前蒙受纷纷操作时,对SQL语句的熟识运用就呈现越发关键了。因为在Android我们借使是利用SQL语句对表操作,所以本文主要介绍SQL的选拔,只是简短介绍了数据库一些相关的定义,那样能有进一步清楚的认知。

关心微信公众号获取更加多相关财富

图片 8

Android小先生

单行子查询

  • 查询结果为一行

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

    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语句一块试行,要么一同成功,要么一齐失利 以commit开端

  • commit:提交eg:commit

  • rollback:回滚(撤销)eg:rollback

    commit;select * from customers;insert into customers values(6,'gfd','red',date '1993-04-28',null);
    insert into customers values(7,'gfd','red',date '1993-04-28',null);
    savepoint A;--添加保存的点,回滚时可以指定到该位置
    insert into customers values(8,'gfd','red',date '1993-04-28',null);
    savepoint B;
    insert into customers values(9,'gfd','red',date '1993-04-28',null);
    rollback to A;--回滚到A点
    

集合

聚拢中的成分得以把一条记下只怕贰个字段当做二个因素
用了汇聚再排序的时候,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;--用到了集合再排序只能使用数字了
    
两张表中的数目运算

图片 9

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

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图