我们只需要输入对应的SQL语句,  1).数据以表格的形式出现

引用完整性,唯一约束【允许一个空】UNIQUE,数据库只需要满足第三范式(3NF)就行了,因为在Android我们只要是利用SQL语句对表操作,即表中的一行(一条记录)代表一个实体(entity),每个表中要有一个主键,以及如何在数据库编程中应用和使用这些约束,如果数据库中存储有不正确的数据值,  3).每列为记录名称所对应的数据域,2.RDBMS即关系数据库管理系统(Relational Database Management

图片 5

5.7大约束

独一约束【允许多少个空】UNIQUE

主键约束【不容许空,最少性,稳定性】PGL450IMA本田S660Y KEY

反省约束  CHECK

自定义约束 

私下认可约束  DEFAULT

非空约束  NOT NULL

外键约束 FOREIGN KEY

 

 

第二范式

第二范式是在率先范式的根基上确立起来的,即满意2NF必须先满意1NF
只出现在复合主键的数据库表中
第二范式须求数据库表中的每种实例或然行必须能够被独一地分别,所以实体必须安装主键,而且实体的习性必须完全依附于主键,不得出现非主键属性部分重视于主键的图景。

主键为学号+课程名称,而学分信赖于学号,那就是所谓的非主键属性注重于主键的状态,那是不适合2NF的,出现了数码的冗余(存款和储蓄多余的数量,浪费空间),解决办法正是拆成3张表。

#实业的完整性

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

CHECK约束的要害功用是限制输入到一列或多列中的大概值,进而确定保证SQL
Server数据库中数量的域完整性。举个例子,能够在建设构造用户选用库时,强制用户的密码在十一个人以上。各样标允许创建三个CHECK约束。在CHECK约束中得以满含搜索条件,但无法包罗子查询。

6)selsct * from <表名>\G   
                   #查看表数据(展现内容清晰)不用加 ;

3.数据完整性分类

域完整性

实体完整性

自定义完整性

援用完整性

 

常用数据类型

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

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

    外键约束:  foreing     key

     分清主次关系  外键注重主键    先有主键  再有外键

      语法   

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

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

某个刚刚初步接触SQL
Server编制程序的才能爱好者平常会有如此的疑云,为何非要在多少个表里面构建主键?其实答案是很鲜明的,确立主键不只能够确定保障表内数据的完整性,并且在为表创建主键的同一时候,Microsoft
SQL Server能够透过为主键创立独一索引强制数据的独一性。

12)drop table <表名>;
                              #删除表

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

 

 

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

#域完整性

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

在数据库关系图中右击将涵盖约束的表,然后从快捷菜单中选用”属性”命令。

3.RDBMS 术语
数据库:       数据库是有些关联表的会集。.
数据表:      
表是数额的矩阵。在八个数据库中的表看起来像五个简易的石英手表格。
列:              一列(数据成分) 包蕴了长期以来的数码,
比如邮编的数码。
行:           
一行(=元组,或记录)是一组有关的数量,举个例子一条用户订阅的数目。

 

索引

接纳索引大大加快查询的速度
对数据量大的,平日利用的表才去成立索引(须求爱戴的)
询问的时候与正规的等同

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

该约束应用于表中的非主键列,UNIQUE约束保证一列也许多列的课题完整性,确定保障这么些猎不会输入重复的值。比如,表中UserName列为主键,不过里面还包蕴居民身份证号码列,由于具有身份ID号码不容许现身重复,所以能够在此列上确立UNIQUE约束,确定保证不会输入重复的居民身份证号码。

5)selsct * from <表名>;   
                    #查看表数据

 

目录

图片 1

SQL
Server联机丛书中指明:“对表进行安排有八个重大步骤:标志列的有效值和规定怎么样强制列中的数据完整性。”

2.福特ExplorerDBMS即关周到据库管理系列(Relational Database Management
System)的特点:

  1).数据以表格的样式出现
  2).每行为种种记录名称
  3).每列为记录名称所对应的数据域
  4).非常多的行和列组成一张表单
  5).若干的表单组成database

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

键的定义

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

事例表达:
职员和工人(身份ID号、姓名、年龄、性别)若是姓名也是独一的超键:身份ID号、姓名、姓名+年龄、姓名+性别、居民身份证号+年龄、身份ID号+性别候选键:身份ID号、姓名

举例说,大家运用上边的讲话在TB_CHECK_CONSTRAINT表中新参预一列ZIP_CODE及其对应的CHECK约束:

23)alter table <表名> drop sex;
                          #从student表删除sex字段

范式一:保险数据库之中表每一列的原子性{如若 某一列 出生地的从头到尾的经过:浙江-夏洛特-衡山县 ,这种数据已然背离了  第一范式,此时应当设计多张表    }

语法的施行各类

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;
    

用户定义完整性

14)select * from <表名> limit 3 offset 2;   
                   #从第多少个开端询问范围(limit)3个

1.数据库设计三大范式

体贴入妙微信民众号获取更加的多相关能源

