Bài 3.3 phẩy: Truy vấn Dữ liệu và Bài Lab (Làm bằng Python) Ngày đăng: 21/08/2022

Nghĩ đi nghĩ lại thì cũng nên truyền bá một chút ngôn ngữ python cho các bạn!

Đầu tiên chúng ta tham khảo cho biết python nó là gì và làm những gì thì vào đây: /python

Trước mắt chúng ta sẽ chiến đấu thông qua Colab (google) nhé. Và tại sao làm python thì vào đây kéo xuống cuối cùng mình có giải thích rồi

Đầu tiên các bạn cứ vào google drive: https://drive.google.com/drive/u/0/my-drive

Tạo 1 folder tên python nhé

Việc này nhẹ mà lương cao!

Vậy là chúng ta có folder tên python trên driver.

Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python

Tải file database mẫu tại đây

Giải nén và upload nó lên Driver như hình phía trên nhé

Sau đó thì sử dụng lại database từ buổi học hôm trước; mình tạm thời xuất cứng nó ra thành file csv cho dễ thao tác trước nhé còn connect databse SQL như thế nào theo python thì search google.

Hoặc làm theo code mẫu này

import pyodbc 
import matplotlib.pyplot as plt
conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=.\MSSQL2019;'
                      'Database=DEVMaster_Buoi3;'
                      'Trusted_Connection=yes;')

Sử lại thông số nhé! Nếu các bạn đã cài python trên máy rồi thì mới dùng đến thằng này (không thì bỏ qua)

Giờ bắt đầu nào:

Chuột phải vào folder python add colab vào (nếu chưa có)

Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Add thêm Colab vào goolge driver

Tìm đúng cái có tên là: Colaboratory

Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Thêm Colaboratory vào driver
Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Cứ nếch thôi - Việc nhẹ lương cao
Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Như này xong rồi! 

 Giờ chúng ta sẽ tiến hành mở Colab lên nhé

Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Mở colab theo folder python

Đây rồi; trông xịn xò con bò cực luôn

Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Màn hình chính colab

 OK!

Giờ tiếp tục nào:

Ở đây mình chỉ sử dụng mỗi thư viện pandas của python; pandas nó có gì thì đọc ở đây: https://pandas.pydata.org/docs/user_guide/index.html#user-guide

Chúng ta sẽ tiến hành cái đặt pandas cho colab bằng dòng lệnh

!pip install pandas

(Thằng colab nó install thì phải thêm ! (chấm than) phía trước, hơi khác một chút với bản cài trên máy tính; vì sao lại thế thì mình chịu)

Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Chạy cài đặt pandas trên colab

Gõ xong dòng lệnh thì bấm vào cái biểu tường PLAY bên cạnh nó nó run nhé 

Giờ đến thực hiện các việc query và phân tích data nhé. Muốn thêm dòng code thì bấm vào + code

Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python

Đầu tiền kiểm tra data của Sinhvien nhé

CODE:

import pandas as pd

ketqua_df = pd.read_csv("./Ketqua.csv")
khoa_df = pd.read_csv("./Khoa.csv")
monhoc_df = pd.read_csv("./Monhoc.csv")
sinhvien_df = pd.read_csv("./sinhvien.csv")
#Xem bảng dữ liệu Sinh viên
print(sinhvien_df)

Giải thích 1 chút chỗ này:

sinhvien_df -- Như kiểu một biến được khai báo

pd.read_csv ('....'): là thư viện pandas được khai báo import pandas as pd - đọc file csv ra

Nếu gặp lỗi thì chắc do chưa tải file CSV lên :D

Tiến hành kiểm tra và tải lại mấy file CSV nhé

Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Upload lại mấy file csv
Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Đã upload xong mấy file CSV
Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Copy lại đường dẫn file cho chính xác

 Sau khi xong thì chúng ta dán lại link file vào code; của mình sẽ có như thế này

import pandas as pd

#ketqua_df = pd.read_csv("/content/Ketqua.csv")
#khoa_df = pd.read_csv("/content/Khoa.csv")
#monhoc_df = pd.read_csv("/content/MonHoc.csv")
sinhvien_df = pd.read_csv("/content/SinhVien.csv")

##Xem bảng dữ liệu Sinh viên
print(sinhvien_df)

Kết quả xịn xò luôn

Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Bảng dữ liệu sinh viên

Thằng python nó tính từ 0 nhé :D Nên các bạn nhìn dòng cuối là 14 thì tổng sẽ là 15 chú sinh viên đấy

Làm bài Lab của Thầy Chung Trịnh nào.

Lưu ý:

  • Thằng colab cái nào phía trước chạy rồi thì phía sau cứ add thêm code mà chạy thôi
  • Nếu cái sau chạy bị lỗi thì các bạn chạy lại các phần phía trước. Lười thì bấm CTRL F9

 

Bài 3 / 4: (trong Lab 4 nhé) # Cho biết tổng số sinh viên ở mỗi khoa, gồm các thông tin: Tên khoa, Tổng số sinh viên

Code:

# Cho biết tổng số sinh viên ở mỗi khoa, gồm các thông tin: Tên khoa, Tổng số sinh viên
df2 = sinhvien_df.groupby('MaKH')['MaSV'].count()
df2 = khoa_df.join(df2,on='MaKH').rename(columns={'MaSV':'Tong'})
print(df2)

Bài 3 / 5: (trong Lab 4 nhé) Cho biết điểm cao nhất của mỗi sinh viên, gồm thông tin: Họ tên sinh viên, Điểm

Code (chạy trên colab nhé)

best_df = ketqua_df.groupby('MaSV')['Diem'].max()
best_df = sinhvien_df.join(best_df, on = 'MaSV')
print(best_df)

Kết quả:

Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
ra kết quả OK - Vì thằng colab nó ko view được nhiều cột nên nó bị nhảy xuống dòng!
Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python
Kết quả trên máy tính.

 Bài 3 / 6: (trong Lab 4 nhé) #Thông tin của môn học só tiết nhiều nhất: Tên môn học, số tiết

Code

max_lessons = max(monhoc_df['Sotiet'])
df3 = monhoc_df[monhoc_df['Sotiet']==max_lessons]
print(df3)

Kết quả

Bài 33 phẩy Truy vấn Dữ liệu và Bài Lab Làm bằng Python

Bài 3 / 7: (trong Lab 4 nhé) #Cho biết học bổng cao nhất của từng khoa, gồm: Mã khoa, Tên Khoa, Học bổng cao nhất

Code:

#Cho biết học bổng cao nhất của từng khoa, gồm: Mã khoa, Tên Khoa, Học bổng cao nhất
df4= sinhvien_df.groupby('MaKH')['HocBong'].max()
df4 = khoa_df.join(df4,on='MaKH')
print(df4)

Bài 3 / 8: (trong Lab 4 nhé) #Cho biết điểm cao nhất của mỗi môn, gồm: Tên môn, điểm cao nhất

