• Oracle第五课(学习笔记)


    连接查询

    JUL12_CLASS     JUL12_STUDENT

    SELECT CNAME,SNMAE
    FROM JUL12_CLASS C,JUL12_STUDENT S
    WHERE C.CID = S.CID;

    SELECT CNAME,SNAME
    FROM JUL12_CLASS C
    JOIN JUL12_STUDENT S ON C.CID= S.CID;
    用JOIN 和 ON 连接
    左外连接
    SELECT CNAME,SNAME
    FROM JUL12_CLASS C
    LEFT JOIN JUL12_STUDENT S ON C.CID = S.CID;
    右外连接
    SELECT CNAME,SNAME
    FROM JUL12_STUDENT S
    RIGHT JOIN JUL12_CLASS C ON C.CID = S.CID;
    **************************************************


    CREATE TABLE JUL12_S_EMP
    AS
    SELECT * FROM S_EMP;

    SELECT ID ,USERID ,DEPT_ID ,SALARY FROM JUL12_S_EMP;
    --找出大于所在部门平均工资的于员工
    SELECT ID ,USERID ,DEPT_ID ,SALARY
    FROM JUL12_S_EMP A,
    (
    SELECT DEPT_ID D,AVG(SALARY) S FROM JUL12_S_EMP
    GROUP BY DEPT_ID
    ) D
    WHERE A.DEPT_ID = D.D AND A.SALARY > D.S
    ORDER BY A.ID ;

    SELECT ID ,USERID ,SALARY
    FROM JUL12_S_EMP A
    WHERE SALARY >
    (
        SELECT AVG(SALARY)
        FROM JUL12_S_EMP B
        WHERE A.DEPT_ID = B.DEPT_ID
    )
    ORDER BY A.ID ;

    SELECT ID ,SALARY FROM JUL12_S_EMP A,
    (SELECT DEPT_ID, AVG(SALARY) AVGS
    FROM JUL12_S_EMP GROUP BY DEPT_ID
    ==================================================
    登录mysql,,,,
    转到bin目录下面执行mysql -u root -p password;
    没有密码的就这么写:mysql -u root ;

    show database;
    CREATE DATABASE MYDB;
    mysql> use mydb;
    mysql> create table student(
        id int (4),
        name char(10),
        age int (4),
        address varchar(20)
        );
    mysql> insert into STUDENT values
    (1001,'zhang',23,'jiangsu);
    mysql> insert into STUDENT values
    (1002,'xiexie',23,'zhejiang');
    mysql> insert into STUDENT values
    (1003,'aaaa',33,'asdfds');
    mysql> insert into STUDENT values
    (1004,'sdsd',44,'sdfsdeee');
    mysql> insert into STUDENT values
    (1005,'sss',32,'wwwssssss');
    mysql> insert into STUDENT values
    (1006,'zhao',33,'zhonglu');
    mysql> insert into STUDENT values
    (1007,'xie',33,'kehong');
    mysql> insert into STUDENT values
    (1008,'good',23,'keqi');
    //发现表名 要区分大小写
    select * from STUDENT  limit 3 --前三行数据
    select * from STUDENT limit 2 OFFSET 3--第四行还是两行数据
    SELECT first_name || ' ' || last_name FROM s_emp  
    where id in (select manager_id from s_emp group by manager_id having count(*) >1);

    union联合查询.前后查询内容相加
    若有重复则只显示一次,,,若要全部显示则可以使用union all
    select 8 from jul12_student where age >12;
    union
    select * from jul12_student where age <12 and age >10;

    intersect此方式为交集 ,即为两个查询的相同的部分进行显示出来
    select * from jul12_student where age >12
    intersect
    select * from jul12_student where age>12 and age <32;

    minus此方式也可以当作分页,但是效率最低
    此例子的目的在于极少minus的用法,就是用第一个查询出的结果,减去第二个查询出来的结果.如下显示的就是第三个第四条记录.
    select * from jul12_student where rownum <=5
    minus
    select * from jul12_student where rownum <=3;

    ************************Objectives*************
    Add and modify columns;添加和修改列
    删除表 drop table [tablename]
    DDL 数据定义语言,不可ROOLBACK

    ----ADD COLUMN
    ALTER TABLE JUL12_STUDENT
    ADD ABC CHAR(10);
    ----DELETE COLUMN
    ALTER TABLE JUL12_STUDENT
    DROP COLUMN ABC;
    ----MODIFY
    ALTER TABLE JUL12_STUDENT MODIFY AGE VARCHAR(10);

    对表的约束的修改
    alter table jul12_student
    add not null (name)

    外键的约束
    sql> alter table s_emp
    add constraint s_emp_manager_id_fk
    foreign key (manager_id)
    references s_emp(id);
    关闭约束
    sql> alter table
    disable constraint
    开启约束
    sql>alter table
    enable constraint
    更改表名
    rename tablename to newtablename
    删除表内全部记录
    sql>truncate table s_item;
    于delete的区别就是不可以ROOLBACK
    事务完成后输入
    commit;执行


    总结Oracle数据库

    oracle:
        openlabe open123

    window:

    1.启动和关闭oracle相关的服务;
        1:oracle startup shutdown
        启动和关闭 listener
        1:isnrctl
    2.
    openlabe /open 123
                
    $sqlplus/nolog
    $connect/as sysdba;
    -=-=-=-=-=-=-=-=-=-=-=-=
    oracle中创建用户
    create user abc(用户名) identified by efg(新密码);
    例:
    create user tarena01 identified by tarena01
    给用户授权
    grant connect ,resource to tarena01两个权限
    收回权限
    revoke connect from tarena01(管理员权限登录)
    删除一个用户
    drop user abc
    -=-=-=-=-=-=-=-=-=-=-=-=
    mysql 2:操作用户

    mysql> show databases;(注意databases我为复数)

    杀看用户(user表中存放了用户信息)
    mysql> use mysql;
    mysql> select user from user;
    mysql> select password from user where user ='root';

    mysql 2:
        grant all on mydb.* to 'aa' identified by 'bb';
    给用户授权
        grant all on mydb.* to 'aaa' identified by 'bbb';
        修改密码的条件
        1.进入mysql    
        mysql> use mysql    进入数据库
        mysql> select user,password from user; 查看表内数据
        mysql> update user set password =password('ef')wehre user = 'aa'; 利用update更新数据 更新password
        mysql> select user,password from user;

        alter user 'aa' identified by open234;
        
        flush privileges提交
        
        mysql> GRANT USAGE ON *.* TO aa IDENTIFIED BY 'lrock'
    二 :sql
    1.create table person(
        a int(3) primary key,
        b varchar(10),
        c datetime
    );
    insert into person values (1,'aa',now());
    insert into person values (2,'bb',now());
    insert into person values (3,'cc',now());
    insert into person values (4,'dd',now());

    2:
        select insert delete update;
    性能分析的依据

    oracle: set autotrace on
        set timing on
    mysql: explain p312 16.3
    多表查询:
    推荐是哟你连接查询

    in(exists)
    1:
    rownum  limit offset
    2:
    求每个年龄段的人数 group by age/10
    3:
    删除表里重复的记录
    rowid具有唯一性质,标识硬盘数据存储的位置 min max ...
    4:
    取出表中随机的三条记录
    dbms_random.random
    5:
    取出工资大于本部门平均工资的人.
  • 相关阅读:
    火狐获取图片宽和高的方法
    JDBC连接本地sqlserver2005的方法
    war文件不在tomcat 的webapps运行
    javascript 去除空格 方法
    火狐显示图片的方法
    八款开源Android游戏引擎
    android 模拟器 hardWare 属性说明
    jqgrid 属性说明
    Java命名规范
    在MyEclipse里怎样一次性取消所有断点
  • 原文地址:https://www.cnblogs.com/itgmhujia/p/1265401.html
Copyright © 2020-2023  润新知