2022-06-16

1.三范式 : 行业标准

      最终的目的避免数据重复冗余,1NF-->列不可再分最小原子 (避免重复);2NF-->主键依赖(确

     定唯一);3NF-->消除传递依赖(建立主外键关联

拆分表);

表与表之间的关系:

           1)一对一关系: 用户表   身份证表  -->主外键关联关系

           2)一对多|多对一: 班级表  学生表    部门表与员工表  -->主外键关联关系

              --在多的一方设置外键字段关联一的一方的主键字段

           3)多对多: 订单与商品  -->中间表

2,--创建表+ 添加约束

     --默认约束名(表结构中,字段后面直接添加约束,默认约束名)  -->简单,不够灵活,报错提示不直观

 create tablestudent (

          --主键

         sidnumber(5) primary key,

          --非空

         snamevarchar2(5 char) not null,

         --性别  男或女

         genderchar(1 char) check(gender in ('男','女')),

         --入学日期  默认值sysdate

         hiredatedate default(sysdate),

         --手机号  唯一

         phone varchar2(11) unique,

         --所在班级编号  --外键

         cidnumber(5)

      );

(1)--字段后面指定约束名

       create tablestudent (

          --主键

         sidnumber(5) constraint pk_stu_id primary key,

          --非空

         snamevarchar2(5 char) constraint nn_student_name not null,

         --性别  男或女

         genderchar(1 char) constraint check_student_gender check(gender in ('男','女')),

         --入学日期  默认值sysdate

         hiredatedate default(sysdate),

         --手机号  唯一

         phonevarchar2(11) unique,

         --所在班级编号  --挖减

         cidnumber(5)

      );

(2)--表结构结束之前为某一个字段指定约束名添加约束

      create tablestudent (

          --主键

         sidnumber(5),

          --非空

         snamevarchar2(5 char),

         --性别  男或女

         genderchar(1 char) constraint check_student_gender check(gender in ('男','女')),

         --入学日期  默认值sysdate

         hiredatedate default(sysdate),

         --手机号  唯一

         phonevarchar2(11) unique,

         --所在班级编号  --挖减

         cidnumber(5),

         --为当前表中的字段添加约束

         constraintpk_stu_id primary key(sid),

         constraintnn_student_name check(sname is not null)

      );

(3),先创建表+ 追加约束   

      --为已有的表中的字段追加约束

       alter tableyjx_class add constraint pk_class_id primary key (cid);

(4),--默认约束名

         --cidnumber(5) references yjx_class(cid)

         --指定约束名1)直接在字段后指定约束名添加外键约束

         --cidnumber(5) constraint fk_stu_cid references yjx_class(cid)

         --指定约束名2)先声明字段,然后表结构结束之前为外键字段添加外键约束

         cidnumber(5)

        --constraint fk_stu_cid foreign key(cid) references yjx_class(cid)

      --指定约束名3) 表结构之间之后追加外键约束

      alter tablestudent add constraint fk_stu_cid foreign key(cid) references yjx_class(cid) ;

3,--加入注释

comment on table yjx_class is '班级表';

4,

--约束

       --物理约束: 真实在表字段上添加的约束

       --逻辑约束: 在代码上进行判断

--拷贝已有的表结构

--值拷贝结构不拷贝数据  <不能拷贝约束>

--create table 表名 as select字段列表from 已有表where 1!=1;

--拷贝结构同时拷贝数据

--create table 表名 as select字段列表from 已有表 where 条件;

5,

--删除表

--drop table 表名(cascadeconstraints)

--主外键关联关系下的两张表:

               --从表|子表   直接删除

               droptable student;

               --主表: 不能直接删除

                   --1)先删除所有的从表,再删除主表

                   --2)删除主表的同时级联删除主外键约束

                    drop table yjx_class cascadeconstraints;

                    drop table tb_user;

6,

--修改表结构

--修改表名

rename student to yjx_student;

7,--插入数据

insert into student(sid,sname,cid) 字段列表values(9001,'张三',207);

8,--约束的禁用与启用

ALTER TABLE yjx_class disable constraint pk_class_id;

ALTER TABLE yjx_class enable constraint pk_class_id;

--s删除约束

alter table yjx_class drop constraint pk_class_idcascade;

9,DML

拷贝

--以下两种可以实现在已有的表中拷贝数据插入新的表中 (一条|多条)

--insert into 表名 select 查询列from 源表 where 过滤数据;

--insert into 表(指定列)

select 查询列 from 源表 where 过滤数据;

10,

--update 表名 set 字段=值[,....] where 过滤行记录;

--30部门所有员工的薪资+1000

-update 表名 set (字段列表)

=(select 字段列表 from 源表 where 过滤源表记录) where 更新记录的条件手动更改字段值:

11,

--删除delete

--delete [from] 表名 where 过滤行记录

--删除表中所有的数据

delete from houhou_emp;

--删除表中的部门数据

delete from houhou_emp where sal<1500;

--删除主外键关联关系下的主从表中的数据   班级表  学生表

       --从表数据: 可以直接删除

       delete fromemp where empno = 9090;

       --主表中的数据:

                --删除的是主表中没有被从表引用的主表数据,可以直接删除

               delete from yjx_class where cid =207;

                --删除的是被从表引用的数据 : 不能直接删除,三种解决方案

                   --1)先删除所有从表中引用了当前要删除的主表数据的那些从表数据,然后再删除当前主表数据

                   --2)删除主表中数据的同时,级联删除从表中所引用了当前主表数据的那些从表数据 --> 在设置及外键约束的时候,  on delete cascade

                   --3)删除主表中数据的同时,从表中所引用了当前主表数据的那些从表数据外键字段设置为null -->在设置及外键约束的时候,  on delete setnull

              delete from student where cid = 207;

              delete from yjx_class where cid = 207;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容

  • SQL分类根据SQL指令完成的数据库操作的不同,可以将SQL指令分为四类:* DDL Data Definitio...
    小铁和小钢阅读 628评论 0 0
  • 多表查询 笛卡尔积 虚拟表 s_emp s_dept 上述两个表所有的列在虚拟表都会出现, 引用那些列 原始表.列...
    冰川_阅读 453评论 0 0
  • 利用控制台命令连接 MySQL 启动 MySQL 服务net start 查看已经启动的服务net start ...
    梦想旅行家Jirry阅读 339评论 0 0
  • title: "Oracle创建表空间和表"date: 2021-02-01T20:17:20+08:00draf...
    大地缸阅读 231评论 0 0
  • Oracle笔记系列这几篇是来自一位老师的笔记,分享给大家放在简书上,主要方便自己时常复习,还有学习Oracle的...
    panda_Hi阅读 569评论 0 0