PDA

View Full Version : Cách tạo khóa phụ của bài 2???


Dung_c7ct4
05-11-2008, 12:40 AM
ai bít cách tạo foreign key bài tập 2 gồm 24 câu chỉ dum ḿnh với thanks nhiều nha.

linhnguyenit
05-11-2008, 12:51 AM
đưa đề lên, th́ mọi người mới giải được chứ em......
Tạo foreign key ( khóa ngoại) th́ có thể tạo trực tiếp trong table
exp:

CREATE TABLE LIMIT_US
(
ID_LM INT PRIMARY KEY NOT NULL,
GROUP NVARCHAR(15) NOT NULL
)

GO

CREATE TABLE USER
(
ID INT PRIMARY KEY NOT NULL,
PWD NCHAR(8) NOT NULL,
ID_LM INT NOT NULL,
CONSTRAINT FK_USER FOREIGN KEY(ID_LM) REFERENCES LIMIT_US(ID_LM)
)


KHÔNG TH̀ TẠO MỘT BẢNG USER KHÁC NHƯ SAU:

CREATE TABLE USER
(
ID INT PRIMARY KEY NOT NULL,
PWD NCHAR(8) NOT NULL,
ID_LM INT NOT NULL

)

GO

ALTERT TABLE USER
ADD CONSTRAINT FK_USER FOREIGN KEY(ID_LM) REFERENCES LIMIT_US(ID_LM)

hoangthienthach
05-11-2008, 01:52 AM
CREATE DATABASE QLNV_223
GO
USE QLNV_223
GO
set dateformat dmy

CREATE TABLE NHANVIEN (
HONV NVARCHAR(20) NOT NULL,
TENLOT NVARCHAR(10) NOT NULL,
TENNV NVARCHAR(10) NOT NULL,
MANV CHAR(9) NOT NULL,
NGAYSINH DATETIME,
DCHI NVARCHAR(60) NOT NULL,
PHAI CHAR(4) NOT NULL,
LUONG INT NULL,
MA_NQL CHAR(9) NOT NULL,
PHOG TINYINT NULL,
CONSTRAINT PK_NHANVIEN PRIMARY KEY (MANV)
)
GO
SELECT *
FROM NHANVIEN
CREATE TABLE PHONGBAN (
TENPHOG VARCHAR(15) NOT NULL,
MAPH TINYINT NULL,
TRPHG CHAR(9) NOT NULL,
NG_NHANCHUC DATETIME,
--CONSTRAINT PK_PHONGBAN PRIMARY KEY (MAPH)
)
GO
SELECT *
FROM PHONGBAN
CREATE TABLE DIADIEMPHG (
MAPHG TINYINT NULL,
DIADIEM CHAR(15) NULL,
--CONSTRAINT PK_DIADIEMPHG PRIMARY KEY (DIADIEM)
)
GO
SELECT *
FROM DIADIEMPHG

CREATE TABLE DEAN(
TENDE VARCHAR(15) NOT NULL,
MADA TINYINT NULL,
DDIEM_DA VARCHAR(10) NOT NULL,
PHONG TINYINT NULL,
--CONSTRAINT PK_DE PRIMARY KEY (MADA,DDIEM_DA)
)
GO

CREATE TABLE PHANCONG (
MA_NVIEN CHAR(9) NOT NULL,
SODA TINYINT NULL,
THOIGIAN FLOAT NULL,
--CONSTRAINT PK_PHANCONG PRIMARY KEY (MA_NVIEN,SODA)
)
GO

CREATE TABLE THANNHAN (
MA_NVIEN CHAR(9) NOT NULL,
TENTN VARCHAR(8) NOT NULL,
NGAYSINH DATETIME,
QUANHE VARCHAR(15) NOT NULL,
PHAI CHAR(4) NOT NULL
CONSTRAINT PK_THANNHAN PRIMARY KEY (MA_NVIEN,QUANHE)

)
GO
đó là tạo bảng
--Tao rang buot cuoi
alter table nhanvien
add constraint kn_nhanvienphg
foreign key (phg)
references phongban (maphg)

alter table nhanvien
add constraint kn_nhanvienmphg
foreign key (ma_nql)
references nhanvien (manv)

Hok biết đúng không

khigiadano
05-11-2008, 08:19 PM
Mời các cụ lớn xơi
Phần tạo bảng và nhập dữ liệu của bài tập 2 đây

