2017-02-16 笔试

一、理论题
    1.SQL功能强大,但是概括起来,它可分成三组。
       请分别写上所知道的命令或语句
       DML 
         1.INSERT
       语法:
       INSERT INTO
       table_name[ (column_name1[ ,column_name2]...) ]
        VALUES(express1[,express2]...)


       电信的语句的工作应用   
         创建预算单位  ,需要复制一套2013年
       Insert Into cbudgetorg  Select * From cbudgetorg_2013ini;
        --插入新数据
       INSERT INTO   CSUBJECT_REPAIR SELECT * FROM LEI_CSUBJECT_REPAIR;  ---修理类关系表          
       INSERT INTO cnettype SELECT * FROM LEI_cnettype;                 ---修理类网络类型             
       INSERT INTO cspectype SELECT * FROM LEI_cspectype;                   --修理类专业属性         
       INSERT INTO CSUBJECT_SALE SELECT * FROM LEI_CSUBJECT_SALE;         --销售类型关系表                        
       INSERT INTO cmaterialuse SELECT * FROM LEI_cmaterialuse;                  --领料用途TYPE=1(修理),=2 (综合)               
       INSERT INTO CMATERIALTYPE SELECT * FROM LEI_CMATERIALTYPE;                      ---领料类别           
       INSERT INTO CSUBJECT_other SELECT * FROM LEI_CSUBJECT_other;                     --综合类关系表           
       INSERT INTO CSALETYPE_A SELECT * FROM LEI_CSALETYPE_A;    --终端类型A
       INSERT INTO CSALETYPE_B SELECT * FROM LEI_CSALETYPE_B;  --终端类型B
       2.UPDATE
       语法: 
       UPDATE table_name
        SET
      {
      column_name1=express1
      [ column_name2 = express2 ... ]
      |
      (column_name1 [,column_name2...]) 
      =(selectSubquery)
      }
      [ WHERE condition ]



update table_name 
set
column_name1=express1  [ column_name2=express2 ... ]
|
(column_name1[.column_name2...])=(selectSubquery)
[WHERE condition ]






        --更新serviceurl至正式表
update cserviceconfig t1 set t1.serviceurl=(
select t2.serviceurl from MID_GJ_cserviceconfig t2 where t2.servicecode=t1.servicecode
) where exists(
select 1 from MID_GJ_cserviceconfig t3 where t3.servicecode=t1.servicecode
);

       3.DELETE --删除表中的数据 但表还在
      电信的语句的工作应用  
        delete from CSUBJECT_REPAIR;;
       delete from cnettype;
       delete from cspectype;
       delete from CSUBJECT_SALE;
      delete from cmaterialuse;
      delete from CMATERIALTYPE;
      delete from CSUBJECT_other;
     delete from CSALETYPE_A;
     delete from CSALETYPE_B;
       4.TRUNCATE --删除表中所有的数据,但表还在
    
       5.CALL
     电信的语句的工作应用 
     重新编译失效目标数据库用户下失效的对象
     CALL  PROC_RECOMPILE_OBJECTS
       6.LOCKTABLE

       7.MERGE
 
       
       
       DDL
      create table 
      alter table
      drop table

       DCL
       DCL(Data Control Language)是数据库控制语言。是用来设置或更改 数据库用户 或角色权限的语句,包括(grant,deny, revoke 等)语句
     2.什么是数据完整性?它分几种 类型
存储 在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失 数据 完整性。
数据完整性分为四类: 实体完整性 (Entity Integrity)、 域完整性 (Domain Integrity)、 参照完整性 (Referential Integrity)、 用户自定义完整性 (User-definedIntegrity)。

二、判断题:
     1.下边删除视图的语句是否正确
         Drop  view from Pub_v_Division  
          Drop  view Pub_v_Division   V
     2.DROP TABLE t1语句与DELETE FROM t1 的作用是相同 X
        不相同
     3.如果更新了一个已经创建视图的表,那么视图必须进行同样的更新才行 X
       视图依附在表上,表变视图自然会变
        
     4.下边的CREATE语句是否正确   X
        Create View Credit_debts as (Select all from debts Where Account_id=4)

     5.在使用HAVING字句时,要同时使用GROUP BY字句  V
