Breaking News

Tạo database Quản Lý Sinh Viên bằng sql Server

 -- lấy thông tin cac db hệ thông

select * from sys.databases;

--kiểm tra nếu data ko có tao mới

if not exists(select name from sys.databases where name='QLSinhVien_080522')

-- TẠO MỚI DATA

create database QLSinhVien_080522;

--

go

use QLSinhVien_080522;

-- tạo bảng chuyên khoa

Create table ChuyenKhoa

(

MaKhoa varchar(10) primary key,

TenKhoa nvarchar(150)

 

);

Create table SinhVien

(

MaSV varchar(10) primary key,

HoTen nvarchar (30),

GioiTinh tinyint,

NgaySinh date,

DienThoai varchar(20),

Email varchar (50),

DiaChi nvarchar (250)

 

);

go

-- sửa bản thêm cột

alter table SinhVien

add MaKhoa varchar(50);

-- sửa bảng để sửa cột

alter table SinhVien

alter column Makhoa varchar(10);

-- sửa bảng xóa cột

alter table SinhVien

drop column MaKhoa;

-- thiết lập kiểu quan hệ giữa 2 bảng SinhVien và ChuyenKhoa

alter Table SinhVien

add constraint FK_ChuyenKhoa_Id foreign key(Makhoa)

references ChuyenKhoa(MaKhoa)

 

-- tao môn học

create table MonHoc

(

MaMH varchar (10) primary key,

TenMonHoc nvarchar (150),

SoTinChi int

 

);

-- Tạo Bảng phòng học

Create Table PhongHoc

 

(

Maphong int identity (1,1) primary key,

TenPhong nvarchar (100)

);

--BANG đIỂM

Create table DiemThi

(

SinhVienId varchar(10),

MonHocId varchar (10),

Diem float,

NgayThi date,

PhongHocId int,

constraint PK_DiemThi_Id primary key(SinhVienId, MonHocId)-- kết hơp 2 khóa chính

 

);

-- sửa bảng để xóa ràng buộc khóa chính

Alter table DiemThi

drop constraint PK_DiemThi_Id;

 

---- Thêm ràng buộc khóa chính

Alter table DiemThi

add constraint PK_DiemThi_Id primary key(SinhVienId, MonHocId);

---------

-- thiết lập quan hệ giữa 2 bảng DiemThi vad SinhVien

Alter table DiemThi

add constraint FK_SinhVien_Id foreign key (SinhVienId)

references SinhVien(MaSV);

 

---Thiết lập giữa bảng DiemThi và môn học

alter table DiemThi

add constraint FK_MonHoc_Id foreign key (MonHocId)

references MonHoc(MaMH);

 

-- xóa bảng

drop table PhongHoc

---- thiết lập số điên thoại là duy nhất

alter table SinhVien

add constraint UIQ_Dienthoi UNIQUE(DienThoai);-- sô điện thoại trùng sẽ báo

 

-- cách import dữ liệu từ databese khác vào databese phải cùng kiểu dữ liêu

insert into SinhVien(MaSV, HoTen, DienThoai, Email, DiaChi)

select MaSV, HoTen, DienThoai, Email, DiaChi from QLSinhVien_080522.dbo.NhanVien;

 

-- kiểm tra thông tin thoa mãn điều kiện sô tín chỉ ko dduccoc nho hơn 0

alter Table MonHoc

add constraint CHECK_MonHoc CHECK (soTinChi>0);

 

----thiết lập giới tính mặc định là năm

alter table SinhVien

add constraint DEFAULT_GioiTinh Default(0) for GioiTinh

--  Thống kê 1 lần duy nhất nếu trùng mã nhiều

select distinct MaKhoa from SinhVien

 

-- lấy lương từ khoảng nào đến khoảng đến khoảng nào

use CSDL2022DV

select * from NhanVien where luong between 3000000 and 15000000;

-- tương dương

select * from NhanVien where luong >= 3000000 and luong <=15000000;

-- tìm người có họ là nguyễn

select *from NhanVien where HoTen like N'Nguyễn%'

