1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng môn học Hệ cơ sở dữ liệu: Chương 4 - Nguyễn Như Hoa

81 28 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 81
Dung lượng 2,25 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Hệ cơ sở dữ liệu - Chương 3: Ngôn ngữ SQL cung cấp cho người học các kiến thức: Giới thiệu về ngôn ngữ SQL, định nghĩa dữ liệu, truy vấn dữ liệu, cập nhật dữ liệu. Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

Chương 4

Ngôn ngữ SQL

Giáo trình & Tài liệu tham khảo:

1 Ramez Elmasri, Shamkant B Navathe, 2011 Fundamentals of Database

systems, 6th edition, Addison-Wesley

2 Giáo trình Cơ sở dữ liệu , Trần Đắc Phiến, ĐH Công nghiệp TPHCM

3 Bộ slide bài giảng của Nguyễn Minh Thư, Khoa CNTT, ĐH KHTN TPHCM

4 Bộ slide bài giảng của Trần Thị Kim Chi, Khoa CNTT, ĐH Công nghiệp TPHCM

Gv Nguyễn Như Hoa

1

Trang 3

Giới thiệu

• SQL (Structured Query Language)

– Ngôn ngữ cấp cao

– Ngôn ngữ phi thủ tục

– Được sử dụng để thao tác với SQL Database

– Được phát triển bởi IBM (1970s)

– Được gọi là SEQUEL (Structured English Query Language)

– Được ANSI công nhận và phát triển thành chuẩn với các phiên bản

Trang 4

– Định nghĩa Ràng buộc toàn vẹn

– Phân quyền và bảo mật

– Điều khiển giao tác

Trang 6

Giới thiệu

• MS SQL Server

– Là một Relational DBMS do Microsoft phát triển

– Là một database server (software)

– Hỗ trợ giao diện GUI và command line

– Hỗ trợ nhiều chức năng

• To create databases

• To maintain databases

• To analyze the data through SQL Server Analysis Services (SSAS)

• To generate reports through SQL Server Reporting Services (SSRS)

• To build high-performance data integration solutions, including extraction, transformation, and load (ETL) packages for data warehousing through SQL Server Integration Services (SSIS)

6

Tham khảo : https://docs.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver15

Trang 7

Giới thiệu

• MS SQL Server Management Studio (SSMS)

– Là công cụ cho phép user quản lý database và

instance

– Là công cụ quản lý tập trung tất cả các thành

phần của SQL server , Azure SQL Database, và SQL

Data Warehouse (Access, configure, manage,

administer, and develop )

7

Tham khảo : management-studio-ssms?view=sql-server-ver15

Trang 8

https://docs.microsoft.com/en-us/sql/ssms/sql-server-Định nghĩa dữ liệu (DDL)

• Nhóm lệnh Định nghĩa dữ liệu

(Data Definition Language commands) gồm

– Tạo Cơ sở dữ liệu

Trang 9

Tạo Database

• Ví dụ

CREATE DATABASE Sample

ON PRIMARY ( NAME=SampleData, FILENAME='c:\Program Files\ \ \Data\Sample.mdf', SIZE=10MB,

MAXSIZE=15MB, FILEGROWTH=20%) LOG ON

( NAME=SampleLog, FILENAME= 'c:\Program Files\ \ \Data\Sample.ldf', SIZE=3MB,

MAXSIZE=5MB, FILEGROWTH=1MB)

Trang 10

Tạo Database

• Tạo Database = thực hiện khai báo các file lưu trữ

• Một Database bao gồm hai hay nhiều tập tin

– Một (hay nhiều) file data và một (hay nhiều) file log

• File data lưu dữ liệu, file log lưu nhật ký giao tác – Qui ước phần đuôi của tên file

• File dữ liệu cơ bản (Primary data file) mdf => chỉ có 1 file

• Các file thứ cấp (Secondary data files, tùy chọn) ndf

• File nhật ký giao dịch (Transaction log file) ldf

– Các file này có thể nằm trên những đĩa vật lý khác nhau

để cải thiện việc thực thi của hệ thống

10

Trang 11

Tạo Database

• Thông tin của mỗi file bao gồm

• Filegroup : Các file data có thể nằm trên những đĩa vật lý khác

nhau, nhưng đặt trong cùng một filegroup

– một table được chỉ định đặt trong một filegroup => dữ liệu của table sẽ được đặt trải ra trên các đĩa , giúp tăng hiệu năng khi truy suất