Code:

#Cho biết điểm cao nhất của mỗi môn, gồm: Tên môn, điểm cao nhất
df5 = ketqua_df.groupby('MaMH')['Diem'].max()
df5 = monhoc_df.join(df5,on='MaMH').drop(labels=["MaMH","Sotiet"],axis=1)
print(df5)

Bài 3 / 9: (trong Lab 4 nhé) #Thống kê số sinh viên học của từng môn, thông tin gồm: Mã môn, Tên môn, Số sinh viên đang học

Code

#Thống kê số sinh viên học của từng môn, thông tin gồm: Mã môn, Tên môn, Số sinh viên đang học
df6 = ketqua_df.groupby('MaMH')['MaSV'].count()
df6 = monhoc_df.join(df6,on='MaMH').drop(labels=["Sotiet"],axis=1).rename(columns={'MaSV':'SoSV'})
print(df6)

Bài 3 / 10: (trong Lab 4 nhé) #Thống kê số sinh viên học của từng môn, thông tin gồm: Mã môn, Tên môn, Số sinh viên đang học

...

 

Trong lúc chờ run project; tớ paste hết code lên cho mọi người tham khảo để run nhé

import pandas as pd
#import pyodbc  --> Nếu dùng SQL Server trên chính máy tính cá nân


#chỗ này để đọc hết dữ liệu từ file CSV ra
ketqua_df = pd.read_csv("./Ketqua.csv") #--Nhớ sửa đường dẫn file nhé Chuẩn tên file phân biệt chữ IN và thường
khoa_df = pd.read_csv("./Khoa.csv") #--Nhớ sửa đường dẫn file nhé Chuẩn tên file phân biệt chữ IN và thường
monhoc_df = pd.read_csv("./Monhoc.csv") #--Nhớ sửa đường dẫn file nhé Chuẩn tên file phân biệt chữ IN và thường
sinhvien_df = pd.read_csv("./sinhvien.csv") #--Nhớ sửa đường dẫn file nhé Chuẩn tên file phân biệt chữ IN và thường


#-- Nếu dùng SQL SERVER thì comment mấy cái phía trên lại nhé
#conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=.\MSSQL2019;'
                      'Database=DEVMaster_Buoi3;'
                      'Trusted_Connection=yes;')
#Nhớ sửa lại thông kết nối Database SQL Server chuẩn theo máy tính nhé

#sinhvien_df = pd.read_sql_query('SELECT * FROM sinhvien', conn)
#ketqua_df = pd.read_sql_query('SELECT * FROM Ketqua', conn)
#khoa_df = pd.read_sql_query('SELECT * FROM Khoa', conn)
#monhoc_df = pd.read_sql_query('SELECT * FROM Khoa', conn)

#======================================================


#Cho biết điểm cao nhất của mỗi sinh viên, gồm thông tin: Họ tên sinh viên, Điểm

best_df = ketqua_df.groupby('MaSV')['Diem'].max()
best_df = sinhvien_df.join(best_df, on = 'MaSV')
print(best_df)

# Cho biết tổng số sinh viên ở mỗi khoa, gồm các thông tin: Tên khoa, Tổng số sinh viên
df2 = sinhvien_df.groupby('MaKH')['MaSV'].count()
df2 = khoa_df.join(df2,on='MaKH').rename(columns={'MaSV':'Tong'})
print(df2)

#Thông tin của môn học só tiết nhiều nhất: Tên môn học, số tiết
max_lessons = max(monhoc_df['Sotiet'])
df3 = monhoc_df[monhoc_df['Sotiet']==max_lessons]
print(df3)

#Cho biết học bổng cao nhất của từng khoa, gồm: Mã khoa, Tên Khoa, Học bổng cao nhất
df4= sinhvien_df.groupby('MaKH')['HocBong'].max()
df4 = khoa_df.join(df4,on='MaKH')
print(df4)

#Cho biết điểm cao nhất của mỗi môn, gồm: Tên môn, điểm cao nhất
df5 = ketqua_df.groupby('MaMH')['Diem'].max()
df5 = monhoc_df.join(df5,on='MaMH').drop(labels=["MaMH","Sotiet"],axis=1)
print(df5)

#Thống kê số sinh viên học của từng môn, thông tin gồm: Mã môn, Tên môn, Số sinh viên đang học
df6 = ketqua_df.groupby('MaMH')['MaSV'].count()
df6 = monhoc_df.join(df6,on='MaMH').drop(labels=["Sotiet"],axis=1).rename(columns={'MaSV':'SoSV'})
print(df6)

#Thống kê số sinh viên học của từng môn, thông tin gồm: Mã môn, Tên môn, Số sinh viên đang học
max_score = max(ketqua_df['Diem'])
df7 = ketqua_df[ketqua_df['Diem']==max_score]
df7 = monhoc_df.merge(df7,on='MaMH',how='inner')
print(df7)

 

Bài 3.3: Truy vấn Dữ liệu và Bài Lab Ngày đăng: 20/08/2022

Dựa theo bài học của Mr Chung Trịnh (Devmaster); Bài giảng khá chi tiết được tình tổng hợp lại theo nội dung video và bài học

Import Dữ liệu đầu vào

- Đầu tiên các bạn tải file data mẫu tại đây. Và run trong SQL để create bảng + table (Việc này nhẹ mà lương cao - tự làm nhé): File MẪU TẠI ĐÂY

- Sau khi run xong thì mình sẽ có thấy Data như thế này

- Ví ở đây: Mình tạo 1 database trước có tên là: DEVMaster_Buoi3 --> Sau đó tiến hành Run query theo file

Bài 33 Lab4 Truy vẫn Dữ liệu
Database Sinh viên sau khi Run xong

Kiểm tra tính ràng buộc của các bảng

Mục đích là để kiểm tra khi thực hiện công việc, thêm sửa xóa và mục đích thiết kế Database của người Lập trình như thế nào; xem tính logic cũng như mô hình Database thì mới code đc :D 

Các bạn làm theo hướng dẫn

Bài 33 Lab4 Truy vẫn Dữ liệu
Kiểm tra tính ràng buộc của các bảng​​​​
  1. Chọn Database Diagrams --> Bấm chuột phải
  2. Chọn New Database Diagrams
Bài 33 Lab4 Truy vẫn Dữ liệu
Sau khi chọn xong New Database Diagrams

Sẽ có 1 box hiện lên và các bạn Giữ CTRL và chọn hết các bảng

Bài 33 Lab4 Truy vẫn Dữ liệu
Bài 33 Lab4 Truy vẫn Dữ liệu

 Vậy là xong! Tại sao phải làm thế này thì mình sẽ giải thích sau. 

NỘI DUNG BÀI HỌC TRUY VẤN DỮ LIỆU