三、选择题
    1.下列SQL语句不正确的是
    A.SELECT 
       au_name,title 
       FROM authours,titles,titlers.au.id=titleauthor.au_id 
       AND
       titles.tiltle_id=titleauthor
    2.请写出下语句的错误所在,并给出正确写法
       INSERT INTO TABLE COLLECTION SELECT FROM TABLE_2
    3.下面的语句有什么 错误,请给出正确写法
      UPDATE TABLE("HONUS WAGNER CARD",25000,"FOUND IT")
    
4.下面这个存储过程实现什么功能 
     SET QUOTED_IDENTIFIER OFF
     GO
     SET ANSI_NULLS ON
     GO
    CREATE PROCEDURE sp_exec_35to41
    @database varchar(60),@bz varchar(5)
    AS 
    begin
    declare 
    @sqlstring varchar(2000)
   alter table Acc_t_AcctItem disable trigger all
  delete from Acct_t_Acctltem
  set @sqlstring='insert into Acct_t_AcctItem SELECT
  AcctCode,AcctName,BalanceDir,Memoric,AuxDept,AuxEnterprise,AuxPerson,
  AuxProject,EndFlag,AcctTypeID,Status,Breviary,TaxTypeID,AcctLvIID,SuperID,
 null,EndFlag,EndFlag,EndFlag,EndFlag
 from '+@database+'.dbo.Acct_t_Acctltem'
 exec(@sqlstring)
 alter table Acct_t_Acctltem enable trigger all
 return
 end
 GO
 SET QUOTED_IDENTIFIFER OFF
 GO
 SET ANSI_NULLS ON
 GO


5.编写存储过程
因为system模式(账号)不能创建触发器,所以用scott/999来测试


查询存储过程的内容
SELECT  text
     FROM  user_source
    WHERE  NAME  'Procedure Name'
ORDER  BY  line; --其中Procedure Name为存储过程名字,需要全部用大写英文。






######################################
HHHHHHHHHHHHHHHHHHHHHH
connect scott/999
create procedure pro_20170301 is
begin
--01.创建tb_部门表并插入数据
create table tb_部门(
DeptID varchar2 (4), 
DeptName varchar2(12)
);
insert into tb_部门  (DeptID,DeptName) values ('01','需求组');
insert into tb_部门  (DeptID,DeptName) values ('02','开发组');
insert into tb_部门  (DeptID,DeptName) values ('03','测试组');
--02.创建tb_职员表并插入数据
create table tb_职员
(
PersonID varchar2(3),
PersonName varchar(8),
DeptID varchar2(4)
);
insert into tb_职员(PersonID,PersonName,DeptID) values ('101','小张','01');
insert into tb_职员(PersonID,PersonName,DeptID) values ('102','小李','02');
insert into tb_职员(PersonID,PersonName,DeptID) values ('103','小王','03');
insert into tb_职员(PersonID,PersonName,DeptID) values ('104','老林','04');
--03.创建tb_考勤表
create table tb_考勤
(
Sno number(10), 
PersonID varchar2(3),
Cio number check(Cio in (1,0)),
Cdate date,
Ctime date
);
--创建序列 s_Sequence
CREATE SEQUENCE s_Sequence
 INCREMENT BY 1   -- 每次加几个  
 START WITH 1     -- 从1开始计数  
  NOMAXVALUE       -- 不设置最大值  
 NOCYCLE    
-- 一直累加,不循环
 
   
--创建触发器 --20170222 2311 做到这里,sys (sysdba)不能创建触发器,要用其他用户测试,删除前面的表,序列,再做一次。
CREATE TRIGGER s_increase BEFORE
insert ON tb_考勤 FOR EACH ROW
begin
select s_SEQUENCE.nextval into:New.Sno from dual;
end s_increase;
commit;
end  pro_20170301 ;
/
TTTTTTTTTTTT
######################################################

create procedure pro_test is
begin
--01.创建tb_部门表并插入数据
create table tb_部门(
DeptID varchar2 (4), 
DeptName varchar2(12)
);
--ok
insert into tb_部门  (DeptID,DeptName) values ('01','需求组');
insert into tb_部门  (DeptID,DeptName) values ('02','开发组');
insert into tb_部门  (DeptID,DeptName) values ('03','测试组');
commit;
end  pro_test ;
/

猜你喜欢

转载自blog.csdn.net/seraph999/article/details/80427197