澳门新萄京SQL总括

澳门新萄京SQL总括

1.数据库设计三大范式

日期处理函数

  • 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时间伊始,重临下2个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-1三五日算上3个月,1十三日后算下五个月
Year 1-7月算上一年,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
    

#实业的完整性

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

它与P卡宴IMA宝马X3Y
KEY约束的不相同之处在于,UNIQUE约束能够建立在三个列之上,而PTiguanIMALacrosseY
KEY约束在2个表中只好有二个。

5.7大约束

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

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

检查约束  CHECK

自定义约束 

暗许约束  DEFAULT

非空约束  NOT NULL

外键约束 FOREIGN KEY

 

 

其三范式

渴求二个数据库表中不带有已在此外表中已带有的非主关键字音信(非主键属性不可能出现在第③张表中)

非主键属性重复了,完全能够依照编号(主键)去查询部门简介和称号

#域完整性

  域完整性的效益:限制此单元格的数目科学,不对照此列的任何单元格比较 域代表当前单元     格 域完整性约束:数据类型   非空约束(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);

列级P哈弗IMAHighlanderY KEY约束的定义格式为:

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

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

    外键约束:  foreing     key

     分清主次关系  外键信赖主键    先有主键  再有外键

      语法   

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

        ALTE奔驰M级  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);

UNIQUE约束

范式一:保险数据库之中表每一列的原子性{倘诺 某一列 出生地的始末:江西-哈博罗内-雨花区 ,那种数据已然背离了  第二范式,此时理应设计多张表    }

依照时间总结胜负数

澳门新萄京 1

1.

**范式一:保险数据库之中表每一列与主键有关{尽管 某一行之中数据描述的是3个上学的儿童的实业包罗   {id name sex age classid }  假如再多加一列 光照强度 那种数量已然背离了  第壹范式,此时应有设计多张表    }**

键的定义

  • 超键(super
    key):在涉及中能唯一区分实体的属性集称为关联格局中的超键。
  • 候选键(candidate
    key):不包涵多余属性的超键(每五日性质都能分别实体)
  • 主键(primary key):用户选作区分实体发的一个候选键(foreign key)
  • 外键:在有些关系A中的主键出现在另1个关系B中,此时涉及A中的该主键称为关系B中的外键。

事例表明:
员工(身份证号、姓名、年龄、性别)若是姓名也是绝无仅有的超键:身份证号、姓名、姓名+年龄、姓名+性别、身份证号+年龄、身份证号+性别候选键:身份证号、姓名

引用完整性

6.T-SQL组成

索引

动用索引大大加速查询的进度
对数据量大的,常常应用的表才去成立索引(须求维护的)
查询的时候与符合规律的一致

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

CHECK约束的严重性功效是限量输入到一列或多列中的可能值,从而保险SQL
Server数据库中数据的域完整性。例如,能够在建立用户采纳库时,强制用户的密码在十一人以上。各类标允许建立多少个CHECK约束。在CHECK约束中得以涵盖搜索条件,但不能包括子查询。

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

SQL语句

  • 常用数据类型 2.子查询(单行子查询和多行子查询)
  • select语句 条件查询 模糊查询 简单去掉重复的询问结果 关于空值
  • order by
  • 单行函数
  • 字符函数
  • 数值处理函数
  • 日期处理函数
  • 类型转换函数
  • 通用函数
  • 组(聚合)函数
  • 说话的履行各类
  • insert
  • detect
  • update
  • 业务与锁
  • DDL语句(数据定义语言)
  • 多表联合查询
  • 集合
  • 视图
  • 封锁规范
  • 拉长注释
  • 索引
  • 经典案例

数据完整性分类

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

 

 

单行函数

  • 用于操作数据项
  • 能够承受参数并回到二个值
  • 对每二个回来行起成效,每一行重回叁个结出
  • 可选择转换函数修改数据类型
  • 可使用嵌套格局
  • 常见的单行函数包罗字符、数字、日期处理函数、类型转换函数、逻辑处理函数等

SQL
Server联机丛书中,将数据完整性解释如下:“储存在数据库中的所有数据值均正确的意况。假若数据库中贮存有不正确的数据值,则该数据库称为已丧失数据完整性。”强制数据完整性可保险数据库中的数据品质。

 

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

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

选择”创建 UNIQUE”复选框。

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

集合

集结中的成分得以把一条记下只怕三个字段当做多个因素
用了聚众再排序的时候,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;--用到了集合再排序只能使用数字了
    

4.

 

 

数据库的羁绊

封锁是表级强制执行的平整,当表中数据有互动借重时,能够维护数量不被去除

内容

 

其次范式

其次范式是在率先范式的根底上树立起来的,即满足2NF必须先满意1NF
只现出在复合主键的数据库表中
其次范式供给数据库表中的各个实例可能行必须能够被唯一地分别,所以实体必须设置主键,并且实体的习性必须完全依靠于主键,不得出现非主键属性部分重视于主键的图景。