– Luôn có một Primary filegroup

• Tên logic

• Vị trí lưu trữ vật lý

• Kích thước ban đầu

• Kích thước tối đa

• Kích thước tăng mỗi lần

(

11

Trang 12

2 data file thuộc

Trang 13

Tạo Database

• Cú pháp lệnh

• Ví dụ : lệnh sau sẽ tạo một database với các tham số mặc định

Create database defaultDB

Tham khảo https://docs.microsoft.com/

Chú ý : các từ khóa, và qui ước về đặt dấu ( ) , dấu phẩy , …

13

Trang 14

Các lệnh T-SQL quản lý database

Xóa cơ sở dữ liệu: Khi 1 CSDL bị xóa thì tất cả các

file vật lý của nó sẽ bị xóa

Cú pháp:

DROP DATABASE database_name

Ví dụ:

Drop database Banhang

Đổi tên cơ sở dữ liệu:

Cú pháp: sp_renamedb 'old_name', 'new_name‘

14

Trang 15

• Người dùng có thể định nghĩa các kiểu dữ liệu

mới (user-defined data types) dựa trên các

kiểu dữ liệu có sẵn

15

Trang 17

Kiểu dữ liệu

char [ ( n ) ] Fixed-size string data n defines the string size in bytes and must be a

value from 1 through 8,000

varchar [ ( n | max ) ] Variable-size string data Use n to define the string

size in bytes and can be a value from 1 through 8,000 or use max to

indicate a column constraint size up to a maximum storage of 2^31-1 bytes (2 GB)

Tham khảo : https://docs.microsoft.com

Trang 18

Kiểu dữ liệu

18

Trang 19

Kiểu dữ liệu

• Định nghĩa một kiểu dữ liệu (user-defined data types ):

Cú pháp:

sp_addtype type , system_data_type [,'NULL' | 'NOT NULL']

Ví dụ: Tạo kiểu dữ liệu tên là isbn với kiểu dữ liệu cơ bản là smallint và không chấp nhận giá trị Null

exec sp_addtype isbn, ‘smallint’, ‘NOT NULL’

• Liệt kê các user-defined data types trong CSDL hiện hành:

Dùng thủ tục sp_help , hoặc

truy vấn trong information_schema.domains

• Xoá một User-Defined Data Type:

Cú pháp: sp_droptype type

19

Trang 20

Các lệnh T-SQL về table

• Các lệnh về table

– CREATE TABLE (tạo bảng)

– DROP TABLE (xóa bảng)

– ALTER TABLE (sửa bảng)

– Xem thông tin về table

• Khai báo các ràng buộc toàn vẹn khi định nghĩa table

– Primary key, foreign key

Trang 21

)

RBTV áp dụng cho toàn bộ table

RBTV áp dụng cho 1 cột

21

Trang 22

Tạo table

CREATE TABLE NHANVIEN (

MANV CHAR (9), HOTEN VARCHAR (30), PHAI CHAR (3),

LUONG INT ,

CREATE TABLE NHANVIEN (

MANV CHAR (9) not null primary key , HOTEN VARCHAR (30),

PHAI CHAR (3) check (PHAI like ‘nam’ or PHAI like ‘nu’) , LUONG INT ,

PHG INT references PHONGBAN(MAPB) )

Tạo một table không có

các khai báo ràng buộc

Tạo một table có khai

Trang 23

Tạo table

CREATE TABLE PHANCONG (

MANV CHAR(9) NOT NULL, SODA INT NOT NULL, THOIGIAN DECIMAL(3,1) NOT NULL,

PRIMARY KEY (MANV, SODA), FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV), FOREIGN KEY (SODA) REFERENCES DEAN(MADA),

CHECK (thoigian  0) )

Tạo một table có khai báo

ràng buộc ở mức table

CREATE TABLE PHANCONG (

MANV CHAR (9) not null REFERENCES NHANVIEN(MANV), SODA INT not null REFERENCES DEAN(MADA),

THOIGIAN DECIMAL (3,1) not null CHECK (THOIGIAN > 0), PRIMARY KEY (MANV, SODA) )

Lệnh sau cho kết quả tương đương

Chỉ có 1 khai báo Primary key

Trang 24

Tạo table