Nội dung bài học theo từng bước như sau:

--- TRUY VẤN DỮ LIỆU
--0. THỨ TỰ THỰC HIỆN CÂU LỆNH TRUY VẤN
/* TỔNG QUÁT

5.	SELECT [TOP / DISTINCT / PERCENT / WITH TIES ]  ...

7.	[INTO TABLE_NAME]

1.	FROM 

2.	WHERE

3.	GROUP BY

4.	HAVING 

6.	ORDER BY  

*/
--1. Truy vấn select - không có from
SELECT @@VERSION AS N'Phiên bản'
GO
SELECT N'Hà nội mua thu tỏa nắng vàng ươm'
GO
--2. Truy vấn trên một bảng
SELECT MaKH,TenKH
FROM Khoa
go
--3. Truy vấn select sử dụng dấu *
-- lấy toàn bộ các cột trong nguồn dữ liệu
SELECT *
FROM KHOA 
GO
--4. Tạo bí danh cho cột trong tập kết quả
-- 
SELECT MaKH as [Mã khoa],TenKH as [Tên khoa]
FROM Khoa as k
go

SELECT MaKH [Mã khoa],TenKH [Tên khoa]
FROM Khoa as k
go
SELECT [Mã khoa]=MaKH , [Tên khoa]=TenKH
FROM Khoa as k
go
SELECT 'Mã khoa'= MaKH , 'Tên khoa'=TenKH
FROM Khoa k
go

--5. Sử dụng biểu thức trong mệnh đề select
Select MaSV, HoSV + ' ' + TenSV as [Sinh viên]
From SinhVien as sv
GO
--6. Điều kiện trong mệnh đề select
-- Where: giới hạn tập kết quả
Select * from SinhVien
-- Hiển thị sinh viên có phai là 0
Select * 
from SinhVien
Where Phai = 0
Go
--Where: sử dụng các thành phần, biểu thức, ..trong where
--a) toán tử so sánh: =; >; >=; <; <=; <>
-- Hiển thị sinh viên có học bổng >=100000
Select * 
from SinhVien
Where HocBong >=100000
Go
--b) Toán tử logic (and, or, not) trong mệnh đề where
-- Hiển thị thông tinh sinh viên là nam và có học bổng
Select * 
from SinhVien
Where Phai=0 and HocBong >0
Go
-- or
Select * 
from SinhVien
Where Phai=0 or HocBong >0
Go

-- not
Select * 
from SinhVien
Where not (Phai=0 or HocBong >0)
Go

-- c) Phép so sanh tương đối (Like / not like)
/*
	+) _ => đại diện cho 1 ký tự bất kỳ
	+) % => Đại diện cho một chuỗi ký tự bất kỳ
	+) [], [a-z] => trong khoảng
	+) [^], [^a-c] => ngoài khoảng
*/
-- áp dụng co các loại dữ liệu kiểu chuỗi
-- Liệt kê sinh viên có tên bắt đầu bằng ký tự n
Select * 
from SinhVien
Where TenSV Like N'n%'
-- Liệt kê sinh viên có tên sinh viên chứa ký tự n
Select * 
from SinhVien
Where TenSV Like N'%n%'
-- Liệt kê sinh viên có tên có ký tự thứ 2 là 'ê'
Select * 
from SinhVien
Where TenSV Like N'_ế%'
-- Liệt kê sinh viên có phần tên có ký tự đầu tiên trong khoảng
-- a-m
Select * 
from SinhVien
Where TenSV Like N'[a-m]%'
--
Select * 
from SinhVien
Where TenSV Like N'[^a-m]%'
---------------
--d) sử dụng phép so sánh tập hợp trong where
-- IN / NOT IN
-- Hiển thị sinh viên thuộc khoa AV và TH
SELECT *
FROM SinhVien
WHERE MaKH = 'AV' OR MaKH = 'TH'
GO
--IN
SELECT *
FROM SinhVien
WHERE MaKH IN ('AV','TH')
GO
-- 
-- 7. TRUY VẤN CÓ SẮP XẾP DỮ LIỆU TRONG TẬP KẾT QUẢ
-- order by   /  /   ASC/ DESC
-- Liệt kê thông tin sinh viên, sắp theo tên tăng dần
SELECT *
FROM SinhVien
ORDER BY TENSV ASC
---GIẢM DẦN
SELECT *
FROM SinhVien
ORDER BY TENSV DESC
---
SELECT *
FROM SinhVien
ORDER BY 3 ASC
GO
--
SELECT MaSV, HoSV + ' '+ TenSV AS [Họ tên], Phai, NoiSinh
FROM SinhVien
ORDER BY TenSV ASC
GO
--
SELECT MaSV, HoSV + ' '+ TenSV AS [Họ tên], Phai, NoiSinh
FROM SinhVien
ORDER BY [Họ tên] ASC
GO
SELECT MaSV, HoSV + ' '+ TenSV AS [Họ tên], Phai, NoiSinh
FROM SinhVien
ORDER BY 2 ASC
GO
--
SELECT MaSV, HoSV + ' '+ TenSV AS [Họ tên], Phai, NoiSinh
FROM SinhVien
ORDER BY HocBong desc
GO
--
SELECT MaSV, HoSV + ' '+ TenSV AS [Họ tên], Phai, NoiSinh,HocBong
FROM SinhVien
ORDER BY HocBong desc
GO
---
--- ví dụ:
/*
14. Liệt kê danh sách sinh viên sinh vào ngày 20/12/1987, 
gồm các thông tin: Họ tên sinh viên, Mã khoa, Học bổng.
*/
SELECT HoSV + ' ' + TenSV AS [Họ tên sinh viên], MaKH [Mã khoa],
	HocBong [Học bổng],NgaySinh
FROM SINHVIEN
WHERE NgaySinh = '1987/12/20'
GO
SELECT HoSV + ' ' + TenSV AS [Họ tên sinh viên], MaKH [Mã khoa],
	HocBong [Học bổng],NgaySinh
FROM SINHVIEN
WHERE NgaySinh = '12/20/1987'
GO
SET DATEFORMAT DMY
GO
SELECT HoSV + ' ' + TenSV AS [Họ tên sinh viên], MaKH [Mã khoa],
	HocBong [Học bổng],NgaySinh
FROM SINHVIEN
WHERE NgaySinh = '20/12/1987'
GO
SELECT HoSV + ' ' + TenSV AS [Họ tên sinh viên], MaKH [Mã khoa],
	HocBong [Học bổng], CONVERT(CHAR(10),NgaySinh,105) AS [Ngày sinh]
FROM SINHVIEN
WHERE NgaySinh = '20/12/1987'
GO

SELECT HoSV + ' ' + TenSV AS [Họ tên sinh viên], MaKH [Mã khoa],
	HocBong [Học bổng], CONVERT(CHAR(10),NgaySinh,105) AS [Ngày sinh]