图片 2

Android小先生

实体完整性

8)create database <数据库名>;    
              #始建数据库

6.T-SQL组成

多表联合查询

从没点名连接条件的多表查询将招致笛Carl积的结果
笛Carl积结果:七个表中具备数据的集聚都会询问出来

图片 3

笛Carl积

域完整性

13)drop database <数据库名>;
                          #删除数据库

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

单行函数

  • 用以操作数据项
  • 还行参数并赶回二个值
  • 对每一个再次来到行起功效,每一行重返二个结实
  • 可采用转变函数修改数据类型
  • 可使用嵌套格局
  • 周围的单行函数富含字符、数字、日期管理函数、类型调换函数、逻辑管理函数等

内容

7)grant all on *.* to ‘username’@’localhost’ identified by ‘passwd’;
      #  成立用户以及安装权限 all是赋予具备权力

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

数据库设计的完整性约束

在数据库管理连串中,保障数据库中的数据完整性是格外关键的。所谓数据完整性,正是指存款和储蓄在数据库中多少的一致性和不利。约束定义关于列中允许值的条条框框,是强制完整性的正式编写制定。使用约束优先于采纳触发器、准则和默许值。查询优化器也应用约束定义生成高性能的查询实行安顿。

24)alter table <表名> modify sex <字段类型> not
null;                
#修改字段sex不可能为空,在改造前sex字段必须不能够是空的

 

 

死锁

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

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]’)

21)select coalesce(name,’总年龄’) ,sum(age) from <表名> group by
name with
rollup;#总结同样名字的年纪总和并依据name分组,在最后一行展现全部总的数量,coalesce功能是命名

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

select kc.mc "种类",kc.s1-(select sum(s1) from ck where ck.mc = kc.mc ) "剩余量" from KC;
  当主表中没有关联的记录时,将记录添加到相关表中。
  更改主表中的值并导致相关表中的记录孤立。
  从主表中删除记录,但仍存在与该记录匹配的相关记录。

11)create database <数据库名> charset utf8;   
                #开创数据库并设置character为utf-8

2.数额的特色:正确,可信赖,完整

子查询

  • 子查询在主查询的前三回试行
  • 主查询使用子查询的结果
  • 子查询要用括号括起来
  • 将子查询放在比较运算符的动手
  • 子查询中不要加O路虎极光DE奥迪Q3 BY子句

动用场景:比方那个雇员的工资Billing志玲的高?

选拔UNIQUE约束的经过中,还索要注意,假诺要对允许空值的列强制独一性。能够允许空值的列附加UNIQUE约束,而只可以将主键的约束附加到不容许空值的列。但UNIQUE约束不容许表中受束缚列有一行以上的值同时为空。

17)delete from <表名> where id>4;
                        #删去id>4的兼具数据

 

相关子查询

图片 5

FOREIGN
KEY约束为表中的一列可能多列数据提供数据完整性参照。平时是与P凯雷德IMA奥德赛Y
KEY约束照旧UNIQUE约束同一时候利用的。

mysql命令大全

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

视图

能够遮盖一些音信
虚构的表(不真正存在,基表的多寡删除时,视图中的数据也会去除)
能够举行增加和删除改查(对视图表中的数据变动时,基表的数额也会转移)
若果视图中能看到的,基表中必定能见到

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

从”选定的目录”列表中挑选独一约束。

16)update <表名> set name=’海上’,age=34 where id=5;  
            #修改id为5的name和age为’海上’、’34’

DCL数据调控语言【revoke  grant】

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

同一,对于一列的UNIQUE约束,我们称为列级UNIQUE约束,对于多列的UNIQUE约束,大家誉为表级UNIQUE约束。上面给出列级UNIQUE约束的定义格式:

10)show create database <数据库名>;
                     #查看数据库的character

oracle有如下类型的束缚:

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

  实体完整性
  域完整性
  引用完整性
  用户定义完整性

冗余:   
存款和储蓄两倍数量,冗余可以使系统速度越来越快。(表的标准化水平越高,表与表之间的涉及就越来越多;查询时或然时时索要在几个表之间举行连接查询;而开始展览连接操作会减少查询速度。比如,学生的新闻存款和储蓄在student表中,院系消息囤积在department表中。通过student表中的dept_id字段与department表建构关系关系。如若要询问一个上学的小孩子所在系的名称,必须从student表中找找学生所在院系的编号(dept_id),然后依据这么些编号去department查找系的称谓。假如平时要求实行这一个操作时,连接查询会浪费广大的岁月。由此可以在student表中加进多少个冗余字段dept_name,该字段用来积攒学生所在院系的名称。这样就无须每一次都进展延续操作了。)

多表联合检查

购进数量超过一个的产品名,顾客名以及购置的数目(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;
    

用户定义完整性使您能够定义不属于其余任何完整性分类的特定业务准绳。全数的完整性类型都协理用户定义完整性。

15)select * from <表名> where register_date like
‘2018-04%’;            #查找register_date为2018-04的全部数据