当前位置:u赢电竞手机版 > uwin电竞app官网下载 > SQL总结uwin电竞app官网下载

SQL总结uwin电竞app官网下载

文章作者:uwin电竞app官网下载 上传时间:2019-07-25

 

多行子查询

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

    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)

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

通用函数

  • nvl(value,srt):如果第一个参数不为null,就返回第一个参数,如果为null就返回第二个参数

    select nvl(e.name,'name is null') from employee e;
    
  • nvl2(value,x,y):如果value为null就返回y,否则返回x

    select nvl2(s.class_id,1,2) from students s;
    
  • nullif(x,y):如果相等返回null,不相等则返回x;

    select nullif(s.sex,'男') from students s;
    

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

死锁

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

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

 

 

相关子查询

uwin电竞app官网下载 1

3.数据完整性分类

域完整性

实体完整性

自定义完整性

引用完整性

 

第三范式

要求一个数据库表中不包含已在其他表中已包含的非主关键字信息(非主键属性不能出现在第二张表中)

非主键属性重复了,完全可以根据编号(主键)去查询部门简介和名称

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

常用数据类型

  • 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个字节

 

 

简介

在Android中存储数据有时会用到数据库,Android给我们提供了 一系列的API来操作数据库,非常简单,我们只需要输入对应的SQL语句,甚至不懂SQL语句,只传入对应的参数即可使用。还有一些第三方库,如GreenDao,OrmLite等都极大的简化了对数据库的一些操作。这样虽然我们不需要对数据库有多了解一样能实现功能,但是在面对复杂操作时,对SQL语句的熟练使用就显得尤为重要了。因为在Android我们只要是利用SQL语句对表操作,所以本文主要介绍SQL的使用,只是简单介绍了数据库一些相关的概念,这样能有更加清晰的认识。

5.7大约束

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

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

检查约束  CHECK

自定义约束 

默认约束  DEFAULT

非空约束  NOT NULL

外键约束 FOREIGN KEY

 

 

约束的类型:

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

DCL数据控制语言【revoke  grant】

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

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

 

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

uwin电竞app官网下载 2

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

数值处理函数

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

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

uwin电竞app官网下载 3

 

索引

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

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

1.数据库设计三大范式

单行函数

  • 用于操作数据项
  • 可以接受参数并返回一个值
  • 对每一个返回行起作用,每一行返回一个结果
  • 可使用转换函数修改数据类型
  • 可使用嵌套形式
  • 常见的单行函数包括字符、数字、日期处理函数、类型转换函数、逻辑处理函数等

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

 

 

 

 

 

 

 

 

 

 

 

 

目录

uwin电竞app官网下载 4

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

实体完整性约束

每个实例或者行的主键都不能为空

6.T-SQL组成

类型转换函数

数据类型转换包含隐士类型转换和显示类型转换
隐士类型转换:系统自动转换
显示类型转换:调用相应的函数转换

TO_CHAR:字符串转换(其他类型转换为字符串)
TO_NUMBER:数值转换
TO_DATE:日期转换

  • TO_CHAR

将日期转换为字符串格式
必须用单引号括起来,大小写不敏感
有一个fm元素,用于填补空格或者禁止前面的零
使用逗号分离日期
TO_CHAR(date,'fmt')
常用的日期格式:
YYYY:四位数表示的年
YEAR:拼写出的年
MM:两位数字的月
MONTH:全月明(例如:sepember)
DD:两位数字表示的月
DAY:全天名

select name,TO_CHAR(hiredate,'fmDD Month YYYY') HIREDATE from emp
  • TO_NUMBER:将字符串转化为数值TO_NUMBER(char)

    select * from emp where deptno = TO_NUMBER('30')
    
  • TO_DATE:将字符串转换为日期TO_DATE(char,['fmt'])

    select TO_DATE('2006-05','YYYY-MM') from DUAL
    

字符函数

  • 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
    

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

第一范式

是数据库设计的最基本的要求,不满足1NF的数据库不是关系型数据库
所谓第一范式就是指数据库表的每一列都是不可分割的基本数据项,同一列中只能有一个属性(也就是说一个属性下不能再分出其他的属性来)

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 表名;--删除指定的表

组(聚合)函数

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

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语句一块执行,要么一起成功,要么一起失败 以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点
    

视图

可以隐藏一些信息
虚拟的表(不真实存在,基表的数据删除时,视图中的数据也会删除)
可以进行增删改查(对视图表中的数据改变时,基表的数据也会改变)
只要视图中能看到的,基表中肯定能看到

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

单行子查询

  • 查询结果为一行

  • 单行子查询只能使用单行比较运算符 =,>,>=,<,<=,<>

    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语句

  • 常用数据类型 2.子查询(单行子查询和多行子查询)
  • select语句 条件查询 模糊查询 简单去掉重复的查询结果 关于空值
  • order by
  • 单行函数
  • 字符函数
  • 数值处理函数
  • 日期处理函数
  • 类型转换函数
  • 通用函数
  • 组(聚合)函数
  • 语句的执行顺序
  • insert
  • detect
  • update
  • 事务与锁
  • DDL语句(数据定义语言)
  • 多表联合查询
  • 集合
  • 视图
  • 约束条件
  • 添加注释
  • 索引
  • 经典案例

约束条件

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

本文由u赢电竞手机版发布于uwin电竞app官网下载,转载请注明出处:SQL总结uwin电竞app官网下载

关键词: Android进阶 Android