FROM SINHVIEN
WHERE CONVERT(CHAR(10),NgaySinh,105) = '20-12-1987'
GO

--8. sự dụng mệnh đề case when trong câu lệnh select
select *
from SinhVien
-- hiển thị thông tin sinh viên, cột phai hiển thị nam, nữ
SELECT MaSV, HoSV, TenSV, 
	Phai =  CASE PHAI 
				WHEN 0 THEN N'Nam'
				ELSE N'Nữ'
			END
	, 
	NgaySinh, NoiSinh, MaKH, HocBong, DiemTrungBinh
FROM SinhVien
GO
SELECT MaSV, HoSV, TenSV, 
	Phai =  CASE  
				WHEN PHAI = 0 THEN N'Nam'
				WHEN PHAI = 1 THEN N'Nữ'
				ELSE N'Khác'
			END
	, 
	NgaySinh, NoiSinh, MaKH, HocBong, DiemTrungBinh
FROM SinhVien
GO

--9. Truy vấn tạo bảng (Make table Query)
-- into
SELECT MaSV, HoSV, TenSV, 
	Phai =  CASE  
				WHEN PHAI = 0 THEN N'Nam'
				WHEN PHAI = 1 THEN N'Nữ'
				ELSE N'Khác'
			END
	, 
	NgaySinh, NoiSinh, MaKH, HocBong, DiemTrungBinh
INTO SINHVIEN_TEMP
FROM SinhVien
GO
SELECT * FROM SINHVIEN_TEMP
--- #TABLE / ##TABLE
SELECT MaSV, HoSV, TenSV, 
	Phai =  CASE  
				WHEN PHAI = 0 THEN N'Nam'
				WHEN PHAI = 1 THEN N'Nữ'
				ELSE N'Khác'
			END
	, 
	NgaySinh, NoiSinh, MaKH, HocBong, DiemTrungBinh
INTO #SINHVIEN_TEMP
FROM SinhVien
GO
SELECT * FROM #SINHVIEN_TEMP
GO
-----
--10. SỬ DỤNG TỪ KHÓA DISTINCT TRONG MỆNH ĐỀ SELECT
-- DISTINCT: LOẠI BỎ CÁC HÀNG TRÙNG LẶP - CHỈ DỮ LẠI 1
SELECT * FROM SINHVIEN 
GO
SELECT PHAI FROM SINHVIEN 
GO
SELECT DISTINCT PHAI FROM SINHVIEN 
GO
SELECT  PHAI, MAKH FROM SINHVIEN 
GO
SELECT DISTINCT PHAI, MAKH FROM SINHVIEN 
GO
--11. SỬ TỪ KHÓA TOP TRONG SELECT
-- TOP  : TRÍCH RA N HÀNG ĐẦU TIÊN TRONG TẬP KẾT QUẢ
SELECT MaSV, HoSV, TenSV, Phai, NgaySinh, NoiSinh, MaKH, HocBong
FROM SinhVien
ORDER BY HocBong DESC
go
SELECT TOP 1 MaSV, HoSV, TenSV, Phai, NgaySinh, NoiSinh, MaKH, HocBong
FROM SinhVien
go
-- LẤY RA SINH VIÊN CÓ HỌC BỔNG CAO NHẤT
SELECT TOP 1 MaSV, HoSV, TenSV, Phai, NgaySinh, NoiSinh, MaKH, HocBong
FROM SinhVien
ORDER BY HocBong DESC
go
--12. SỬ DỤNG WITH TIES CÙNG VỚI TOP
-- LẤY RA TẦNG ĐẦU TIÊN BẰNG NHAU
UPDATE SinhVien SET HocBong = 1500000 WHERE MaSV='a12'
GO
SELECT MaSV, HoSV, TenSV, Phai, NgaySinh, NoiSinh, MaKH, HocBong
FROM SinhVien
ORDER BY HocBong DESC
go
SELECT TOP 1 WITH TIES MaSV, HoSV, TenSV, Phai, NgaySinh, NoiSinh, MaKH, HocBong
FROM SinhVien
ORDER BY HocBong DESC
go
SELECT TOP 2 WITH TIES MaSV, HoSV, TenSV, Phai, NgaySinh, NoiSinh, MaKH, HocBong
FROM SinhVien
ORDER BY HocBong DESC
go
SELECT TOP 3 WITH TIES MaSV, HoSV, TenSV, Phai, NgaySinh, NoiSinh, MaKH, HocBong
FROM SinhVien
ORDER BY HocBong DESC
go
--13. PERCENT
SELECT TOP 50 PERCENT MaSV, HoSV, TenSV, Phai, NgaySinh, NoiSinh, MaKH, HocBong
FROM SinhVien
ORDER BY HocBong DESC
go
--14. TRUY VẤN KẾT HỢP 2 HAY NHIỀU BẢNG (JOIN)
-- 
-- LEFT JOIN / LEFT OUTER JOIN
-- INNER JOIN 
-- RIGHT JOIN / RIGHT OUTER JOIN
-- FULL JOIN / FULL OUTER JOIN
SELECT * FROM KHOA ORDER BY MAKH 
SELECT * FROM SINHVIEN ORDER BY MAKH 
GO
-- inner join
SELECT *
FROM KHOA K
	INNER JOIN SinhVien SV ON K.MaKH = sv.MaKH
GO
SELECT k.MaKH,TenKH,MaSV,HoSV,TenSV,HocBong
FROM KHOA K
	INNER JOIN SinhVien SV ON K.MaKH = sv.MaKH
GO
/*
SELECT KHOA.MaKH,TenKH,MaSV,HoSV,TenSV,HocBong
FROM KHOA K
	INNER JOIN SinhVien SV ON K.MaKH = sv.MaKH
GO
*/
INSERT KHOA VALUES('DE','Devmaster')
GO
SELECT k.MaKH,TenKH,MaSV,HoSV,TenSV,HocBong
FROM KHOA K
	INNER JOIN SinhVien SV ON K.MaKH = sv.MaKH
GO
-- left join 
SELECT k.MaKH,TenKH,MaSV,HoSV,TenSV,HocBong
FROM KHOA K
	left JOIN SinhVien SV ON K.MaKH = sv.MaKH
GO
-- RIGHT JOIN
SELECT k.MaKH,TenKH,MaSV,HoSV,TenSV,HocBong
FROM KHOA K
	RIGHT JOIN SinhVien SV ON K.MaKH = sv.MaKH
GO
--FULL JOIN
SELECT k.MaKH,TenKH,MaSV,HoSV,TenSV,HocBong
FROM KHOA K
	FULL JOIN SinhVien SV ON K.MaKH = sv.MaKH
GO