create table NHAN_VIEN
(
HONV nvarchar(20),
TENLOT nvarchar(20),
TENNV nvarchar(20),
MANV char(10) not null,
NGSINH DateTime,
DCHI nvarchar(50),
PHAI nvarchar(3),
LUONG int,
MA_NQL char(10),
PHG SmallInt,
constraint PK_NHAN_VIEN primary key (MANV)
)
create table PHONG_BAN
(
TENPHG nvarchar(10),
MAPH SmallInt not null,
TRPHG char(10),
NG_NHANCHUC DateTime,
constraint PK_PHONG_BAN primary key (MAPH)
)
create table DIADIEM_PHG
(
MAPHG SmallInt not null,
DIADIEM nvarchar(10) not null,
constraint PK_DIADIEM_PHG primary key (MAPHG,DIADIEM)
)
create table THAN_NHAN
(
MA_NVIEN char(10) not null,
TENTN char(10) not null,
PHAI nvarchar(3),
NGSINH DateTime,
QUANHE char(10),
constraint PK_THAN_NHAN primary key (MA_NVIEN,TENTN)
)
create table DEAN
(
TENDA char(20),
MADA SmallInt not null,
DDIEM_DA nvarchar(10),
PHONG SmallInt,
constraint PK_DEAN primary key (MADA)
)
create table PHAN_CONG
(
MA_NVIEN char(10) not null,
SODA SmallInt not null,
THOIGIAN Decimal,
constraint PK_PHAN_CONG primary key (MA_NVIEN,SODA)
)
insert into NHAN_VIEN values(N'Đinh',N'Bá',N'Tiến','123456789',09/01/1955,N'731 Trần Hưng Đạo, Q1, TPHCM','Nam',30000,'333445555',5)
insert into NHAN_VIEN values(N'Nguyễn',N'Thanh',N'Tùng','333445555',08/12/1945,N'638 Nguyễn Văn Cừ, Q5, TPHCM','Nam',40000,'888665555',5)
insert into NHAN_VIEN values(N'Bùi',N'Thúy',N'Vũ','999887777',19/07/1958,N'332 Nguyễn Thái Học, Q1, TPHCM','Nam',25000,'987654321',4)
insert into NHAN_VIEN values(N'Lê',N'Thị',N'Nhàn','987654321',20/06/1931,N'291 Hồ Văn Huê, QPN, TPHCM',N'Nữ',43000,'888665555',4)
insert into NHAN_VIEN values(N'Nguyễn',N'Mạnh',N'Hùng','666884444',15/09/1952,N'975 Bà Rịa, Vũng Tàu','Nam',38000,'333445555',5)
insert into NHAN_VIEN values(N'Trần',N'Thanh',N'Tâm','453453453',31/07/1962,N'543 Mai Thị Lựu, Q1, TPHCM','Nam',25000,'333445555',5)
insert into NHAN_VIEN values(N'Trần',N'Hồng',N'Quân','987987987',29/03/1959,N'980 Lê Hồng Phong, Q10, TPHCM','Nam',25000,'987654321',4)
insert into NHAN_VIEN values(N'Vương',N'Ngọc',N'Quyên','888665555',10/10/1927,N'450 Trưng Vương, HaNoi',N'Nữ',55000,NULL,1)

insert into PHONG_BAN values(N'Nghiên Cứu',5,'333445555',22/05/1978)
insert into PHONG_BAN values(N'Điều Hành',4,'987987987',01/01/1985)
insert into PHONG_BAN values(N'Quản Lư',1,'888665555',19/06/1971)

insert into DIADIEM_PHG values(1,'TP HCM')
insert into DIADIEM_PHG values(4,'HA NOI')
insert into DIADIEM_PHG values(5,'VUNG TAU')
insert into DIADIEM_PHG values(5,'NHA TRANG')
insert into DIADIEM_PHG values(5,'TP HCM')

insert into THAN_NHAN values(333445555,'Quang',N'Nữ',05/04/1976,'Con gai')
insert into THAN_NHAN values(333445555,'Khang','Nam',25/10/1973,'Con trai')
insert into THAN_NHAN values(333445555,'Duong',N'Nữ',03/05/1948,'Vo chong')
insert into THAN_NHAN values(987654321,'Dang','Nam',29/02/1932,'Vo chong')
insert into THAN_NHAN values(123456789,'Duy','Nam',01/01/1978,'Con trai')
insert into THAN_NHAN values(123456789,'Chau',N'Nữ',31/12/1978,'Con gai')
insert into THAN_NHAN values(123456789,'Phuong',N'Nữ',05/05/1957,'Vo chong')

insert into DEAN values('San pham X',1,'VUNG TAU',5)
insert into DEAN values('San pham Y',2,'NHA TRANG',5)
insert into DEAN values('San pham Z',3,'TP HCM',5)
insert into DEAN values('Tin hoc hoa',10,'HA NOI',4)
insert into DEAN values('Cap quang',20,'TP HCM',1)
insert into DEAN values('Dao tao',30,'HA NOI',4)

insert into PHAN_CONG values(123456789,1,32.5)
insert into PHAN_CONG values(123456789,2,7.5)
insert into PHAN_CONG values(666884444,3,40.0)
insert into PHAN_CONG values(453453453,1,20.0)
insert into PHAN_CONG values(453453453,2,20.0)
insert into PHAN_CONG values(333445555,3,10.0)
insert into PHAN_CONG values(333445555,10,10.0)
insert into PHAN_CONG values(333445555,20,10.0)
insert into PHAN_CONG values(999887777,30,30.0)
insert into PHAN_CONG values(999887777,10,10.0)
insert into PHAN_CONG values(987987987,10,35.0)
insert into PHAN_CONG values(987987987,30,5.0)
insert into PHAN_CONG values(987654321,30,20.0)
insert into PHAN_CONG values(987654321,20,15.0)
insert into PHAN_CONG values(888665555,20,NULL)


