Bài thực hành Oracle (4 tuần) - Tunghuynh_bai1

-- ------------------- STUDENT: Tùng Huynh

-- ------------------- CLASS:    K7A

-- ------------------- Lesson 1.

-- Đăng nhập và SYS hoặc SYSTEM (Session -> New session)

-- 1.

-- Tạo một user với tên là: Tên máy + Tên Sinh viên. VD: may01Nga

create user may12tunghuynh IDENTIFIED by 123456;

-- 2.   

-- Grant quyền connect cho user trên

grant CONNECT to may12tunghuynh;

-- 3.   

-- Grant quyền create table cho user trên

grant create table to may12tunghuynh;

-- 4.   

-- Grant quyền tạo view cho user tren

grant create view to may12tunghuynh;

-- 5.   

-- Grant quyền tạo sequence

grant create SEQUENCE to may12tunghuynh;

-- 6.   

-- Thay đổi mật khẩu của user trên

alter user may12tunghuynh IDENTIFIED by tunghuynh;

-- 7.   

-- Lock user trên.

alter user may12tunghuynh account lock;

-- Đăng nhập vào user này để kiểm tra user đã bị lock hay chưa

--  Session -> New session

--  Dang nhap theo ten

-- 8.   

-- Unlock user trên

alter user may12tunghuynh account unlock;

-- Grant quyền resource:

grant RESOURCE to may12tunghuynh;

-- 9.

-- Đăng nhập vào user trên

-- Session -> New Session

-- Đăng nhập

-- 10. (Sau khi đã đăng nhập vào user mình tạo)

-- Tạo các bảng có cấu trúc

-- 10.1 Tạo bảng tb_lop:

create table tb_lop(

    id NUMBER,

    tenlop VARCHAR2(100),

    id_gvien_cn NUMBER)

-- 10.2 Tạo bảng tb_sinhvien:

create table tb_sinhvien(

    id NUMBER,

    id_lop NUMBER,

    tensinhvien VARCHAR2(200),

    ngaysinh date,

    noisinh VARCHAR2(500),

    diemthi float)

-- 10.3 Tạo bảng tb_gvien_cn:

create table tb_gvien_cn(

    id NUMBER,

    tengvien VARCHAR2(200) )

-- 11.   

-- Tạo khóa chính trên trường ID cho mỗi bảng trên.

-- Qui tắc đặt tên PK_[Tên bảng]. VD: PK_ TB_LOP

-- Tạo khóa chính cho bảng tb_lop

alter table tb_lop

add constraint pk_tb_lop PRIMARY key (id)

-- Tạo khóa chính cho bảng tb_sinhvien:

alter table tb_sinhvien

add constraint pk_tb_sinhvien primary key (id)

-- Tạo khóa chính cho bảng tb_gvien_cn:

alter table tb_gvien_cn

add constraint pk_tb_gvien_cn PRIMARY key (id)

-- 12.   

-- Tạo khóa ngoại cho bảng TB_LOP trên trường ID_GVIEN_CN tham chiếu đến trường ID của bảng TB_GVIEN_CN.

-- Qui tắc đặt tên FK_[Tên bảng].

alter table tb_lop

add constraint fk_lop_gvien FOREIGN key (id_gvien_cn) references tb_gvien_cn (id)

-- 13.   

-- Tạo ba sequence cho ba bảng trên.

-- Mỗi sequence bắt đầu là 1, mỗi lần tăng 1, giá trị nhỏ nhất là 1.

-- Qui tắc đặt tên: SEQ_[Tên bảng]

-- SEQUENCE: biến tự động tăng giá trị cho trường nào đó

-- (không cần nhập tay), thường là cho trường khóa chính - vd: các trường ID

-- Phải tạo 3 sequence riêng cho từng bảng để giá trị tăng riêng biệt

-- Tạo Sequence cho bảng tb_lop

create SEQUENCE seq_tb_lop

    START with 1            -- Bắt đầu từ 1

    INCREMENT by 1            -- Mỗi lần tăng 1 đơn vị

    MINVALUE 1                -- Giá trị nhỏ nhất

    MAXVALUE 1000            -- Giá trị lớn nhất

    NOCYCLE                    -- Không quay vòng (khi đạt maxvalue)

    NOORDER                    --

    CACHE 20                -- Tạo sẵn 20 vị trí hỗ trợ insert nhanh hơn

-- VD: Đã nhập được 18 dòng thì hệ thống tự động tạo sẵn 20 vị trí tiếp theo -> 38

-- Tạo Sequence cho bảng tb_sinhvien

create SEQUENCE seq_tb_sinhvien

    START with 1

    INCREMENT by 1

    MINVALUE 1

    MAXVALUE 9999999

    NOCYCLE

    NOORDER

    CACHE 20

-- Tạo Sequence cho bảng gvien_cn

create SEQUENCE seq_gvien_cn

    START with 1

    INCREMENT by 1

    MINVALUE 1

    MAXVALUE 1000

    NOCYCLE

    NOORDER

    CACHE 20

-- 14.   

-- Insert dữ liệu vào bảng TB_GVIEN_CN:

INSERT into tb_gvien_cn VALUES (seq_gvien_cn.nextval,'Nguyen Van An');

INSERT into tb_gvien_cn VALUES (seq_gvien_cn.nextval,'Bui Ngoc Nam');

INSERT into tb_gvien_cn VALUES (seq_gvien_cn.nextval,'Le Bich Hong');

INSERT into tb_gvien_cn VALUES (seq_gvien_cn.nextval,'Pham Van Quan');

INSERT into tb_gvien_cn VALUES (seq_gvien_cn.nextval,'Nguoi new');

select * from tb_gvien_cn;

-- 15.   

-- Insert dữ liệu vào bảng TB_LOP

-- Lưu ý: Cột ID sẽ lấy dữ liêu từ seq tương ứng.

-- Cột ID_GVIEN_CN sẽ lấy dữ liệu sao cho

    -- Nguyen Van An là giáo viên chủ nhiệm của lớp CTO706L,

    -- Bui Ngoc Nam là giáo viên chủ nhiệm của lớp CTO707L,

    -- Bui Ngoc Nam là giáo viên chủ nhiệm của lớp CTO708L,

    -- Pham Van Quan là giáo viên chủ nhiệm của lớp CTO709L.

INSERT into tb_lop VALUES (seq_tb_lop.nextval,'CTO706L','1');

INSERT into tb_lop VALUES (seq_tb_lop.nextval,'CTO707L','2');

INSERT into tb_lop VALUES (seq_tb_lop.nextval,'CTO708L','3');

INSERT into tb_lop VALUES (seq_tb_lop.nextval,'CTO709L','4');

select * from tb_lop;

-- 16.   

-- Insert dữ liệu vào bảng TB_SINHVIEN

-- Lưu ý: Cốt ID sẽ lấy dữ liệu từ seq tương ứng.

-- Cột ID_LOP sẽ lấy dữ liệu sao cho tất cả sinh viên trong bảng đều thuộc lớp CTO707L.

INSERT into tb_sinhvien VALUES (seq_tb_sinhvien.nextval,'2','Le Hong Anh',to_date('11/03/1988','dd/mm/yyyy'),'Thai Nguyen',7.5);

INSERT into tb_sinhvien VALUES (seq_tb_sinhvien.nextval,'2','Nguyen Manh Hai',to_date('03/04/1988','dd/mm/yyyy'),'Phu Tho',9);

INSERT into tb_sinhvien VALUES (seq_tb_sinhvien.nextval,'2','Dao Duy Anh',to_date('25/01/1989','dd/mm/yyyy'),'Nghe An',5);

INSERT into tb_sinhvien VALUES (seq_tb_sinhvien.nextval,'2','Vuong Viet An',to_date('06/08/1987','dd/mm/yyyy'),'Tuyen Quang',4);

INSERT into tb_sinhvien VALUES (seq_tb_sinhvien.nextval,'2','Hoang Hai',to_date('17/09/1988','dd/mm/yyyy'),'Ha Noi',null);

INSERT into tb_sinhvien VALUES (seq_tb_sinhvien.nextval,'2','Le Uyen',to_date('22/06/1988','dd/mm/yyyy'),'Bac Ninh',null);

delete tb_sinhvien;

select * from tb_sinhvien;

-- 17.   

-- In ra danh sách sinh viên có điểm thi đạt, không đạt, chưa thi (>=5 đạt)

print 'Sinh vien chua thi:'

select * from tb_sinhvien

where diemthi is null

print 'Sinh vien khong dat:'

select * from tb_sinhvien

where diemthi<5

print 'Sinh vien dat:'

select * from tb_sinhvien

where diemthi>=5

-- 18.   

-- In ra danh sách giáo viên không chủ nhiệm lớp nào

SELECT * from tb_gvien_cn

where  id not in (select id_gvien_cn from tb_lop)

-- 19.   

-- Tạo một view tên là v_sinhvien có chứa các trường TENSINHVIEN, TENLOP, TENGVIEN_CN

create view v_sinhvien

as

    select tensinhvien,tenlop,tengvien

    from tb_lop, tb_gvien_cn, tb_sinhvien

    where tb_lop.id_gvien_cn=tb_gvien_cn.id

        and tb_sinhvien.id_lop=tb_lop.id

-- 20.

-- Đăng nhập vào user HR

-- Session -> New Session

-- Username: HR

-- Pass: 123456 (default)

    -- Nếu pass sai hoặc không vào được thì đăng nhập vào SYSTEM/123456

    -- Đổi pass HR:

    -- alter user HR IDENTIFIED by 123456;

        -- Nếu HR đang bị khóa (account locked) thì phải mở khóa HR

        -- alter user may11tunghuynh account lock;

Bạn đang đọc truyện trên: AzTruyen.Top