---VD: JOIN 3 BẢNG
SELECT *
FROM Khoa AS K
	JOIN SinhVien AS SV ON K.MaKH = SV.MaKH
	JOIN Ketqua AS KQ ON SV.MaSV = KQ.MaSV
GO
--- 4 BẢNG
SELECT Khoa.*, SinhVien.MaSV, SinhVien.HoSV, SinhVien.TenSV, SinhVien.Phai, Ketqua.Diem, MonHoc.MaMH, MonHoc.TenMH, MonHoc.Sotiet
FROM  Khoa INNER JOIN
         SinhVien ON Khoa.MaKH = SinhVien.MaKH INNER JOIN
         Ketqua ON SinhVien.MaSV = Ketqua.MaSV INNER JOIN
         MonHoc ON Ketqua.MaMH = MonHoc.MaMH
GO
SELECT Khoa.*, SinhVien.MaSV, SinhVien.HoSV, SinhVien.TenSV, SinhVien.Phai, Ketqua.Diem, MonHoc.MaMH, MonHoc.TenMH, MonHoc.Sotiet
FROM  Ketqua INNER JOIN
         MonHoc ON Ketqua.MaMH = MonHoc.MaMH LEFT OUTER JOIN
         SinhVien ON Ketqua.MaSV = SinhVien.MaSV RIGHT OUTER JOIN
         Khoa ON SinhVien.MaKH = Khoa.MaKH
GO

-----

 

GIỜ ĐẾN LÚC LÀM BÀI TẬP THÔI

LAB 04 TRUY VẪN DỮ LIỆU

Bài 1: Viết những truy vẫn lọc và sắp xếp dữ liệu

1.  Cho biết danh sách các môn học, gồm những thông tin sau: Mã môn học, Tên môn học, số tiết

Code: 

select 
	MaMH as N'Mã môn học'
	,TenMH as N'Tên môn học'
	,Sotiet as N'Số tiết'
from MonHoc

Màn hình hiện thị kết quả

Bài 33 Lab4 Truy vẫn Dữ liệu

2. Liệt kê danh sách sinh viên, gồm các thông tin sau: Mã sinh viên, Họ sinh viên, Tên sinh viên, Học bổng. Danh sách sẽ được sắp xếp theo thứ tự Mã sinh viên tăng dần.

Code:

select 
	MaSV
	,HoSv
	,TenSV
	,HocBong
from SinhVien
order by Masv

Màn hình kết quả:

Bài 33 Lab4 Truy vẫn Dữ liệu

3. Danh sách các sinh viên, gồm các thông tin sau: Mã sinh viên, Tên sinh viên, Phải, Ngày sinh. Danh sách sẽ được sắp xếp theo thứ tự của tên

Code:

select 
	MaSV
	,TenSV
	,Phai
	,Hocbong
	,CONVERT(CHAR(10),NgaySinh,103)
from SinhVien
order by TenSV

Màn hình kết quả:

Bài 33 Lab4 Truy vẫn Dữ liệu

Bài 2: Sử dụng hàm trong truy vấn dữ liệu

1. Liệt kê danh sách sinh viên gồm các thông tin sau: Họ và tên sinh viên, giới tinh, Tuổi, Mã khoa. 

Trong đó Giới tính hiện thị ở dạng Nam/Nữ tùy theo giá trí của field Phai là True hay False

Tuổi sẽ được tính bằng cách lấy năm hiện tại trừ đi cho năm sinh.  Danh sách được sắp xếp theo thứ tự Tuổi giảm dấn

Code:

select 
	HoSV + ' ' + TenSV As FullName
	,case Phai
		when '1' then N'Nam'
		when '0' then N'Nữ'
	end
	as N'Giới tính'
	--tinh tuổi có nhiều cách để tinh; mình viết mẫu 2 cách thôi nhé
	--cách 1 là dùng DATEDIFF
	,DATEDIFF(year, NgaySinh, GETDATE())  as Tuoi
	--cách 2 dùng hàm Convert YEAR của định dạng ngày tháng
	, YEAR(getdate()) - YEAR(Ngaysinh) as N'Tuổi cách 2'
from SinhVien
order by Tuoi desc

Màn hình kết quả

Bài 33 Lab4 Truy vẫn Dữ liệu

2. Danh sách sinh viên sinh vào tháng 2 năm 1994, gồm các thông tin Họ tên sinh viên, Phái, Ngày sinh. Trong đó, Ngày sinh chỉ lấy giá trị ngày của truong Ngaysinh

Code:

select 
	HoSV + ' ' + TenSV As FullName
	,case Phai
		when '1' then N'Nam'
		when '0' then N'Nữ'
	end
	as N'Giới tính'
	,DAY(Ngaysinh) as N'Ngày của ngày sinh'
from SinhVien
where
	Year(Ngaysinh) = '1994' and MONTH(Ngaysinh)='02'

Màn hình kết quả:

Bài 33 Lab4 Truy vẫn Dữ liệu

 3. Sắp xếp dữ liệu giảm dần theo cột Ngaysinh

Bài này dễ quá quá

4. Cho biết thông tin về mức học bổng của sinh viên, gồm:

Mã sinh viên, Phái, Mã khoa, Mức học bổng.

Trong đó: Mức học bổng sẽ hiện thị là "Học bổng cao" nếu giá trí feild của Hocbong > 100,000 và ngược lại là hiện thị "Mức trung bình"

Code:

select 
	MaSV
	,case Phai
		when '1' then N'Nam'
		when '0' then N'Nữ'
	end
	as N'Giới tính'
	,MaKH
	,case 
		when hocbong >= 100000 then N'Học bổng cao'
		when hocbong < 100000 then N'Mức trung bình'
	end

from SinhVien
where hocbong > 0

Màn hình kết quả:

Bài 33 Lab4 Truy vẫn Dữ liệu

5. Cho biết điểm thi của các sinh viên, gồm các thông tin: Họ và tên Sinh viên, Mã môn học, Điểm. Kết quả được sắp xếp theo tứ tự Họ và tên Sinh viên, Mã môn học tăng dần

Chú thích 1 chút: Là bạn kéo lên phía trên đọc lại cái phần Database Diagrams kia nhé; Đây là ví do vì sao mình phải kéo Diagrams để xem sự liên kết các bảng dữ liệu sẽ như thế nào. Bài số 5 này là select join nhiều bảng với nhau với relationship

Code:

select 
	_sinhvien.HoSV + ' ' + _sinhvien.TenSV as Hovatensinhvien,
	_monhoc.MaMH,
	_ketqua.Diem

from 
	SinhVien _sinhvien
	inner join  Ketqua _ketqua on _ketqua.MaSV = _sinhvien.MaSV
	inner join MonHoc _monhoc on _monhoc.MaMH = _ketqua.MaMH
order by Hovatensinhvien, _monhoc.MaMH

Màn hình kết quả

Bài 33 Lab4 Truy vẫn Dữ liệu