CREATE TABLE NHANVIEN (

MANV CHAR (9) not null CONSTRAINT nv_pk primary key ,

HOTEN VARCHAR (30),

PHAI CHAR (3) CONSTRAINT nv_chk_phai check (PHAI like ‘nam’ or PHAI like ‘nu’),

LUONG INT ,

PHG INT CONSTRAINT nv_fk_pb references PHONGBAN(MAPB) )

Tạo một table , có đặt tên cho ràng buộc

Nếu không , hệ thống sẽ tự đặt

CREATE TABLE NHANVIEN (

MANV CHAR(9) not null,

HOTEN VARCHAR(30),

PHAI CHAR(3),

LUONG INT,

PHG INT ,

CONSTRAINT nv_pk primary key (MANV),

CONSTRAINT nv_fk_pb Foreign key(PHG) references PHONGBAN(MAPB),

CONSTRAINT nv_chk_phai check (PHAI like ‘nam’ or PHAI like ‘nu’) )

Lệnh cho kết quả tương đương

24

Trang 25

Tạo table

CREATE TABLE PHONGBAN (

TENPB VARCHAR (20) UNIQUE , MAPHG INT NOT NULL ,

TRPHG CHAR (9), NG_NHANCHUC DATETIME DEFAULT ( GETDATE() ) )

Tạo một table , có chứa khai báo ràng buộc unique và default

CREATE TABLE PHONGBAN (

TENPB VARCHAR (20),

MAPHG INT NOT NULL ,

TRPHG CHAR (9),

NG_NHANCHUC DATETIME ,

CONSTRAINT pb_uni_tenpb UNIQUE (TENPB) ,

CONSTRAINT pb_def_ngay DEFAULT ( GETDATE() ) FOR (NG_NHANCHUC) )

Lệnh cho kết quả tương đương

25

Trang 26

Tạo table

Tạo một table ,

đặt table vào 1 filegroup

CREATE TABLE SanPham

( Masp smallint CONSTRAINT sp_nonull_masp NOT NULL ,

Tensp char(20) NOT NULL , Mota char(30) NULL ,

Gia smallmoney NOT NULL

)

Tạo một table , với khai báo ràng buộc NULL / NOT NULL

CREATE TABLE NHANVIEN (

MANV CHAR (9), HOTEN VARCHAR (30), PHAI CHAR (3),

LUONG INT , PHG INT )

ON SalesGroup1 ;

26

Trang 27

Tạo table Tạo một table , với ràng buộc khóa ngoại

Định nghĩa FOREIGN KEY CONSTRAINT khi tạo bảng

CREATE TABLE TableName

(columnName datatype [,…],

[CONSTRAINT constraintName]

FOREIGN KEY[(column[, n])]

REFERENCES ref_table [ ( ref_column [, n])]) ]

[ ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT} ] [ ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT} ]

27

Trang 28

MANV TENNV NGSINH PHGBAN

NHANVIEN ( MANV, TENNV, NGSINH , PHGBAN )

PHONGBAN ( MAPB , TENPB )

Trang 29

CREATE TABLE NHANVIEN (

MANV CHAR (9) not null primary key , TENNV VARCHAR (30),

NGAYSINH DATE, PHGBAN INT references PHONGBAN(MAPB) )

CREATE TABLE NHANVIEN (

MANV CHAR (9) not null primary key , TENNV VARCHAR (30),

NGAYSINH DATE, PHGBAN INT references PHONGBAN(MAPB)

ON DELETE NO ACTION

ON UPDATE NO ACTION )

CREATE TABLE NHANVIEN (

MANV CHAR (9) not null primary key , TENNV VARCHAR (30),

NGAYSINH DATE, PHGBAN INT references PHONGBAN(MAPB)

Trang 31

Thay đổi thiết kế của table

ALTER TABLE <Tên_bảng> ADD

<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>]

ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột>

ALTER TABLE <Tên_bảng> ALTER COLUMN

<Tên_cột> <Kiểu_dữ_liệu_mới>

ALTER TABLE <Tên_bảng> ADD

CONSTRAINT <Ten_RBTV> <RBTV>, CONSTRAINT <Ten_RBTV> <RBTV>,

ALTER TABLE <Tên_bảng> DROP <Tên_RBTV>

Thay đổi RBTV : Thêm / xóa RBTV

Thay đổi cấu trúc bảng : Thêm / xóa / sửa cột

31

Trang 32

Thay đổi thiết kế của table

ALTER TABLE NHANVIEN ADD

HOPDONG CHAR(20)

