SQL (structured query language) là ngôn ngữ dùng để truy vấn các dữ liệu có cấu trúc. SQL được hỗ trợ ở hầu hết các hệ thống quản lý cơ sở dữ liệu như MS Access, SQL server, MySQL, Postgres, …Các câu lệnh trong SQL được phân chia thành 3 loại chính:Data DefinitionData ManipulationData ControlCác lệnh cơ bảnData Definition1.Lệnh Create Table:Câu lệnh Create Table dùng để tạo bảng dữ liệu.Cấu trúc chính của lệnh Create TableCreate Table table_name(column_name1 data_type(size) attributes,column_name2 data_type(size) attributes,column_name3 data_type(size) attributes,…
Giới thiệu tổng quát: Các lệnh cơ bản Data Definition 1.Lệnh Create Table: 2.Lệnh Drop Table Data Manipulation 1.Lệnh Insert Into 2.Lệnh Select Gi i thi u t ng quát:ớ ệ ổ SQL (structured query language) là ngôn ngữ dùng để truy vấn các dữ liệu có cấu trúc. SQL được hỗ trợ ở hầu hết các hệ thống quản lý cơ sở dữ liệu như MS Access, SQL server, MySQL, Postgres, … Các câu lệnh trong SQL được phân chia thành 3 loại chính: -Data Definition -Data Manipulation -Data Control Các l nh c b nệ ơ ả Data Definition 1.L nh Create Table:ệ Câu lệnh Create Table dùng để tạo bảng dữ liệu. Cấu trúc chính của lệnh Create Table Create Table table_name ( column_name1 data_type(size) [attributes], column_name2 data_type(size) [attributes], column_name3 data_type(size) [attributes], … [constraints] ) Ví dụ Tạo bảng dữ liệu tên là Customer, với các cột dữ liệu sau: -CustID kiểu Int, không được trống, là khoá chính -CustName kiểu Nvarchar(30), không được trống -ShipCity kiểu Nvarchar(30), được trống -Discount kiểu Float, được trống Create Table Customer ( 1/7 CustID Int Not Null Primary Key, CustName NvarChar(30) Not Null, ShipCity NvarChar(30) Null, Discount Float Null ) Tạo bảng dữ liệu Employee với các các cột dữ liệu và ràng buộc(constraint) sau: -EmpId kiểu Int, không được trống, là khoá chính -FirstName kiểu Nvarchar(30), không được trống -LastName kiểu Nvarchar(30), không được trống -MgrEmpId kiểu Int, được trống -Ràng buộc tên là FkEmpMgr có MgrEmpId là khoá ngoại tham khảo đến EmpId trong bảng Employee. Create Table Employee ( EmpID Int Not Null Primary key, FirstName NvarChar(30) Not Null, LastName VarChar(30) Not Null, MgrEmpId Int Null , Constraint FkEmpMgr Foreign Key (MgrEmpId) References Employee (EmpId) ) Tạo bảng SaleOrder Create Table SaleOrder ( OrderID Int Primary key, CustID Int Not Null, TotalAmount Money Not Null, SaleDate DateTime Not Null, ShipDate DateTime Null, EmpID Int Constraint FkSaleCust Foreign Key (CustID) References Customer (CustID) Constraint FK_SaleEmp Foreign Key(EmpID) References Employee (EmpID) ) 2.L nh Drop Tableệ Câu lệnh Drop Table dùng để xoá bảng dữ liệu. Cấu trúc chính của lệnh Drop Table Drop Table table_name 2/7 Data Manipulation 1.L nh Insert Intoệ Lệnh Insert Into dùng để thêm dữ liệu trong bảng dữ liệu Cấu trúc của lệnh Insert Into Insert Into table_name(column_list) Values(value_list) Ví dụ Thêm vào bảng Employee nhân viên mới có thông tin như sau: (EmpID = 1, FirstName = ‘Peter', LastName = ‘Chang') Insert Into Employee(EmptID, FirstName, LastName) Values(1, ‘Peter', ‘Chang') Bài tập a.Thêm các nhân viên sau vào bảng Employee EmpID FirstName LastName MgrEmpId 2 Mary Wong 3 Paul Brown 1 4 Maggie Cross 2 5 John Perry 2 b.Thêm các khách hàng sau vào bảng Customer CustId CustName ShipCity Discount 1 Linda Nguyen Ho Chi Minh 0 2 Neal Caffrey Singapore 0.1 3 Derek Nguyen Ha Noi 0.05 4 Alex Hunter Singapore 0 c.Thêm các hoá đơn sau vào bảng SaleOrder OrderId CustId ToatalAmount SaleDate ShipDate EmpId 1 1 1000 23/01/2014 29/01/2014 3 2 1 1500 08/02/2014 11/02/2014 4 3 2 2000 05/02/2014 15/02/2014 4 4 3 1800 30/01/2014 21/02/2014 5 5 4 1200 20/02/2014 27/02/2014 5 2.L nh Selectệ Lệnh Select dùng để truy xuất dữ liệu. Cấu trúc của lệnh Select Select [Distinct] [Top n / Top n Percent] Column list From Table list [Where condition] [Group By col name [Having condition] ] 3/7 [Order By <col> [ASC] [, <col> [DESC] ]…. ] [Compute AggregateFunction(col) ] Các phép toán sử dụng trong lệnh Select: > >= < <= = <> Is Null Is Not Null Between … And … In (value lists) Like : % string % Not And Or Một số hàm sử dụng trong SQL count(column_name) sum(column_name) avg(column_name) max(column_name) min(column_name) Hàm thời gian getdate() day(date_column) month(date_column) year(date_column) datepart(datepart_name, date_column) datepart : day, month, year, dayofyear, week, weekday, hour, minute, second Ví dụ Lấy tất cả dữ liệu của nhân viên Select EmpId, FirstName, LastName, MgrEmpId From Employee Lấy dữ liệu CustId, CustName, Discount của khách hàng, sắp xếp giảm dần theo Discount Select CustId, CustName, Discount From Customer Order By Discount DESC Lấy dữ liệu của nhân viên có EmpId bằng 3 Select EmpId, FirstName, LastName, MgrEmpId From Employee Where EmpId = 3 Lấy dữ liệu khách hàng có ShipCity là ‘Ha Noi' Select CustId, CustName, Discount 4/7 From Customer Where ShipCity = ‘Ha Noi' Lấy dữ liệu khách hàng trong tên có từ ‘Nguyen' Select CustId, CustName, Discount, ShipCity From Customer Where CustName Like ‘%Nguyen%’ Lấy dữ liệu khách hàng có ShipCity là ‘Ha Noi' hay ‘Ho Chi Minh' Select CustId, CustName, Discount From Customer Where ShipCity = ‘Ha Noi' or ShipCity = ‘Ho Chi Minh' Lấy dữ liệu khách hàng trong tên có từ ‘Nguyen' và có ShipCity là ‘Ha Noi' Select CustId, CustName, Discount, ShipCity From Customer Where CustName Like ‘%Nguyen%’ And ShipCity = ‘Ha Noi' Lấy dữ liệu CustId, CustName, Discount, ShipCity của khách hàng có Discount từ 4% đến 9% Select CustId, CustName, Discount From Customer Where Discount Between 0.04 And 0.09 Select CustId, CustName, Discount From Customer Where Discount > 0.04 And Discount < 0.09 Đếm số lượng nhân viên Select count(EmpId) as soluong From Employee Tìm giá trị Discount lớn nhất của khách hàng Select max(Discount) as maxDiscount From Employee Lấy hoá đơn được bán trong năm 2014 Select * From SaleOrder Where year(SaleDate) = 2014 Cho biết số lượng khách hàng ở từng ShipCity Select count(ShipCity) as soluong, ShipCity From Customer Group By ShipCity 5/7 Bài tập 1/Lấy hoá đơn của khách hàng có Id là 1 2/Lấy nhân viên có FirstName có chứa ‘Ma' 3/Lấy hoá đơn có TotalAmount từ 800 đến 1300 4/Lấy hoá đơn có ShipDate là 27/02/2014 5/Lấy hoá đơn được bán trong tháng hai 6/Lấy hoá đơn được bán trong tháng hai năm 2014 7/Tính tổng số tiền của tất cả hoá đơn 8/Lấy TotalAmount lớn nhất 9/Tính số lượng hoá đơn trong năm 2014 10/Tính tổng tiền hoá đơn trong năm 2014 11/Tính số lượng hóa đơn giao trong tháng 2 năm 2014 12/Tính số số tiền hóa đơn giao trong tháng 2 năm 2014 13/Tính tổng số lượng hóa đơn của từng tháng năm 2014 theo ngày bán 14/Tính tổng số tiền hóa đơn của từng tháng năm 2014 theo ngày bán 3.Inner Join Inner join dùng để kết hợp nhiều nhiều bảng có liên quan khi truy xuất dữ liệu. Cấu trúc của Inner Join: Select column list From table_name1 Inner Join table_name2 On join_condition [Inner Join table_name3 On join_condition] Ví dụ Lấy thông tin SaleOrder có kèm thông tin nhân viên phụ trách Order Select OrderId, SaleDate, TotalAmount, FirstName, LastName From SaleOrder Inner Join Employee on SaleOrder.EmpId = Employee.EmpId Lấy hoá đơn do John phụ trách Select OrderId, SaleDate, TotalAmount, FirstName, LastName From SaleOrder Inner Join Employee on SaleOrder.EmpId = Employee.EmpId Where FirstName = ‘John' Bài tập 1/Lấy thông tin SaleOrder có kèm thông tin khách hàng 2/Lấy thông tin SaleOrder được chuyển đến Singapore 3/Lấy thông tin SaleOrder được chuyển đến Singapore trong tháng 2 năm nay 4/Lấy thông tin SaleOrder được chuyển đến Singapore trong tháng hiện tại 5/Lấy thông tin SaleOrder có kèm thông tin nhân viên phụ trách Order và thông tin khách hàng 6/Lấy thông tin SaleOrder có kèm số tiền sau khi Discount 7/Tính số hóa đơn của từng khách hàng 8/Tính số hóa đơn của từng nhân viên 9/Tính tổng tiền hóa đơn của từng khách hàng 10/Tính tổng tiền hóa đơn của từng nhân viên 6/7 4.L nh Updateệ Lệnh Update dùng để cập nhật dữ liệu. Cấu trúc của lệnh Update Update table_name Set column_name=valpue [, column_name=value] [Where condition] Ví dụ: Cập nhật tên của khách hàng có CustId = 1 thành 'Peter Burge' Update Customer Set CustName = 'Peter Burge' Where CustId = 1 Cập nhật Discount của khách hàng bằng 0 Update Customer Set Discount = 0 5.L nh Delete ệ Lệnh Delete dùng để xóa dữ liệu. Cấu trúc lệnh Delete Delete From table_name [Where condition] Ví dụ Xóa dữ liệu của nhân viên có EmpId = 1 Delete From Employee Where EmpId = 1 7/7