主键为学号+课程名称,而学分信赖于学号,那正是所谓的非主键属性依赖于主键的情况,那是不切合2NF的,现身了数量的冗余(存款和储蓄多余的数据,浪费空间),化解办法正是拆成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)】

 

 

 

 

 

 

 

 

 

 

 

 

单行子查询

  • 询问结果为一行

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

    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 Server 禁止用户进行下列操作:

3.数据完整性分类

域完整性

实业完整性

自定义完整性

引用完整性

 

外接连:不仅重临符合连接条件的记录,也回到钦赐表中的不相符连接条件的记录

澳门新萄京 2

  • 左外连接:先对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(CEO),并且每3个主任本人也是商行的职工,本人也有谈得来的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

用户定义完整性

 

相关子查询

澳门新萄京 3

诸如,如果输入了 employee_id 值为 123
的人士,那么该数据库不应允许任何干部使用同一 ID 值。假使安顿将
employee_rating 列的值范围设定为从 1 到 5,则数据库不应接受
6。假若表有一 dept_id
列,该列存款和储蓄职员的部门编号,则数据库应只同意接受商户中的有效部门编号。

DCL数据控制语言【revoke  grant】

概念模型

也号称消息模型,即根据用户的意见来对数据和音讯建立模型

  • 实业(Entity):客观存在并可交互开始展览区分的东西称为实体
  • 质量(Attribute):实体所怀有的某一特征称为属性,一个实体可有若干个属性来形容。
  • 键(KEY):唯一标识实体的属性集称为键,一般分为超键、候选键、主键以及外键。
  • 域(Domain):属性的取值范围称为该属性的域。
  • 实体型(Entity
    type):用实体名以及其属性名集合来抽象和描写同类实体称为实体型
  • 实体集:同型实体的聚合称为实体集

在数据库的每一个表中,日常有通过一列或然七个列,唯一的标识表中的每一行。就像大家一向选用的身份证,能够唯一的标识各类人同样。那样的一列也许七个列,被喻为主键,通过主键,能够强制表的实体完整性。

范式一:保障数据库之中表每一列与主键间接相关 **{如若 某一行之中数据描述的是1个学生的实业包罗   {id name sex age classid }  借使再多加一列 classname  那种多少已然背离了  第二范式,此时应当设计多张表 }**

自律的项目:

  • 表级约束和列级约束,他们相互在功效上没有别的的区分,但一般如若有个别约束用于于不止贰个列时,只可以选拔表级约束的花样来开始展览表述,如若七个字段组成耨表的一起主键时。
  • 列级约束: 在概念列的时候:列名 约束类型 表级约束
    在概念完全部的列后:列名,列名,。。。 约束类型

PRIMARY KEY约束

事务

一组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点
    

CHECK约束

数据库设计范式

数据库设计范式一言以蔽之便是关周密据库在筹划时索要依照的一种标准,数据库范式依照供给从低到高分为6大范式,即首先范式(1NF)~第五范式(6NF)。在率先范式的基础上越发知足越来越多要求的叫做第①范式,一次类推。越高的范式数据库冗余越小,一般的话,数据库只要求满意第二范式(3NF)就行了。

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

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

T1执行 update students set name=’gfd’ where id=3;
借使T2想修改id=3的数额,必须等T1提交后才能修改(也正是说提交后自行释放锁)

同等,大家能够运用CHECK或NOCHECK来开辟只怕关闭某些约束。例如,上边包车型客车讲话将关门下面建立的CH_ZIP_CODE约束:

实施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;
ALTER Table TB_CHECK_CONSTRAINT
ADD
 ZIP_CODE char(6) null
 CONSTRAINT CH_ZIP_CODE check
  (ZIP_CODE like ‘[0-9] [0-9] [0-9] [0-9] [0-9] [0-9]’)

字符函数

  • 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
    
ALTER Table TB_UNIQUE_CONSTRAINT
 ADD
  CONSTRAINT UN_PHONE UNIQUE (username, phone)

实体完整性约束

各类实例大概行的主键都不能为空

引用完整性又称参照完整性。引用完整性维持被参照表和参照表之间的数目一致性,他透过主键(PHavalIMA汉兰达Y
KEY)约束和外键(FOREIGN
KEY)约束来贯彻。引用完整性确认保证键值在装有表中一致。那样的一致性须求不能够引用不设有的值,借使键值更改了,那么在总体数据库中,对该键值的具备引用要开始展览同样的变动。在被参照表中,当其主键值被别的表所参照时,该行无法被删除也不允许改变。在参考表中,不允许参照不存在的主键值。

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

1. 一个表最多只能参照253个不同的数据表,每个表也最多只能有253个FOREIGN KEY约束。
2. FOREIGN KEY约束不能应用于临时表。
3. 在实施FOREIGN KEY约束时,用户必须至少拥有被参照表中参照列的SELECT或者REFERENCES权限。
4. FOREIGN KEY约束同时也可以参照自身表中的其他列。
5. FOREIGN KEY约束,只能参照本身数据库中的某个表,而不能参照其他数据库中的表。跨数据库的参照只能通过触发器来实现。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图