zoukankan      html  css  js  c++  java
  • SQL笔记第二部分(除select外的基础)

    25-1课:
    一、(创建用户并导入数据):
    1-- backup scott(备份指定账户数据):
       exp
    2-- create user(创建用户):
       create user username(用户名) identified by code(密码) default tablespace spacename(空间名) quota 10M on spacename(空间名);
        grant create session, create table, create view to username;(授予权限)
    3-- import the date(导入数据)
       imp 
    二、insert(插入):
        1.insert into tablename(表名) values (…………)(数据);(将完整数据段插入至指定表)
        2.rollback;(撤销上一步操作)
        3.create table tablename1(复制表名) as select *(指定数据) from tablename(源表名);(将源表tablename指定数据备份至tablename1)
        4.insert into tablename(表名) (....)(指定位置) values (…………)(数据);(将数据段插入至指定表指定段)
        5.insert into tablename1(复制表名) select from tablename(源表名);(将源表tablename数据插入至tablename1,前提是表结构完全一致)




    25-2课:
    一、rownum(行号):
        1.rownum只能用 '<' 或 '<=' 连接;
        2.--薪水排名最高的5人:
    select ename,sal from
    (select ename,sal from emp order by sal desc)
    where rownum <= 5;
        3.--薪水排名第6-10人:
    select ename, sal from
    (
    select ename, sal, rownum r from
    (select ename, sal from emp)
    )
    where r >= 6 and r <= 10;




    26课:
    一、SQL COUNT(*) 语法:
        1.COUNT(*) 函数返回表中的记录数:
    SELECT COUNT(*) FROM table_name;
    二、sql having:
        1.SQL语言中设定聚集函数的查询条件时使用HAVING从句而不是WHERE从句。通常情况下,HAVING从句被放置在SQL命令的结尾处。
    三、update(更新):
        1.Update 语句用于修改表中的数据。
    语法:
    UPDATE (表名称) SET (列名称 / 旧值) (=) (新值) WHERE (筛选条件);
    四、delete(删除):
        1.DELETE 语句用于删除表中的行。
    语法
    DELETE FROM (表名称) WHERE (筛选条件);
    五、事务(Transaction):
        1.Transaction是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
        2.起始于一条DML语句,结束于rollback/commit语句以及DML/DCL语句。
        3.当结束时无法再回滚。
        3.非正常退出时自动回滚。


    27课:
        create table(建表)
        


    28-29课constraint(约束条件):
    1.默认约束:定义该列未输入值时应该具有的默认值
    SQL-------alter table 表名 add constraint dt_列名 default 默认值 for 列名


    2.空值约束:定义该列是否允许为空值(只能在字段级定义)
    SQL-------定义表的时候在对应列列数据类型后面添加not null


    3.检查约束:又叫check约束,用来限制列的取值,它根据定义的逻辑表达式来强制域的完整性
    SQL-------alter table 表名 add constraint ck_列名 check(逻辑表达式)


    4.唯一约束:确保在非主键列不输入重复值
    SQL-------alter table 表名 add constraint uq_列名 unique[clustered | nonclustered](列名)


    5.外键约束:用于建立两个表数据之间连接的一列或多列
    SQL-------alter table 表名 add constraint fk_列名 foreign key(列名) references 另一表名(列名)


    6.主键约束:用来惟一地标识表中的每一行
    SQL-------alter table 表名 add constraint pk_列名 primary key(列名)
        
    PS:
        1.null值不认为是重复;
        2.字段级约束,表级约束;
        3.外键中被参考字段必须是主键;
        4.删除被参考字段时若有参考则无法删除,即删除字段时注意是否有外键约束。




    31课:
    一、alter table(修改表结构):     
        1.非删除操作修改后的结构需容纳原数据。
        2.可使用该操作修改约束条件。
    二、drop table (删除表)




    32课:
    一、数据字典表(dictionary)




    33课:
    一、index(索引):
        1.创建索引:create index indexname (索引名) on tablename(*) (基于某表某字段)。
        2.删除索引:drop index indexname(索引名)。
        PS:
        1.分为单个索引与组合索引。
        2.加主键、唯一约束,自动创建索引。
        3.有索引效率读高改低。
        4.不要轻易建索引,会占大量空间。
        5.优化首选。
    二、view(视图/虚表):
        PS:
        1.会增加维护支出。
        2.简化查询。
        


    34课:
    一、sequence(序列数)
        1.创建序列数:create sequence sequencename(序列数名)  with(起始数) 1 increment by(每次递增数) 1 ;
        2.得到下一个数字:sequencename(序列数名).nextval;
        PS:
        1.一般下一个序列数是在上一个序列数上+1,但可设置递增大小;
        2.一般序列数是从0开始,但可设置;




    35课:
    一、三范式(设计表的原则):
        具体情况具体分析,敢于打破三范式。
        1.第一范式(确保每列保持原子性):
    求不存在冗余数据,要有主键。
    求列不可分,列不可重。
    PS:但实际设计时会存在一定冗余数据,以提高效率。
        2.第二范式(确保表中的每列都和主键相关):
    多字段作为主键,非主键的字段不能部分的依赖于主键(即必须依赖于全部的主键字段)。
    PS:解决方法是拆分成多张表。
        3.第三范式(确保每列都和主键列直接相关,而不是间接相关):
    每列都和主键列直接相关,而不是间接相关(传递依赖)。
    例如:订单表(订单编号,定购日期,顾客编号,顾客姓名,……),初看该表没有问题,满足第二范式,每列都和主键列"订单编号"相关,再细看你会发现"顾客姓名"和"顾客编号"相关,"顾客编号"和"订单编号"又相关,最后经过传递依赖,"顾客姓名"也和"订单编号"相关。为了满足第三范式,应去掉"顾客姓名"列,放入客户表中。









  • 相关阅读:
    list集合对象日期排序
    Mongodb模糊,or,and查询和日期查询
    单例模式
    代理模式
    抽象工厂模式
    java 除数运算获取两位小数
    html5 canvas 使用总结
    @MockBean 注解后 bean成员对象为 null?
    Java8 BiFunction 简单用用
    如何正确安装Ubuntu
  • 原文地址:https://www.cnblogs.com/Sherlock-J/p/12926064.html
Copyright © 2011-2022 走看看