ALTER TABLE NHANVIEN DROP COLUMN HOPDONG

ALTER TABLE NHANVIEN ALTER COLUMN

HOPDONG CHAR(10) CHECK (HOPDONG in ( ‘full’ , ‘temp’) )

CREATE TABLE PHONGBAN (

TENPB VARCHAR (20), MAPHG INT NOT NULL PRIMARY KEY , TRPHG CHAR (9) REFERENCES NHANVIEN(MANV),

NG_NHANCHUC DATETIME )

ALTER TABLE PHONGBAN ADD

CONSTRAINT PB_NGNHANCHUC_DF DEFAULT ( GETDATE() )

Trang 33

• Xóa một table khi nó có mối liên hệ với những table khác ?

– Nếu là table con (table chứa khóa ngoại) -> xóa được , đồng thời sẽ xóa luôn ràng buộc với table cha

– Nếu là table cha : Xóa ràng buộc khóa ngoại trên table con , rồi xóa table cha

– Vdụ : muốn xóa 2 table NHANVIEN - PHONGBAN

Cho biết thứ tự xóa ?

DROP TABLE <Tên_bảng>

DROP TABLE NHANVIEN

33

Trang 34

Thao tác dữ liệu (DML)

• Nhóm lệnh Thao tác dữ liệu (Data

Manipulation Language) gồm các lệnh

– truy vấn dữ liệu : select

– cập nhật dữ liệu : Insert , update, delete

34

Trang 35

WHERE <điều kiện>

MaSV HoSV TenSV Lop Namsinh Khoa

201007 Lâm Phước Hòa CS01TT 1998 CNTT

201008 Huỳnh Huy Hoàng CS01TT 1999 CNTT

201009 Lê Hồng Khải CS01TT 1999 CNTT

201010 Phan Nhật Duy Khanh CS01TT 1999 CNTT

SINHVIEN

35

Trang 36

MaSV HoSV TenSV Lop Namsinh Khoa

201007 Lâm Phước Hòa CS01TT 1998 CNTT

201008 Huỳnh Huy Hoàng CS01TT 1999 CNTT

201009 Lê Hồng Khải CS01TT 1999 CNTT

201010 Phan Nhật Duy Khanh CS01TT 1999 CNTT

MaSV HoSV TenSV Lop Namsinh Khoa

201007 Lâm Phước Hòa CS01TT 1998 CNTT

201008 Huỳnh Huy Hoàng CS01TT 1999 CNTT

(1) Lấy toàn bộ dữ liệu

(2) Lọc lấy 4 cột , và lấy tất cả record

36

Trang 37

MaSV HoSV TenSV Lop Namsinh Khoa

201007 Lâm Phước Hòa CS01TT 1998 CNTT

201008 Huỳnh Huy Hoàng CS01TT 1999 CNTT

201009 Lê Hồng Khải CS01TT 1999 CNTT

201010 Phan Nhật Duy Khanh CS01TT 1999 CNTT

MaSV HoSV TenSV Lop Namsinh Khoa

201007 Lâm Phước Hòa CS01TT 1998 CNTT

201008 Huỳnh Huy Hoàng CS01TT 1999 CNTT

Trang 38

MaSV HoSV TenSV Lop Ngaysinh Khoa

201007 Lâm Phước Hòa CS01TT 30/1/1998 CNTT

201008 Huỳnh Huy Hoàng CS01TT 26/1/1999 CNTT

201009 Lê Hồng Khải CS01TT 11/2/1999 CNTT

201010 Phan Nhật Duy Khanh CS01TT 20/5/1999 CNTT

MaSV HoSV TenSV Lop Ngaysinh Khoa

201007 Lâm Phước Hòa CS01TT 30/1/1998 CNTT

201008 Huỳnh Huy Hoàng CS01TT 26/1/1999 CNTT

Trang 39

Select MaSV, Hoten = HoSV +’ ‘ + TenSV

201007 Lâm Phước Hòa

201008 Huỳnh Huy Hoàng

(7) Nối dữ liệu trong 2 cột HoSV và TenSV thành một

cột trong tập kết quả , và gán tên cột là HOTEN

Select MaSV, HoSV +’ ‘ + TenSV as HOTEN

(9) Loại bỏ những dòng trùng nhau trong tập dữ liệu trả về

Select DISTINCT Lop

From SINHVIEN

Lop

