Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

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: Truyen247.Pro