alter table NHAN_VIEN add constraint FK_PHG foreign key(PHG) references PHONG_BAN(MAPH)
alter table NHAN_VIEN add constraint FK_MA_NQL foreign key(MA_NQL) references NHAN_VIEN(MANV)
alter table PHONG_BAN add constraint FK_TRPHG foreign key(TRPHG) references NHAN_VIEN(MANV)
alter table DIADIEM_PHG add constraint FK_MAPHG foreign key(MAPHG) references PHONG_BAN(MAPH)
alter table DEAN add constraint FK_PHONG foreign key(PHONG) references PHONG_BAN(MAPH)
alter table PHAN_CONG add constraint FK_MA_NVIEN foreign key(MA_NVIEN) references NHAN_VIEN(MANV)
alter table PHAN_CONG add constraint FK_SODA foreign key(SODA) references DEAN(MADA)
alter table THAN_NHAN add constraint FK_MA_NVIEN_X foreign key(MA_NVIEN) references NHAN_VIEN(MANV)

bentlayy
12-11-2008, 06:59 PM
nhớ nhanh dùm nha
ah xem dùm bài ḿnh coi đúng hok nha
CREATE DATABASE QLNV_222222
USE QLNV_222222
SET DATEFORMAT DMY
---TAO BANG NHANVIEN---
CREATE TABLE NHANVIEN
(
HONV VARCHAR(6) NULL,
TENLOT VARCHAR(5) NULL,
TENNV VARCHAR(5) NULL,
MANV CHAR(9) NOT NULL,
NGSINH DATETIME NULL,
DCHI VARCHAR(30) NULL,
PHAI VARCHAR(3) NULL,
LUONG INT NULL,
MA_NQL CHAR(9) NULL,
PHG INT NULL,
CONSTRAINT PK_NV_MANV PRIMARY KEY(MANV)
)
---BANG PHONG BAN---
CREATE TABLE PHONG_BAN
(
TENPHG VARCHAR(10) NULL,
MAPH INT NOT NULL,
TRPHG CHAR(9) NOT NULL,
NG_NHANCHUC DATETIME NULL,
CONSTRAINT PK_PB_MAPH PRIMARY KEY(MAPH)
)
---BANG DIA DIEM---
CREATE TABLE DIADIEM_PHG
(
MAPHG INT NOT NULL,
DIADIEM VARCHAR(9) NOT NULL,
CONSTRAINT PK_DD_MAPHG PRIMARY KEY(MAPHG,DIADIEM)
)
---BANG THAN_NHAN---
CREATE TABLE THAN_NHAN
(
MA_NVIEN CHAR(9) NOT NULL,
TENTN VARCHAR(6) NOT NULL,
PHAI VARCHAR(3) NULL,
NGSINH DATETIME NULL,
QUANHE VARCHAR(8) NULL,
CONSTRAINT PK_TN_MA_NVIEN PRIMARY KEY(MA_NVIEN,TENTN)
)
---BANG PHAN_CONG---
CREATE TABLE PHAN_CONG
(
MA_NVIEN CHAR(9) NOT NULL,
SODA INT NOT NULL,
THOIGIAN DECIMAL NULL,
CONSTRAINT PK_PC_MA_NVIEN PRIMARY KEY(MA_NVIEN,SODA)
)
---BANG DEAN---
CREATE TABLE DEAN
(
TENDA VARCHAR(11) NULL,
MADA INT NOT NULL,
DDIEM_DA VARCHAR(9) NULL,
PHONG INT NULL,
CONSTRAINT PK_DA_MADA PRIMARY KEY(MADA)
)
---THEM CAC KHOA NGOAI---
ALTER TABLE NHANVIEN ADD CONSTRAINT FK_NV_MA_NQL FOREIGN KEY(MA_NQL) REFERENCES NHANVIEN(MANV)
ALTER TABLE NHANVIEN ADD CONSTRAINT FK_NV_PHG FOREIGN KEY(PHG) REFERENCES PHONG_BAN(MAPH)
ALTER TABLE PHONG_BAN ADD CONSTRAINT FK_PB_TRPHG FOREIGN KEY(TRPHG) REFERENCES NHANVIEN(MANV)
ALTER TABLE DIADIEM_PHG ADD CONSTRAINT FK_DD_MAPHG FOREIGN KEY(MAPHG) REFERENCES PHONG_BAN(MAPH)
ALTER TABLE THAN_NHAN ADD CONSTRAINT FK_TN_MA_NVIEN FOREIGN KEY(MA_NVIEN) REFERENCES NHANVIEN(MANV)
ALTER TABLE PHAN_CONG ADD CONSTRAINT FK_PC_MA_NVIEN FOREIGN KEY(MA_NVIEN) REFERENCES NHANVIEN(MANV)
ALTER TABLE PHAN_CONG ADD CONSTRAINT FK_PC_SODA FOREIGN KEY(SODA) REFERENCES DEAN(MADA)
ALTER TABLE DEAN ADD CONSTRAINT FK_DA_PHONG FOREIGN KEY(PHONG) REFERENCES PHONG_BAN(MAPH)
---CHEN DU LIEU VAO CAC BANG---
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('DINH','BA','TIEN',123456789,'09/01/1955','731 TRAN HUNG DAO,Q1,TPHCM','NAM',30000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('NGUYEN','THANH','TUNG',333445555,'08/12/1945','638 NGUYEN VAN CU,Q5,TPHCM','NAM',40000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('BUI','THUY','VU',999887777,'19/07/1958','332 NGUYEN THAI HOC,Q1,TPHCM','NAM',25000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('LE','THI','NHAN',987654321,'20/06/1931','291 HO VAN HEU,QPN,TPHCM','NU',43000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('NGUYEN','MANH','HUNG',666884444,'15/09/1952','975 BA RIA,VUNG TAU','NAM',38000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('TRAN','THANH','TAM',453453453,'31/07/1962','543 MAI THI LUU,Q1,TPHCM','NAM',25000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('TRAN','HONG','QUAN',987987987,'29/03/1959','980 LE HONG PHONG,Q10,TPHCM','NAM',25000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('VUONG','NGOC','QUYEN',888665555,'10/10/1927','450 TRUNG VUONG,HA NOI','NU',55000)
---NHAP DU LIEU BANG PHONG BAN---
INSERT INTO PHONG_BAN VALUES('NGHIEN CUU',5,333445555,'22/05/1978')
INSERT INTO PHONG_BAN VALUES('DIEU HANH',4,987987987,'01/01/1985')
INSERT INTO PHONG_BAN VALUES('QUAN LY',1,888665555,'19/06/1971')
SELECT*FROM PHONG_BAN
---DU LIEU BANG NHANVIEN---
UPDATE NHANVIEN SET MA_NQL='333445555',PHG=5 WHERE MANV='123456789'
UPDATE NHANVIEN SET MA_NQL='888665555',PHG=5 WHERE MANV='333445555'
UPDATE NHANVIEN SET MA_NQL='987654321',PHG=4 WHERE MANV='999887777'
UPDATE NHANVIEN SET MA_NQL='888665555',PHG=4 WHERE MANV='987654321'
UPDATE NHANVIEN SET MA_NQL='333445555',PHG=5 WHERE MANV='666884444'
UPDATE NHANVIEN SET MA_NQL='333445555',PHG=5 WHERE MANV='453453453'
UPDATE NHANVIEN SET MA_NQL='987654321',PHG=4 WHERE MANV='987987987'
SELECT*FROM NHANVIEN
---DULIEU BANG DIADIEM---
INSERT INTO DIADIEM_PHG VALUES(1,'TP HCM')
INSERT INTO DIADIEM_PHG VALUES(4,'HA NOI')
INSERT INTO DIADIEM_PHG VALUES(5,'VUNG TAU')
INSERT INTO DIADIEM_PHG VALUES(5,'NHA TRANG')
INSERT INTO DIADIEM_PHG VALUES(5,'TP HCM')
SELECT*FROM DIADIEM_PHG
---DU LIEU BANG THAN_NHAN---
INSERT INTO THAN_NHAN VALUES(333445555,'QUANG','NU','05/05/1976','CON GAI')
INSERT INTO THAN_NHAN VALUES(333445555,'KHANG','NAM','25/10/1973','CON TRAI')
INSERT INTO THAN_NHAN VALUES(333445555,'DUONG','NU','03/05/1948','VO CHONG')
INSERT INTO THAN_NHAN VALUES(987654321,'DANG','NAM','29/02/1932','VO CHONG')
INSERT INTO THAN_NHAN VALUES(123456789,'DUY','NAM','01/01/1978','CON TRAI')
INSERT INTO THAN_NHAN VALUES(123456789,'CHAU','NU','31/12/1978','CON GAI')
INSERT INTO THAN_NHAN VALUES(123456789,'PHUONG','NU','05/05/1957','VO CHONG')
SELECT*FROM THAN_NHAN
---DU LIEU BANG DEAN---
INSERT INTO DEAN VALUES('SAN PHAM X',1,'VUNG TAU',5)
INSERT INTO DEAN VALUES('SAN PHAM Y',2,'NHA TRANG',5)
INSERT INTO DEAN VALUES('SAN PHAM Z',3,'TP HCM',5)
INSERT INTO DEAN VALUES('TIN HOC HOA',10,'HA NOI',4)
INSERT INTO DEAN VALUES('CAP QUANG',20,'TP HCM',1)
INSERT INTO DEAN VALUES('DAO TAO',30,'HA NOI',4)
SELECT*FROM DEAN
---DU LIEU BANG PHAN_CONG---
INSERT INTO PHAN_CONG VALUES(123456789,1,32.5)
INSERT INTO PHAN_CONG VALUES(123456789,2,7.5)
INSERT INTO PHAN_CONG VALUES(666884444,3,40.0)
INSERT INTO PHAN_CONG VALUES(453453453,1,20.0)
INSERT INTO PHAN_CONG VALUES(453453453,2,20.0)
INSERT INTO PHAN_CONG VALUES(333445555,3,10.0)
INSERT INTO PHAN_CONG VALUES(333445555,10,10.0)
INSERT INTO PHAN_CONG VALUES(333445555,20,10.0)
INSERT INTO PHAN_CONG VALUES(999887777,30,30.0)
INSERT INTO PHAN_CONG VALUES(999887777,10,10.0)
INSERT INTO PHAN_CONG VALUES(987987987,10,35.0)
INSERT INTO PHAN_CONG VALUES(987987987,30,5.0)
INSERT INTO PHAN_CONG VALUES(987654321,30,20.0)
INSERT INTO PHAN_CONG VALUES(987654321,20,15.0)
INSERT INTO PHAN_CONG VALUES(888665555,20,NULL)
---1---
SELECT TENNV,DCHI
FROM NHANVIEN,PHONG_BAN
WHERE NHANVIEN.MA_NQL=PHONG_BAN.TRPHG
---2---
SELECT MADA,PHONG,HONV,TENNV,NGSINH
FROM NHANVIEN,DEAN,PHONG_BAN
WHERE PHONG=MAPH
AND TRPHG=MANV
AND DDIEM_DA='HA NOI'
---3---
SELECT HONV,TENNV,
FROM NHANVIEN,DEAN,PHONG_BAN
WHERE PHG=MAPH
AND MAPH=5
GROUP BY HONV,TENNV
---4---
SELECT MADA,TENDA
FROM PHAN_CONG,NHANVIEN NV,DEAN,PHONG_BAN,NHANVIEN TP
WHERE MA_NVIEN=NV.MANV
AND SODA=MADA
AND PHONG=MAPH
AND TRPHG=NV.MANV
AND (NV.HONV='DINH' OR TP.HONV='DINH')
---5---
SELECT HONV,TENNV,COUNT(*)AS [SO THAN NHAN]
FROM NHANVIEN NV,THAN_NHAN TN
WHERE NV.MANV=TN.MA_NVIEN
GROUP BY HONV,TENNV
HAVING COUNT(MANV)>=2
---6---
SELECT HONV,TENLOT,TENNV
FROM NHANVIEN,THAN_NHAN
WHERE NHANVIEN.MANV NOT IN (SELECT MA_NVIEN FROM THAN_NHAN)
GROUP BY HONV,TENLOT,TENNV
---7---
SELECT HONV,TENNV,COUNT(*)AS [SO THAN NHAN]
FROM NHANVIEN NV,THAN_NHAN TN
WHERE NV.MANV=TN.MA_NVIEN
GROUP BY HONV,TENNV
HAVING COUNT(MANV)>=1
---8---
SELECT TENNV
FROM NHANVIEN,DEAN,PHAN_CONG
WHERE MANV=MA_NVIEN
AND SODA=MADA
AND TENDA='SAN PHAM X'
AND PHG=5
AND THOIGIAN >10
---9---
SELECT TENNV
FROM NHANVIEN,THAN_NHAN
WHERE TENNV=TENTN
---10---
SELECT HONV,TENNV
FROM NHANVIEN,PHONG_BAN
WHERE TRPHG=MA_NQL
AND TRPHG=333445555
---11---
SELECT TENDA AS [TEN DE AN],SUM(THOIGIAN)AS [TONG SO GIO]
FROM DEAN,PHAN_CONG
WHERE MADA=SODA
GROUP BY TENDA

linhnguyenit
13-11-2008, 02:22 AM
nhớ nhanh dùm nha
ah xem dùm bài ḿnh coi đúng hok nha
CREATE DATABASE QLNV_222222
USE QLNV_222222
SET DATEFORMAT DMY
---TAO BANG NHANVIEN---
CREATE TABLE NHANVIEN
(
HONV VARCHAR(6) NULL,
TENLOT VARCHAR(5) NULL,
TENNV VARCHAR(5) NULL,
MANV CHAR(9) NOT NULL,
NGSINH DATETIME NULL,
DCHI VARCHAR(30) NULL,
PHAI VARCHAR(3) NULL,
LUONG INT NULL,
MA_NQL CHAR(9) NULL,
PHG INT NULL,
CONSTRAINT PK_NV_MANV PRIMARY KEY(MANV)
)
---BANG PHONG BAN---
CREATE TABLE PHONG_BAN
(
TENPHG VARCHAR(10) NULL,
MAPH INT NOT NULL,
TRPHG CHAR(9) NOT NULL,
NG_NHANCHUC DATETIME NULL,
CONSTRAINT PK_PB_MAPH PRIMARY KEY(MAPH)
)
---BANG DIA DIEM---
CREATE TABLE DIADIEM_PHG
(
MAPHG INT NOT NULL,
DIADIEM VARCHAR(9) NOT NULL,
CONSTRAINT PK_DD_MAPHG PRIMARY KEY(MAPHG,DIADIEM)
)
---BANG THAN_NHAN---
CREATE TABLE THAN_NHAN
(
MA_NVIEN CHAR(9) NOT NULL,
TENTN VARCHAR(6) NOT NULL,
PHAI VARCHAR(3) NULL,
NGSINH DATETIME NULL,
QUANHE VARCHAR(8) NULL,
CONSTRAINT PK_TN_MA_NVIEN PRIMARY KEY(MA_NVIEN,TENTN)
)
---BANG PHAN_CONG---
CREATE TABLE PHAN_CONG
(
MA_NVIEN CHAR(9) NOT NULL,
SODA INT NOT NULL,
THOIGIAN DECIMAL NULL,
CONSTRAINT PK_PC_MA_NVIEN PRIMARY KEY(MA_NVIEN,SODA)
)
---BANG DEAN---
CREATE TABLE DEAN
(
TENDA VARCHAR(11) NULL,
MADA INT NOT NULL,
DDIEM_DA VARCHAR(9) NULL,
PHONG INT NULL,
CONSTRAINT PK_DA_MADA PRIMARY KEY(MADA)
)
---THEM CAC KHOA NGOAI---
ALTER TABLE NHANVIEN ADD CONSTRAINT FK_NV_MA_NQL FOREIGN KEY(MA_NQL) REFERENCES NHANVIEN(MANV)
ALTER TABLE NHANVIEN ADD CONSTRAINT FK_NV_PHG FOREIGN KEY(PHG) REFERENCES PHONG_BAN(MAPH)
ALTER TABLE PHONG_BAN ADD CONSTRAINT FK_PB_TRPHG FOREIGN KEY(TRPHG) REFERENCES NHANVIEN(MANV)
ALTER TABLE DIADIEM_PHG ADD CONSTRAINT FK_DD_MAPHG FOREIGN KEY(MAPHG) REFERENCES PHONG_BAN(MAPH)
ALTER TABLE THAN_NHAN ADD CONSTRAINT FK_TN_MA_NVIEN FOREIGN KEY(MA_NVIEN) REFERENCES NHANVIEN(MANV)
ALTER TABLE PHAN_CONG ADD CONSTRAINT FK_PC_MA_NVIEN FOREIGN KEY(MA_NVIEN) REFERENCES NHANVIEN(MANV)
ALTER TABLE PHAN_CONG ADD CONSTRAINT FK_PC_SODA FOREIGN KEY(SODA) REFERENCES DEAN(MADA)
ALTER TABLE DEAN ADD CONSTRAINT FK_DA_PHONG FOREIGN KEY(PHONG) REFERENCES PHONG_BAN(MAPH)
---CHEN DU LIEU VAO CAC BANG---
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('DINH','BA','TIEN',123456789,'09/01/1955','731 TRAN HUNG DAO,Q1,TPHCM','NAM',30000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('NGUYEN','THANH','TUNG',333445555,'08/12/1945','638 NGUYEN VAN CU,Q5,TPHCM','NAM',40000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('BUI','THUY','VU',999887777,'19/07/1958','332 NGUYEN THAI HOC,Q1,TPHCM','NAM',25000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('LE','THI','NHAN',987654321,'20/06/1931','291 HO VAN HEU,QPN,TPHCM','NU',43000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('NGUYEN','MANH','HUNG',666884444,'15/09/1952','975 BA RIA,VUNG TAU','NAM',38000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('TRAN','THANH','TAM',453453453,'31/07/1962','543 MAI THI LUU,Q1,TPHCM','NAM',25000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('TRAN','HONG','QUAN',987987987,'29/03/1959','980 LE HONG PHONG,Q10,TPHCM','NAM',25000)
INSERT INTO NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,L UONG)
VALUES('VUONG','NGOC','QUYEN',888665555,'10/10/1927','450 TRUNG VUONG,HA NOI','NU',55000)
---NHAP DU LIEU BANG PHONG BAN---
INSERT INTO PHONG_BAN VALUES('NGHIEN CUU',5,333445555,'22/05/1978')
INSERT INTO PHONG_BAN VALUES('DIEU HANH',4,987987987,'01/01/1985')
INSERT INTO PHONG_BAN VALUES('QUAN LY',1,888665555,'19/06/1971')
SELECT*FROM PHONG_BAN
---DU LIEU BANG NHANVIEN---
UPDATE NHANVIEN SET MA_NQL='333445555',PHG=5 WHERE MANV='123456789'
UPDATE NHANVIEN SET MA_NQL='888665555',PHG=5 WHERE MANV='333445555'
UPDATE NHANVIEN SET MA_NQL='987654321',PHG=4 WHERE MANV='999887777'
UPDATE NHANVIEN SET MA_NQL='888665555',PHG=4 WHERE MANV='987654321'
UPDATE NHANVIEN SET MA_NQL='333445555',PHG=5 WHERE MANV='666884444'
UPDATE NHANVIEN SET MA_NQL='333445555',PHG=5 WHERE MANV='453453453'
UPDATE NHANVIEN SET MA_NQL='987654321',PHG=4 WHERE MANV='987987987'
SELECT*FROM NHANVIEN
---DULIEU BANG DIADIEM---
INSERT INTO DIADIEM_PHG VALUES(1,'TP HCM')
INSERT INTO DIADIEM_PHG VALUES(4,'HA NOI')
INSERT INTO DIADIEM_PHG VALUES(5,'VUNG TAU')
INSERT INTO DIADIEM_PHG VALUES(5,'NHA TRANG')
INSERT INTO DIADIEM_PHG VALUES(5,'TP HCM')
SELECT*FROM DIADIEM_PHG
---DU LIEU BANG THAN_NHAN---
INSERT INTO THAN_NHAN VALUES(333445555,'QUANG','NU','05/05/1976','CON GAI')
INSERT INTO THAN_NHAN VALUES(333445555,'KHANG','NAM','25/10/1973','CON TRAI')
INSERT INTO THAN_NHAN VALUES(333445555,'DUONG','NU','03/05/1948','VO CHONG')
INSERT INTO THAN_NHAN VALUES(987654321,'DANG','NAM','29/02/1932','VO CHONG')
INSERT INTO THAN_NHAN VALUES(123456789,'DUY','NAM','01/01/1978','CON TRAI')
INSERT INTO THAN_NHAN VALUES(123456789,'CHAU','NU','31/12/1978','CON GAI')
INSERT INTO THAN_NHAN VALUES(123456789,'PHUONG','NU','05/05/1957','VO CHONG')
SELECT*FROM THAN_NHAN
---DU LIEU BANG DEAN---
INSERT INTO DEAN VALUES('SAN PHAM X',1,'VUNG TAU',5)
INSERT INTO DEAN VALUES('SAN PHAM Y',2,'NHA TRANG',5)
INSERT INTO DEAN VALUES('SAN PHAM Z',3,'TP HCM',5)
INSERT INTO DEAN VALUES('TIN HOC HOA',10,'HA NOI',4)
INSERT INTO DEAN VALUES('CAP QUANG',20,'TP HCM',1)
INSERT INTO DEAN VALUES('DAO TAO',30,'HA NOI',4)
SELECT*FROM DEAN
---DU LIEU BANG PHAN_CONG---
INSERT INTO PHAN_CONG VALUES(123456789,1,32.5)
INSERT INTO PHAN_CONG VALUES(123456789,2,7.5)
INSERT INTO PHAN_CONG VALUES(666884444,3,40.0)
INSERT INTO PHAN_CONG VALUES(453453453,1,20.0)
INSERT INTO PHAN_CONG VALUES(453453453,2,20.0)
INSERT INTO PHAN_CONG VALUES(333445555,3,10.0)
INSERT INTO PHAN_CONG VALUES(333445555,10,10.0)
INSERT INTO PHAN_CONG VALUES(333445555,20,10.0)
INSERT INTO PHAN_CONG VALUES(999887777,30,30.0)
INSERT INTO PHAN_CONG VALUES(999887777,10,10.0)
INSERT INTO PHAN_CONG VALUES(987987987,10,35.0)
INSERT INTO PHAN_CONG VALUES(987987987,30,5.0)
INSERT INTO PHAN_CONG VALUES(987654321,30,20.0)
INSERT INTO PHAN_CONG VALUES(987654321,20,15.0)
INSERT INTO PHAN_CONG VALUES(888665555,20,NULL)
---1---
SELECT TENNV,DCHI
FROM NHANVIEN,PHONG_BAN
WHERE NHANVIEN.MA_NQL=PHONG_BAN.TRPHG
---2---
SELECT MADA,PHONG,HONV,TENNV,NGSINH
FROM NHANVIEN,DEAN,PHONG_BAN
WHERE PHONG=MAPH
AND TRPHG=MANV
AND DDIEM_DA='HA NOI'
---3---
SELECT HONV,TENNV,
FROM NHANVIEN,DEAN,PHONG_BAN
WHERE PHG=MAPH
AND MAPH=5
GROUP BY HONV,TENNV
---4---
SELECT MADA,TENDA
FROM PHAN_CONG,NHANVIEN NV,DEAN,PHONG_BAN,NHANVIEN TP
WHERE MA_NVIEN=NV.MANV
AND SODA=MADA
AND PHONG=MAPH
AND TRPHG=NV.MANV
AND (NV.HONV='DINH' OR TP.HONV='DINH')
---5---
SELECT HONV,TENNV,COUNT(*)AS [SO THAN NHAN]
FROM NHANVIEN NV,THAN_NHAN TN
WHERE NV.MANV=TN.MA_NVIEN
GROUP BY HONV,TENNV
HAVING COUNT(MANV)>=2
---6---
SELECT HONV,TENLOT,TENNV
FROM NHANVIEN,THAN_NHAN
WHERE NHANVIEN.MANV NOT IN (SELECT MA_NVIEN FROM THAN_NHAN)
GROUP BY HONV,TENLOT,TENNV
---7---
SELECT HONV,TENNV,COUNT(*)AS [SO THAN NHAN]
FROM NHANVIEN NV,THAN_NHAN TN
WHERE NV.MANV=TN.MA_NVIEN
GROUP BY HONV,TENNV
HAVING COUNT(MANV)>=1
---8---
SELECT TENNV
FROM NHANVIEN,DEAN,PHAN_CONG
WHERE MANV=MA_NVIEN
AND SODA=MADA
AND TENDA='SAN PHAM X'
AND PHG=5
AND THOIGIAN >10
---9---
SELECT TENNV
FROM NHANVIEN,THAN_NHAN
WHERE TENNV=TENTN
---10---
SELECT HONV,TENNV
FROM NHANVIEN,PHONG_BAN
WHERE TRPHG=MA_NQL
AND TRPHG=333445555
---11---
SELECT TENDA AS [TEN DE AN],SUM(THOIGIAN)AS [TONG SO GIO]
FROM DEAN,PHAN_CONG
WHERE MADA=SODA
GROUP BY TENDA
đáng nhẽ lam xong cho em rồi............
nhấn nhầm f5 refesh lại..........................hix.....chán

anh nói 1 số vấn đề để em sửa
Họ tên, địa chỉ, giới tính, địa điểm, tên danh từ bất cứ 1 trường DL nào: kiểu nvarchar
NOT NULLlà không cho phép bỏ trống khi chèn DL, bài của em, sai nhiều vấn đề này, cần xem lại
Việc tạo khóa chính nên dùng những trường không có khả năng trùng, VD khóa chính trong table ThanNhan j đó: MaNV+ CMND người thân th́ hợp lư hơn, họ tên vẫn có thể bị trùng
khi insert có thể dùng cấu trúc
INSERT INTO TEN_TABLE VALUES (...)
giá trị Ma_NQL khi chèn, nếu không chèn trực tiếp th́ để là ...,NULL,... ngay tại vị trí chèn Dl trong câu lệnh insert, v́ kiểu DL của nó là int. Đối với Kiểu DL là char, Nvarchar, Nchar, Vachar, datetime.. khi không chèn trực tiếp th́ để là ...,'',....
khi update
UPDATE NHANVIEN SET MA_NQL='333445555',PHG=5 WHERE MANV='123456789'
Là sai
kiểu int không để trong dấu nháy đơn
................và 1 số vấn để khác

bentlayy
13-11-2008, 01:27 PM
đáng nhẽ lam xong cho em rồi............
nhấn nhầm f5 refesh lại..........................hix.....chán

anh nói 1 số vấn đề để em sửa
Họ tên, địa chỉ, giới tính, địa điểm, tên danh từ bất cứ 1 trường DL nào: kiểu nvarchar
NOT NULLlà không cho phép bỏ trống khi chèn DL, bài của em, sai nhiều vấn đề này, cần xem lại
Việc tạo khóa chính nên dùng những trường không có khả năng trùng, VD khóa chính trong table ThanNhan j đó: MaNV+ CMND người thân th́ hợp lư hơn, họ tên vẫn có thể bị trùng
khi insert có thể dùng cấu trúc
INSERT INTO TEN_TABLE VALUES (...)
giá trị Ma_NQL khi chèn, nếu không chèn trực tiếp th́ để là ...,NULL,... ngay tại vị trí chèn Dl trong câu lệnh insert, v́ kiểu DL của nó là int. Đối với Kiểu DL là char, Nvarchar, Nchar, Vachar, datetime.. khi không chèn trực tiếp th́ để là ...,'',....
khi update

Là sai
kiểu int không để trong dấu nháy đơn
................và 1 số vấn để khác

:khi123: cám ơn bạn nhiều nha
Bạn có thể giúp ḿnh mấy câu c̣n lại không

Father Of Hack
13-11-2008, 01:38 PM
HONV VARCHAR(6) NULL,
TENLOT VARCHAR(5) NULL,
TENNV VARCHAR(5) NULL,
MANV CHAR(9) NOT NULL,
NGSINH DATETIME NULL,
DCHI VARCHAR(30) NULL,
PHAI VARCHAR(3) NULL,
LUONG INT NULL,
MA_NQL CHAR(9) NULL,
PHG INT NULL,
CONSTRAINT PK_NV_MANV PRIMARY KEY(MANV)



Khi nào dùng NOT NULL và khi nào dùng NULL. Dùng NOT NULL là để chèn số liệu. Ông này chưa phân biệt chỗ nào đặt NOT NULL, để NULL thà để trống có sao đâu :khi113:

linhnguyenit
13-11-2008, 02:49 PM
Khi nào dùng NOT NULL và khi nào dùng NULL. Dùng NOT NULL là để chèn số liệu. Ông này chưa phân biệt chỗ nào đặt NOT NULL, để NULL thà để trống có sao đâu :khi113:
Em sai rồi
NOT NULL: là bắt buộc khi ḿnh muốn trường DL đó không được để trống, nó là trường dữ liệu bắt buộc phải nhập khi ḿnh thêm dữ liệu
VD: table sinhvien ( MSSV, HOTEN, NTNS, SODT)
th́ cả 3 trường MSSV, HOTEN, NTNS là cần thiết, không thể thiếu đối với 1 sinh viên, nên nó sẽ là NOT NULL
C̣n trường SDT: có người có người không, cái này không bắt buộc nên có thể để NULL
Nếu em để trống, mặc định sẽ là NULL

Incubus
27-05-2009, 11:06 PM
hjhj cái SQL ń lớp ḿnh làm chưa hết bài 2, chỉ cần 1 người trong lớp làm được thế là tui nó copy sạch thế nên lớp ḿnh ngu cả đám hết oài mặc dù đă qua bài 3