6. Danh sách khoa Anh Văn, điều kiện lọc phải sử dụng tên khoa, gồm các thông tin sau: Họ tên sinh viên, giới tính, tên khoa. Trong đó giới tính sẽ hiện dạng Nam/Nữ

Code:

select 
	_sinhvien.HoSV + ' ' + _sinhvien.TenSV as Hovatensinhvien
	,case _sinhvien.Phai
		when '1' then N'Nam'
		when '0' then N'Nữ'
	end as N'Giới tính'
	,_khoa.TenKH

from 
	SinhVien _sinhvien
	inner join  Khoa _khoa on _khoa.MaKH = _sinhvien.MaKH
where
	_khoa.TenKH = N'Anh Văn'
order by Hovatensinhvien

Màn hình kết quả:

Bài 33 Lab4 Truy vẫn Dữ liệu

7. Liệt kê bảng điểm của sinh viên khoa Tin học, gồm các thông tin: Tên khoa, Họ và tên Sinh viên, Tên môn học, Số điểm, Điểm

8. Kết quả học tập của sinh viên, gồm các thông tin: Họ tên sinh viên, Mã khoa, Tên môn học, Điểm thi, loại. Trong đó, Loại sẽ là Giỏi nếu Điềm > 8, từ 6-8 thì Loại là Khá, và nhỏ hơn 6 thì lại là Trung Bình

Bài 3: Tính toán thống kê dữ liệu

1. Cho biết điểm trung bình điểm thi theo từng môn, gồm các các thông tin: Mã môn, Tên môn và Trung bình điểm thi

Code:

select 
	_ketqua.MaMH
	,_monhoc.TenMH
	,avg(_ketqua.diem) as DiemTrungBinhthi
from 
	ketqua _ketqua 
	inner join MonHoc _monhoc on _ketqua.MaMH = _monhoc.MaMH
group by _ketqua.MaMH,_monhoc.TenMH

Màn hình kết quả:

Bài 33 Lab4 Truy vẫn Dữ liệu

2. Danh sách số môn thi của từng Sinh viên, gồm các thông tin: Họ và tên Sinh viên, Tên khoa, Tổng số môn thi

Code:

select 
	_sinhvien.HoSV + ' ' + _sinhvien.TenSV as HovaTen
	,_khoa.TenKH
into #BangTam1
from 
	sinhvien _sinhvien
	inner join Ketqua _ketqua on _ketqua.MaSV = _sinhvien.MaSV
	inner join Monhoc _monhoc on _monhoc.MaMH = _ketqua.MaMH
	inner join Khoa _khoa on _khoa.MaKH = _sinhvien.MaKH
select 
	hovaten
	,TenKH
	,count(hovaten) as Tongmonthi
from #BangTam1
group by HovaTen, TenKH
drop table #BangTam1

Màn hình kết quả:

Bài 33 Lab4 Truy vẫn Dữ liệu

NOTE - Anh xem kỹ lại tý nhá:

Cảm giác chỗ này có gì đó sai sai, Trong bảng Sinh viên tận 15 chú mà sao kết quả thì ra có 8 sinh viên. Hức, làm mình cứ loay hoay cứ tưởng câu query của mình bị sai chỗ logic inner join, right join hay left join

Để cho chắc ăn; đầu tiên mình sẽ kiểm tra bảng KetQua.

Thì cho ra 34 chú có Kết quả thi. 

Bài 33 Lab4 Truy vẫn Dữ liệu
Dữ liệu bảng Kết quả

Như vậy xem lại bảng query phía trên; nếu cộng tổng Tongmonthi: 

Bài 33 Lab4 Truy vẫn Dữ liệu
Vậy thì 34 là chuẩn rồi

Vậy thì 34 là chuẩn rồi!

Chốt lại có mấy chú Sinh viên bỏ thi :D

3. Tổng điểm của từng sinh viên, gồm các thông tin: Tên sinh viên, Tên Khoa, Phái, Tổng điểm thi

Code:

select
	sv.MaSV
	,sv.TenSV
	,case Phai
		when '1' then N'Nam'
		when '0' then N'Nữ'
	end
	as N'Phai'
	,_khoa.TenKH
	,kq.Diem
into #Tongdiem_Temp
from sinhvien sv
inner join Ketqua kq on kq.MaSV = sv.MaSV
inner join Khoa _khoa on _khoa.MaKH = sv.MaKH
select 
	TenSV
	,Phai
	,TenKH
	,Sum(Diem) as TongDiem
from #Tongdiem_Temp
group by masv, tensv,phai, TenKh	
drop table #Tongdiem_Temp	

Màn hình kết quả:

Bài 33 Lab4 Truy vẫn Dữ liệu
Kết quả bài 3

4. Cho biết tổng số sinh viên ở mỗi khoa, gồm các thông tin: Tên khoa, Tổng số sinh viên

5. Cho biết điểm cao nhất của mỗi sinh viên, gồm thông tin: Họ tên sinh viên, Điểm

6. Thông tin của môn học só tiết nhiều nhất: Tên môn học, số tiết

7. Cho biết học bổng cao nhất của từng khoa, gồm: Mã khoa, Tên Khoa, Học bổng cao nhất

8. Cho biết điểm cao nhất của mỗi môn, gồm: Tên môn, điểm cao nhất

9. Thống kê số sinh viên học của từng môn, thông tin gồm: Mã môn, Tên môn, Số sinh viên đang học

10. Cho biết môn nào có điểm thi cao nhất, gồm các thông tin: Tên môn, số tiết, Tên sinh viên, điểm

11. ..

Bài 4: Sử dụng tham số trong truy vấn

1. Cho biết danh sách những sinh viên của một khoa: Mã sinh viên, họ tên sinh viên, giới tính, tên khoa. Trong đó: Giá trị mã khoa cần xem danh sách sinh viên sẽ được người dùng nhập khi thực thi câu truy vấn

Code: 

CREATE PROCEDURE [dbo].[SinhVien_GetByKhoa]
	@MaKH nvarchar(2)
AS
select 
	_sinhvien.MaSV
	,_sinhvien.HoSV + ' ' + _sinhvien.TenSV as HovaTenSinhVien
	,case _sinhvien.Phai
		when '1' then N'Nam'
		when '0' then N'Nữ'
	end
	as N'Giới tính'
	,_khoa.TenKH
from sinhvien _sinhvien
	inner join Khoa _khoa on _khoa.MaKH = _sinhvien.MaKH
where 
	@MaKH = _sinhvien.MaKH

Màn hình kết quả:

Chúng ta sẽ sử dụng việc gọi Procedure theo cấu trúc như sau; Ví dụ Lấy danh sách Sinh viên theo khoa có mã là TH

exec SinhVien_GetByKhoa 'TH'
Bài 33 Lab4 Truy vẫn Dữ liệu
Kết quả bài 1

2. Liệt kê danh sách sinh viên có điểm môn Cơ sở dữ liệu lớn hơn một giá trị bất kỳ do người dùng sử dụng nhập vào khi thực thi câu truy vấn, thông tin gồm: Mã sinh viên, Họ tên sinh viên, Tên môn, Điểm

 

3. Cho biết kết quả thi của các sinh viên theo môn, tên môn cần xem kết quả sẽ được nhập vào khi thực thi câu truy vấn. Thông tin hiện thị: Mã Sinh viên, tên Khoa, tên Môn, Điểm

.....

Nói chung mấy cái này làm nhiều thì quen; Nhưng nếu các bạn thích làm về Data thì mình khuyên đá thêm cả mảng python ; Tại sao lại thế  bởi python nó cực mạnh trong mấy khoản này và mình đã trực tiếp trải nghiệm;

Với khoản query data đã là siêu nhanh rồi (tầm 500K bản ghi thì muỗi)

Khoản tính toán thì vô đối

Khoản maping; vẽ biểu đồ; phân tích thì đến thời điểm này mình đánh giá python khá OK. 

Chắc chỉ cần nắm rõ pandas, numpy; Matplotlib; seaborn... là OK

Mình sẽ làm 1 bài Từ database mẫu này bằng python để các bạn tham khảo! Viết thẳng trên colab ;

Còn đây https://colab.research.google.com/github/teticio/aventuras-con-textos là một số bài mẫu với data có sẵn để các bạn xem trước

Và đây https://colab.research.google.com/notebooks/welcome.ipynb?hl=vi là một số bài học cơ bản (Tiếng việt luôn cho các bạn dễ đọc)

 

 

Bài 1.2: HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019 Ngày đăng: 20/08/2022

Microsoft SQL Server là một trong những phần mềm cực kỳ tốt giúp bạn có thể quản lý dữ liệu. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách cài đặt SQL Server một cách chi tiết nhất, giúp bạn có thể tự thực hiện tại nhà. Cùng nhau tham khảo qua bài viết bên dưới nhé!

HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019

Microsoft SQL Server là gì?

Trước khi bắt đầu vào cài đặt, bạn cần hiểu về định nghĩa Microsoft SQL Server là gì trước đã. Đây là một trong những ngôn ngữ lập trình cực kỳ phổ biến đối với các lập trình viên hoặc nhà phát triển phần mềm, những người lập trình máy tính. Đây được xem là một ngôn ngữ phi thủ tục, bạn có thể sử dụng và điều khiển chúng một cách dễ dàng.
Không dài dòng nữa, chúng ta hãy cùng đi vào xem phần hướng dẫn cách cài đặt SQL Server nhé! Trong bài này, chúng ta sẽ cùng cài đặt SQL Server 2019.

Cách tải và cài đặt SQL Server 2019

Bước 1: Đầu tiên, bạn cần phải truy cập vào trang chủ và tải SQL Server 2019 về, tại đường link: https://www.microsoft.com/en-us/sql-server/sql-server-downloads. Sau đó, bạn nhấn vào nút Download như trong hình để tải về.

HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019
Cách tải và cài đặt SQL Server

 
Bước 2: Sau khi đã tải về, bạn hãy mở ứng dụng đã tải, và lựa chọn phiên bản cài đặt, tùy vào mục đích sử dụng của bạn. Ở đây, chúng ta sẽ có 3 lựa chọn khác nhau cho bạn:

  • Basic: Đây là lựa chọn đơn giản, cơ bản nhất cho bạn. Khi lựa chọn Basic, phần mềm sẽ tự động cài đặt tất cả những tính năng cơ bản nhất cho bạn.
  • Custom: Đây là một lựa chọn phù hợp cho những ai có trình độ chuyên sâu, muốn tự cấu hình phần mềm để hoạt động theo ý muốn của mình
  • Download Media: Nếu bạn lựa chọn vào mục Download Media trong khi cài đặt SQL Server 2019, hệ thống sẽ tự động tải về 1 file cài đặt Online, giúp bạn có thể cài chúng được trên nhiều thiết bị mà không cần phải load lại từ đầu.
HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019
Lựa chọn tùy chọn khi cài đặt SQL Server

 
Trong mục này, mình sẽ hướng dẫn bạn cách cài đặt SQL Server khi lựa chọn chế độ Basic. Bạn hãy nhấn vào Basic >> Accept >> Install để tiến hành cài đặt phần mềm nhé!

Bước 3: Sau khi giao diện mới hiện ra, bạn hãy nhấn vào ô Customize để nhé:

HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019
Nhấn vào Customize để cài đặt SQL Server 2019

Bước 4: Tại ô cửa sổ đầu tiên, bạn nhấn vào Next như bình thường.

Bước 5: Sau đó, hệ thống sẽ kiểm tra lại xem các thư mục đã đạt yêu cầu chưa, nếu có, giao diện sẽ hiển thị các dấu tick xanh như hình. Riêng với mục Firewall, thường thì chúng sẽ hiển thị dấu chấm than màu vàng, nhưng điều này không ảnh hưởng quá nhiều đến quá trình cài đặt SQL Server, bạn có thể cho qua và tiếp tục nhấn Next.

HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019
Cách cài đặt SQL Server 2019

Bước 6: Ở giao diện tiếp theo, trong mục Product Key, bạn nhấn chọn vào developer và tiếp tục nhấn vào Next:

HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019
Nhấn vào Developer để tiếp tục cài đặt SQL Server

Tiếp theo, bạn nhấn vào I accept như hình và tiếp tục nhấn Next:

HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019
Nhấn vào I accept để cài đặt SQL Server

Bước 7: Trong mục Features như hình, bạn chọn vào ô Database Engine Services, Client Tools Connectivity và Data Quality Client, sau đó chọn Next

HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019

 

HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019
Cách cài đặt và tải SQL Server


Bước 8: Đến với giao diện tiếp theo là Feature Configuration, bạn có thể đặt tên cho Instance (lưu ý: bạn cần đặt tên theo cú pháp là không dấu, không khoảng trắng), sau đó bạn nhấn Next:

HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019
Đặt tên cho Instance - Cài đặt SQL Server

Bước 9: Tại giao diện này, bạn hãy chọn vào chức năng Mixed Mode như hình (Giải thích thêm: Đây là tính năng giúp bảo mật cho các thông tin, dữ liệu của bạn). Sau đó, bạn nhập mật khẩu vào, sau đó click chuột vào Add current User để thêm tài khoản vào nhé. 

Sau khi hoàn tất các bước trên, bạn hãy nhấn vào mục Next:

HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019

Bước cuối cùng: Bây giờ, bạn chỉ cần nhấn vào Install và chờ cho file cài đặt xong là đã hoàn tất rồi đấy. Sau khi file được cài đặt hoàn tất, bạn hãy nhấn vào Close để đóng cửa sổ và truy cập vào ứng dụng đã cài đặt để sử dụng bình thường.