C10CK1 C10CK1 C10DC1 C10DC1 C10DC1 CS01TT CS01TT CS01TT CS01TT CS01TT

(8) Truy vấn dữ liệu từ table , tính toán , và tạo thành cột mới

Select MaSV, Tuoi = 2020 – year(Ngaysinh)

From SINHVIEN

(10) Chỉ lấy n record đầu tiên trong tập dữ liệu trả về

Select TOP 6 *

Trang 40

Truy vấn dữ liệu

căn bản

• Biểu thức điều kiện trong mệnh đề WHERE

– Là biểu thức boolean xác định dòng nào sẽ được rút trích – Sử dụng

• Phép toán so sánh dữ liệu số : >, >=, <, <=, =, <>, between … and

• Phép toán so sánh chuỗi : LIKE , nối chuỗi + , ký hiệu đại diện % , _

• Các phép toán so sánh tập hợp IN , NOT IN

• Biểu thức boolean có thể là biểu thức phức => Dùng toán tử AND,

OR nối các biểu thức con

• Toán tử phủ định NOT : NOT LIKE, NOT between… and

– Sử dụng các hàm hỗ trợ bởi T-SQL để tính toán

40

Trang 41

Truy vấn dữ liệu

căn bản

Biểu thức điều kiện trong WHERE Công dụng

Ngaysinh like ‘1998-01-21’ Lọc record có Ngaysinh là 21-01-1998 Ngaysinh like ‘1999 _-01’ Lọc record có Ngaysinh là ngày 1, năm

1999 year(ngaysinh) = 1999 AND day(ngaysinh) = 1 Lọc record có Ngaysinh là ngày 1, năm

1999 Ngaysinh IS NULL Loc record có Ngaysinh là NULL

Year(ngaysinh) <> 1999 Loc record có Ngaysinh thỏa năm không là

1999 Year(ngaysinh) != 1999 Loc record có Ngaysinh thỏa năm không là

1999 TenSV IN (‘hoa’, ‘khanh’) Loc record có TenSV là ‘hoa’ hoặc ‘khanh’

Ví dụ Biểu thức điều kiện trong mệnh đề WHERE

41

Trang 42

– Left outer join

– Right outer join

Trang 43

Select a.*, b.*

From SINHVIEN a INNER JOIN NGANH b ON a.MaNganh = b.MaNganh

201010 Phan Nhật Duy Khanh CS01TT DS

MaSV HoSV TenSV Lop Manganh MaNganh TenNganh SoTC

201001 Huỳnh Nhất Luận C10CK1 CS CS Computer science 150

201002 Nguyễn Anh Tuấn C55CK1 CS CS Computer science 150

Inner join Ứng với mỗi record của bảng bên trái (a) , thực hiện phép kết

bằng trên cột MaNganh với mỗi

record của bảng bên phải (b)

43

Trang 44

Select MaSV, TenSV, TenNganh

From SINHVIEN a INNER JOIN NGANH b ON a.MaNganh = b.MaNganh

Select MaSV, TenSV, TenNganh

From SINHVIEN a LEFT JOIN NGANH b ON a.MaNganh = b.MaNganh

Select MaSV, TenSV, TenNganh

From SINHVIEN a RIGHT JOIN NGANH b ON a.MaNganh = b.MaNganh

MaSV TenSV TenNganh

201001 Luận Computer science

201002 Tuấn Computer science

MaSV TenSV TenNganh

201001 Luận Computer science

201002 Tuấn Computer science

201009 Khải

201010 Khanh

MaSV TenSV TenNganh

201001 Luận Computer science

201002 Tuấn Computer science

Software Engineering Information System Information Technology

Select MaSV, TenSV, TenNganh

From SINHVIEN a INNER JOIN NGANH b ON a.MaNganh = b.MaNganh

Where Lop like ‘%55%’

MaSV TenSV TenNganh

201002 Tuấn Computer science

Select MaSV, TenSV, TenNganh

From SINHVIEN a , NGANH b

Where a.MaNganh = b.MaNganh

Cách viết khác

44

Trang 45

WHERE <điều kiện>

ORDER BY <cột1> ASC | DESC [, … ]

Select * From SINHVIEN Where month(Ngaysinh) = 1 Order by HoSV ASC

Select * From SINHVIEN Where month(Ngaysinh) = 1 Order by HoSV ASC , TenSV DESC

(1)

(2)

45

Ngày đăng: 04/11/2020, 07:02

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm