CREATE DATABASE QLBH
USE QLBH
CREATE DATABASE QLHV
USE QLHV
USE QLBH
CREATE TABLE KHACHHANG(
MAKH char(4) NOT NULL,
HOTEN varchar(40) NOT NULL,
DIACHI varchar(50) NOT NULL,
SODT varchar(20) NOT NULL,
NGSINH smalldatetime NOT NULL,
NGDK smalldatetime NOT NULL,
DOANHSO money NOT NULL,
CONSTRAINT PK_MAKH PRIMARY KEY(MAKH)
);
CREATE TABLE NHANVIEN(
MANV char(4) NOT NULL,
HOTEN VARCHAR(40) NOT NULL,
SODT VARCHAR(20) NOT NULL,
NGVL SMALLDATETIME NOT NULL,
CONSTRAINT PK_MANV PRIMARY KEY(MANV)
);
CREATE TABLE SANPHAM(
MASP CHAR(4) NOT NULL,
TENSP VARCHAR(40) NOT NULL,
DVT VARCHAR(20) NOT NULL,
NUOCSX VARCHAR(40) NOT NULL,
GIA MONEY NOT NULL,
CONSTRAINT PK_SP PRIMARY KEY(MASP)
);
CREATE TABLE HOADON(
SOHD INT NOT NULL,
NGHD SMALLDATETIME NOT NULL,
MAKH CHAR(4) NOT NULL,
MANV CHAR(4) NOT NULL,
TRIGIA MONEY NOT NULL,
CONSTRAINT PK_HD PRIMARY KEY(SOHD),
CONSTRAINT FK_HD_KH FOREIGN KEY (MAKH) REFERENCES KHACHHANG(MAKH),
CONSTRAINT FK_HD_NV FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV)
);
CREATE TABLE CTHD(
SOHD INT NOT NULL,
MASP CHAR(4) NOT NULL,
SL INT NOT NULL,
CONSTRAINT PK_CTHD PRIMARY KEY(SOHD, MASP),
CONSTRAINT FK_CTHD_HD FOREIGN KEY (SOHD) REFERENCES HOADON(SOHD),
CONSTRAINT FK_CTHD_SP FOREIGN KEY (MASP) REFERENCES SANPHAM(MASP)
);
USE QLHV
CREATE TABLE KHOA(
MAKHOA VARCHAR(4) NOT NULL,
TENKHOA VARCHAR(40) NOT NULL,
NGTLAP SMALLDATETIME NOT NULL,
TRGKHOA CHAR(4) NOT NULL,
CONSTRAINT PK_MK PRIMARY KEY (MAKHOA)
);
ALTER TABLE KHOA
ALTER COLUMN TRGKHOA CHAR(4) NULL
ALTER TABLE KHOA
ADD CONSTRAINT FK_KHOA_GV FOREIGN KEY (TRGKHOA) REFERENCES GIAOVIEN(MAGV);
CREATE TABLE MONHOC(
MAMH VARCHAR(10) NOT NULL,
TENMH VARCHAR(40)NOT NULL,
TCLT TINYINT NOT NULL,
TCTH TINYINT NOT NULL,
MAKHOA VARCHAR(4),
CONSTRAINT FK_MH_KHOA FOREIGN KEY (MAKHOA) REFERENCES KHOA(MAKHOA)
);
ALTER TABLE MONHOC
ADD CONSTRAINT PK_MAMH PRIMARY KEY (MAMH)
ALTER TABLE MONHOC
ALTER COLUMN MAKHOA VARCHAR(4) NOT NULL
CREATE TABLE DIEUKIEN (
MAMH VARCHAR(10) NOT NULL,
MAMH_TRUOC VARCHAR(10) NOT NULL,
CONSTRAINT PK_DK PRIMARY KEY (MAMH, MAMH_TRUOC),
CONSTRAINT FK_DK_MAMH FOREIGN KEY (MAMH) REFERENCES MONHOC(MAMH),
CONSTRAINT FK_DK_MMHTRUOC FOREIGN KEY (MAMH_TRUOC) REFERENCES MONHOC(MAMH)
);
CREATE TABLE GIAOVIEN(
MAGV CHAR(4) NOT NULL,
HOTEN VARCHAR(40) NOT NULL,
HOCVI VARCHAR(10) NOT NULL,
HOCHAM VARCHAR(10) NOT NULL,
GIOITINH VARCHAR(3) NOT NULL,
NGSINH SMALLDATETIME NOT NULL,
NGVL SMALLDATETIME NOT NULL,
HESO NUMERIC(4,2) NOT NULL,
MUCLUONG MONEY NOT NULL,
MAKHOA VARCHAR(4) NOT NULL,
CONSTRAINT PK_MAGV PRIMARY KEY (MAGV),
CONSTRAINT FK_GV_KHOA FOREIGN KEY (MAKHOA) REFERENCES KHOA(MAKHOA)
);
ALTER TABLE GIAOVIEN
ALTER COLUMN HOCHAM VARCHAR(10) NULL
CREATE TABLE LOP(
MALOP CHAR(3) NOT NULL,
TENLOP VARCHAR(40) NOT NULL,
TRGLOP CHAR(5) NOT NULL,
SISO TINYINT NOT NULL,
MAGVCN CHAR(4) NOT NULL,
CONSTRAINT PK_ML PRIMARY KEY (MALOP),
CONSTRAINT FK_LOP_GV FOREIGN KEY (MAGVCN) REFERENCES GIAOVIEN(MAGV),
);
ALTER TABLE LOP
ADD CONSTRAINT FK_HV_LOP FOREIGN KEY (TRGLOP) REFERENCES HOCVIEN(MAHV)
CREATE TABLE HOCVIEN(
MAHV CHAR(5) NOT NULL,
HO VARCHAR(40) NOT NULL,
TEN VARCHAR(10),
NGSINH SMALLDATETIME NOT NULL,
GIOITINH VARCHAR(3) NOT NULL,
NOISINH VARCHAR(40) NOT NULL,
MALOP CHAR(3) NOT NULL,
CONSTRAINT PK_MAHV PRIMARY KEY (MAHV),
CONSTRAINT FK_LOP_HV FOREIGN KEY (MALOP) REFERENCES LOP(MALOP)
);
CREATE TABLE GIANGDAY(
MALOP CHAR(3) NOT NULL,
MAMH VARCHAR(10) NOT NULL,
MAGV CHAR(4) NOT NULL,
HOCKY TINYINT NOT NULL,
NAM SMALLINT NOT NULL,
TUNGAY SMALLDATETIME NOT NULL,
DENNGAY SMALLDATETIME NOT NULL,
CONSTRAINT PK_MLOP_MAMH PRIMARY KEY (MALOP,MAMH),
CONSTRAINT FK_GD_GV FOREIGN KEY (MAGV) REFERENCES GIAOVIEN (MAGV),
CONSTRAINT FK_GD_LOP FOREIGN KEY (MALOP) REFERENCES LOP (MALOP),
CONSTRAINT FK_GD_MONHOC FOREIGN KEY (MAMH) REFERENCES MONHOC(MAMH)
);
CREATE TABLE KETQUATHI(
MAHV char(5) NOT NULL,
MAMH varchar(10) NOT NULL,
LANTHI tinyint NOT NULL,
NGTHI smalldatetime NOT NULL,
DIEM numeric(4,2) NOT NULL,
KQUA varchar(10) NOT NULL,
CONSTRAINT PK_MAHV_MAMH PRIMARY KEY (MAHV,MAMH,LANTHI),
CONSTRAINT FK_KQ_HV FOREIGN KEY (MAHV) REFERENCES HOCVIEN(MAHV),
CONSTRAINT FK_KQ_MH FOREIGN KEY (MAMH) REFERENCES MONHOC(MAMH)
);
USE QLBH
ALTER TABLE SANPHAM
ADD GHICHU VARCHAR(20) NOT NULL
ALTER TABLE KHACHHANG
ADD LOAIKH TINYINT NOT NULL
ALTER TABLE SANPHAM
ALTER COLUMN GHICHU VARCHAR(100)
ALTER TABLE SANPHAM
DROP COLUMN GHICHU
ALTER TABLE KHACHHANG
ADD CONSTRAINT LOAIKH CHECK (LOAIKH IN('Vang lai','Thuong xuyen','Vip'));
ALTER TABLE SANPHAM
ADD CONSTRAINT DVT CHECK (DVT IN('cay','hop','cai','quyen','chuc'));
ALTER TABLE SANPHAM
ADD CONSTRAINT GIA CHECK (GIA >= 500);
ALTER TABLE CTHD
ADD CONSTRAINT SL CHECK (SL >= 1);
ALTER TABLE KHACHHANG
ADD CONSTRAINT NGDK CHECK (NGDK > NGSINH);
USE QLHV
ALTER TABLE HOCVIEN
ADD GHICHU VARCHAR(20) NOT NULL
ALTER TABLE HOCVIEN
ADD DIEMTB float, XEPLOAI tinyint
ALTER TABLE HOCVIEN
DROP COLUMN DIEMTB, XEPLOAI
ALTER TABLE HOCVIEN
ADD DIEMTB FLOAT NOT NULL, XEPLOAI TINYINT NOT NULL
ALTER TABLE HOCVIEN
ADD CONSTRAINT CK_GIOITINH_HOCVIEN CHECK (GIOITINH IN ('Nam', 'Nu'));
ALTER TABLE GIAOVIEN
ADD CONSTRAINT CK_GIOITINH_GIAOVIEN CHECK (GIOITINH IN ('Nam', 'Nu'));
SELECT * FROM HOCVIEN WHERE GIOITINH NOT IN ('Nam', 'Nu');
SELECT * FROM GIAOVIEN WHERE GIOITINH NOT IN ('Nam', 'Nu');
UPDATE HOCVIEN SET GIOITINH = 'Nam' WHERE GIOITINH NOT IN ('Nam', 'Nu');
UPDATE GIAOVIEN SET GIOITINH = 'Nu' WHERE GIOITINH NOT IN ('Nam', 'Nu');
ALTER TABLE KETQUATHI
ALTER COLUMN DIEM NUMERIC(4,2) NOT NULL;
ALTER TABLE KETQUATHI
ADD CONSTRAINT DIEM CHECK (DIEM >= 0 AND DIEM <= 10);
UPDATE KETQUATHI
SET KQUA = CASE
WHEN DIEM >= 5 THEN 'Dat'
ELSE 'Khong dat'
END;
ALTER TABLE KETQUATHI
ADD CONSTRAINT LANTHI CHECK (LANTHI BETWEEN 1 AND 3)
ALTER TABLE GIANGDAY
ADD CONSTRAINT HOCKY CHECK (HOCKY BETWEEN 1 AND 3)
ALTER TABLE GIAOVIEN
ADD CONSTRAINT HOCVI CHECK (HOCVI IN('CN', 'KS', 'Ths', 'TS', 'PTS'));
ALTER TABLE KHOA
ADD CONSTRAINT TRGKHOA CHECK (TRGKHOA IN('TS', 'PTS'));