HƯỚNG DẪN CÀI ĐẶT SQL SERVER 2019
Nhấn vào Install để hoàn tất cài đặt SQL Server 2019

Tổng kết

Hy vọng qua bài viết này, bạn đã hiểu và biết cách cài đặt SQL Server. Nếu bạn thấy bài viết này hữu ích, đừng quên chia sẻ chúng với mọi người nhé. 
 

Bài 1.1: Giới thiệu về CSDL SQL SERVER Ngày đăng: 20/08/2022

SQL là một ngôn ngữ tiêu chuẩn để lưu trữ, thao tác và truy xuất dữ liệu trong cơ sở dữ liệu.

1. SQL là gì?

SQL là một ngôn ngữ tiêu chuẩn để lưu trữ, thao tác và truy xuất dữ liệu trong cơ sở dữ liệu.

Hướng dẫn tự học SQL của cafedev sẽ dạy bạn cách sử dụng SQL trong các hệ quản trị cơ sở sau đây: MySQL, SQL Server, MS Access, Oracle, Sybase, Informix, Postgres, và các hệ thống cơ sở dữ liệu khác.

  • SQL là viết tắt của Structured Query Language
  • SQL cho phép bạn truy cập và thao tác cơ sở dữ liệu
  • SQL trở thành tiêu chuẩn của Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) vào năm 1986 và của Tổ chức Tiêu chuẩn hóa Quốc tế (ISO) vào năm 1987

2. SQL có thể làm được gì?

  • SQL có thể thực thi các truy vấn đối với cơ sở dữ liệu
  • SQL có thể lấy dữ liệu từ cơ sở dữ liệu
  • SQL có thể chèn các bản ghi trong cơ sở dữ liệu
  • SQL có thể cập nhật các bản ghi trong cơ sở dữ liệu
  • SQL có thể xóa bản ghi khỏi cơ sở dữ liệu
  • SQL có thể tạo cơ sở dữ liệu mới
  • SQL có thể tạo bảng mới trong cơ sở dữ liệu
  • SQL có thể tạo các thủ tục được lưu trữ trong cơ sở dữ liệu
  • SQL có thể tạo dạng xem trong cơ sở dữ liệu
  • SQL có thể đặt quyền trên bảng, thủ tục và dạng xem

Từ đó chúng ta lấy và quản lý được dữ liệu để hiển thị lên ứng dụng tương ứng như các ứng dụng của iOS, Android, Web, Game…

3. SQL là một tiêu chuẩn – NHƯNG cũng có một số ngoại lệ

Mặc dù SQL là một tiêu chuẩn ANSI / ISO nhưng nó có những phiên bản khác nhau của ngôn ngữ SQL.

Tuy nhiên, để tuân thủ tiêu chuẩn ANSI, tất cả chúng đều hỗ trợ ít nhất các lệnh chính (chẳng hạn như SELECT, UPDATE, DELETE, INSERT, WHERE) theo cách tương tự.

Nhưng đa số đều giống nhau nên chỉ cần bạn học và sử dụng tốt SQL chuẩn thì bạn có thể dùng nó trên bất cứ hệ quản trị cơ sở dữ liệu nào ở trên.

4. RDBMS – hệ quản trị cơ sỡ dữ liệu quan hệ là gì?

RDBMS là viết tắt của Relational Database Management System.

RDBMS là cơ sở cho SQL và cho tất cả các hệ thống cơ sở dữ liệu hiện đại như MS SQL Server, IBM DB2, Oracle, MySQL và Microsoft Access…

Dữ liệu trong RDBMS được lưu trữ trong các đối tượng cơ sở dữ liệu được gọi là bảng. Bảng là một tập hợp các mục dữ liệu có liên quan và nó bao gồm các cột và hàng.

5. Sử dụng SQL trong trang web của bạn

Để xây dựng một trang web hiển thị dữ liệu từ cơ sở dữ liệu, bạn sẽ cần:

  • Chương trình cơ sở dữ liệu RDBMS(RDBMS là viết tắt của Relational Database Management System có nghĩa là hệ quản trị cơ sỡ dữ liệu quan hệ) (tức là MS Access, SQL Server, MySQL, ….)
  • Sử dụng ngôn ngữ script từ phía máy chủ, như PHP hoặc ASP, Javascript
  • Cách sử dụng SQL để lấy dữ liệu bạn muốn
  • Sử dụng HTML / CSS để tạo UI cho trang

6. Sử dụng SQL trong mobile app

Để xây dựng một app hiển thị dữ liệu từ cơ sở dữ liệu, bạn sẽ cần:

  • Chương trình cơ sở dữ liệu RDBMS cho mobile (tức là MySQL, PostgreSQL, SQLite, ….)
  • Sử dụng ngôn ngữ lập trình mobile app: Swift, Kotlin, Java, Flutter…
  • Cách sử dụng SQL để lấy dữ liệu bạn muốn

7. Sử dụng tool gì để thực hành SQL

Còn tuỳ vào dự án của bạn dùng RDBMS, thì sẽ dùng ứng dụng tương ứng của nó.

Ví dụ:

  • MySQL – Bạn tải app MySQL
  • PostgreSQL – Bạn tải app PostgreSQL
  • MS SQL Server – Bạn tải app MS SQL Server

… – ….

Ở đây bạn đang học nên mình khuyên bạn nên dùng các tool trên web cho nhanh gọn nhẹ trong việc thực hành. Bạn có thể tham khảo web này.

8. Dữ liệu mẫu và cấu trúc các bảng dùng cho series này

Cấu trúc bảng

Các bảng này là kết quả sau khi chạy file dữ liệu bên dưới.

Giới thiệu về CSDL SQL SERVER
Bảng category
Giới thiệu về CSDL SQL SERVER
Bảng customer
Giới thiệu về CSDL SQL SERVER
Bảng Employee
Giới thiệu về CSDL SQL SERVER
Bảng Order Detail
Giới thiệu về CSDL SQL SERVER
Bảng Order
Giới thiệu về CSDL SQL SERVER
Bảng Product
Giới thiệu về CSDL SQL SERVER
Bảng Shipper
Giới thiệu về CSDL SQL SERVER
Bảng Supplier


Bạn tải các file sql sau đây và import nó vào ứng dụng tương ứng của bạn sau đó run nó để tạo ra cơ sở dữ liệu và bản để bạn thực hành các bài tiếp theo nhé.

Nếu bạn dùng web này, bạn chọn import file -> chọn file sql_demo_cafedev.sql -> chọn run -> bạn sẽ thấy cơ sở dữ liệu cafedev được tạo ra cùng với nhiều bản có data sẵn cho bạn thực hành.