-- tìm nhân viên có chứa tên lót thị

select *from NhanVien where HoTen like N'%thị%'

-- Hàm sô học

-- hàm làm tròn lấy 2 số sau dấu phảy

select round (5.6444353,2);

-- hàm lấy cận trên làm tròn lên

select CEILING (5.6444353);

-- hàm làm tròn xuống cận dưới

select Floor (5.6444353);

--- chuyển cùng chữ thương

select lower (N'Máy Chấm Công');

-- chuyển cùng chữ hoa

select upper (N'Máy Chấm Công');

--- Hàm ngày tháng

-- lấy ngày hiện tại

select getdate();

-- Hàm ngày tháng năm

select day(getdate()) as ngay, month (getdate()) as Thang, year (getdate()) as Nam;

 

-- thêm 1 ngày vào ngày hiện tại

select Dateadd(D,1, getdate());

-- thêm 1 tháng vào tháng hiện tại

select Dateadd(M,1, getdate());;

-- thêm 1 năm vào năm hiện tại

select Dateadd(yyyy,1,getdate());

 -- CHUYỂN ĐỔI TỪ CHUỖI SANG SỐ

 select cast ('023' as int )*3

 -- chuyển từ ngày tháng về chuỗi

 select convert (varchar, getdate(),103);

 -- chuyển ttuwfchuoi sang ngày tháng'

 select convert (date, '24/11/2022', 103);

 

  -- Đếm số lượng nhân viên' trong bảng: từ khóa as là hiện tên add vào qsl

  select count (*) as SoLuongNV from NhanVien;

  -- Tính tổng lương, trung bình, lớn nhất, nhỏ nhất, round,2 là tròn lấy 2 số

  -- Bai 17

  select sum(Luong) as TongLuong, round(avg(Luong),2) as LuongTB,

  MAX(Luong) as LuongLonNhat, Min(Luong) as LuongNhoNhat from NhanVien;

  -- thống kê số lượng nhân viên theo từng phòng ban

  select MaPhong, count(*) as SoLuongNV from NhanVien group by MaPhong;

 

  -- Thống kê số lượng nhân viên theo từng phòng ban

  select MaPhong, count (*) as SoLuongNV from NhanVien

  group by MaPhong;

  -- thống kê lương trung bình theo từng phòng ban

  select MaPhong, sum(luong) as TongLuong, avg(luong) as LuongTB from NhanVien

  group by Maphong;

 

  -- Thống kê số lượng nhân viên theo từng phòng ban với số lượng

  select MaPhong, count (*) as SoLuongNV from NhanVien

  group by MaPhong

  having count(*) >=5;

  select count (*) as SoNV from NhanVien;

  select * from NhanVien;

  -- Lấy thông tin 2 bản thõa mãn điều kiện khóa ngoại bằng khóa chính. nv chi định nhân viên đó

  select MaNV, HoTen, nv.DienThoai, nv.Email, nv.DiaChi, TenPhong from NhanVien nv inner join Phongban pb on  nv.MaPhong = pb.MaPhong;

  -- Lấy thông tin từ bảng trong đó ưu tiên lấy tất cả thông tin bảng bên trái'

  select MaNV, HoTen, nv.DienThoai, nv.Email, nv.DiaChi, TenPhong from NhanVien nv left join Phongban pb on  nv.MaPhong = pb.MaPhong;

  -- Lấy toàn bộ thông tin 2 bảng

  select MaNV, HoTen, nv.DienThoai, nv.Email, nv.DiaChi, TenPhong from NhanVien nv full join Phongban pb on  nv.MaPhong = pb.MaPhong;

  -- Nối 2 tập dữ liệu với nhau

  select MaNV, HoTen from NhanVien

  union

  select MaPhong, TenPhong from Phongban;

 

  -- Lấy tất cả nhân viên có lương lớn hơn lương trung bình trong hệ thống

  select * from NhanVien

  where Luong>(select avg(Luong) as LuongTB from NhanVien)

 

 

 

Không có nhận xét nào