一、 数据库中的表A(NAME char(10)  ,GRADE  int )中有如下内容:         NAME  GRADE
AAAA 80
BBBB 60
CCCC 70        表B(Name  char(10), age int) 中有如下内容:
NAME AGE
AAAA 26
BBBB 24
CCCC 26
DDDD 261、写一SQL语句,得到下面的查询结果:
NAME        GRADE              AGE
AAAA         80              26
BBBB         60              24
CCCC         70              26
DDDD           NULL             26
2、A表和B表关联,根据NAME用A表的GRADE值更新B表的AGE字段,运行后
B表的内容为
AAAA 60
BBBB 80
CCCC 86
DDDD 24
3、往A表中插入一条数据 (LMC,’30’)。其中’30’是字符型的数据,要求写出SQL语句

解决方案 »

  1.   

    1 select b.name,nvl(a.grade,'') grade,b.age from b left join a on b.name = a.name;
    2好像是数据不对
    3直接插入就行,隐行转换
      

  2.   

    1.
    SQL>   
      1  select b.name,a.grade,b.age
      2  from b left outer join a
      3* on a.name=b.name
    SQL> /NAME                      GRADE        AGE
    -------------------- ---------- ----------
    AAAA                         80         26
    BBBB                         60         24
    CCCC                         70         26
    DDDD                                    262.SQL> update b set b.age=(select a.grade from a where a.name=b.name);
    3.insert into a values('LMC','30');
    已创建 1 行。SQL> select * from a;NAME                      GRADE
    -------------------- ----------
    AAAA                         80
    BBBB                         60
    CCCC                         70
    LMC                          30
      

  3.   


    --第一题
    SELECT B.NAME,NVL(A.GRADE,'NULL'),B.AGE FROM B LEFT JOIN A ON B.NAME=A.NAME 
    --第二题
    UPDATE B
    SET B.AGE=(SELECT A.GRADE FROM A WHERE A.NAME=B.NAME)
    --第三题
    INSERT INTO A VALUES('LMC','30')
      

  4.   

    第一题:
    select  B.NAME,A.GRADE,B.AGE
    from A,B
    WHERE A.NAME(+)= B.NAME;
    第二题:
    update b
       set age = (select nvl(t.GRADE,age) from (select B.NAME, A.GRADE, B.AGE
                                    from A, B
                                   WHERE A.NAME(+) = B.NAME) t
                   where t.name = b.name)