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

MySQL cơ bản from zero to hero

12 3 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 12
Dung lượng 191,03 KB

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

Nội dung

MySQL form Zero to Hero 1 SQL là gì SQL (Structured Query Language) là ngôn ngữ chuẩn dùng để tạo, thao túng, nhận dữ liệu từ database MySQL là một hệ quản trị CSDL quan hệ mà dùng SQL làm chuẩn 2 Creating Database and Table A Create Database Cách tạo 1 Database Syntax CREATE DATABASE name db; Sẽ tạo một db mới với tên là name db Ta có thể dùng câu lệnh SHOW DATABASES; để hiển thị danh sách db Cách xóa 1 Database Syntax DROP DATABASE name db; Cách USE 1 database cụ thể Syntax USE name db; Câu lệ.

Trang 1

MySQL form Zero to Hero

1 SQL là gì

- SQL (Structured Query Language) là ngôn ngữ chuẩn dùng để tạo, thao túng, nhận dữ liệu từ database

- MySQL là một hệ quản trị CSDL quan hệ mà dùng SQL làm chuẩn

2 Creating Database and Table

A Create Database

- Cách tạo 1 Database

o Syntax : CREATE DATABASE name_db;

o Sẽ tạo một db mới với tên là name_db

o Ta có thể dùng câu lệnh SHOW DATABASES; để hiển thị danh sách db

- Cách xóa 1 Database

o Syntax: DROP DATABASE name_db;

- Cách USE 1 database cụ thể

o Syntax: USE name_db;

o Câu lệnh sẻ chuyển hướng đến database cần dùng

o Để xem đang sử dụng db nào ta dùng câu lệnh SELECT DATABASE();

B Table

*Khía niệm cơ bản

- Table là tập hợp các dử liệu quan hệ tạo thành mỗi bảng, mổi hàng của table là một record chứa thông tin về 1 đối tượng, mỗi cột của bảng được gọi là một field chứa thông tin về 1 thuộc tính của tất cả các đối tượng

- Colum của một bảng chính là dòng header của bảng đó

- Mỗi một field trong table đều chỉ được phép có một kiểu dử liệu (data type duy nhất) để đồng nhất dữ liệu với nhau

- Các kiểu dữ liệu trong SQL

o String data type (loại kí tự)

o Numberic data type (loại số)

o Date data type (loại ngày tháng)

- Một số kiểu thường dùng

o String data type:

 Varchar(n) : là một chuỗi ký tự có độ dài từ 0->255, khi khai bá kiểu varchar

ta khai báo thêm số n là số ký tự tối đa của các dữ liệu trong filed (nằm trong khoảng 0 -> 255)

o Numberic data type:

 INT : kiểu số nguyên

o Date datatype

*Các thao tác với bảng

- Tạo bảng mới

o Syntax: CREATE TABLE name_table (

Column_name datatype, Column_name datatype );

Trang 2

- Cách để xem danh sách các bảng của db

o Syntax: SHOW TABLES

- Cách để xem danh sách columns của 1 bảng nào đó

o Syntax: SHOW COLUMNS FROM table_name;

o Hoặc

o Syntax: DESC table_name;

- Cách xóa table:

o Syntax: DROP TABLE table_name;

3 Insert Data (and a couple thing)

A Insert Data

- Cách để insert data :

o Syntax: INSERT INTO table_name (columns_name, columns_name)

VALUES (value_1, value_1), (value_2, value_2);

- Xem giá trị của 1 bảng

o Syntax: SELECT * FROM table_name;

o Lấy hết tất cả giá trị của bảng để xem

B Null trong MySQL

- Trong SQL khi tạo bảng ta có thể quyết định một columns có thể có tính NULL hay không

- Khi ta insert dữ liệu vào bảng mà ta quên đi thêm dữ liệu cho 1 vài collums hoặc ta thực hiện lệnh INSERT nhưng không truyền dữ liệu dữ cả thì trong table sẽ xuất hiển các records có giá trị là NULL

- Nếu không muốn nó để NULL mà để defautl value thì ta thêm từ khóa NOT NULL vào sau collumns khi tạo bảng

o Syntax: CREATTE TABLE table_name (

Column_name NOT NULL,

Column_name NOT NULL

);

- Khi thêm từ khóa NOT NULL thì bảng sẽ không còn tính NULL, khi ta truyền giá trị NULL vào cho bảng thì nó sẽ tự động set defautl value cho ô đó, defautl value mặc định của kiểu số là

0, kiểu text là chuỗi rỗng ‘ ‘ Ngoài ra ta cũng có thể thay đổi defautl value này

C Defautl Value

- Defautl value là giá trị mặc định ô đó phải có nếu ta không truyền dữ liệu vào, hay nói cách khác nếu ô đó là NULL thì sẽ được tự động đổi thành defautl value

- Nếu không muốn dùng defautl value mặc định của MySQL ta vẫn có thể tự set nó

- Syntax:

o CREATTE TABLE table_name (

Column_name DEFAUTL ‘value’,

Column_name DEFAUTL ‘value’

);

- Khi ta insert data vào bảng mà ta bỏ sót dữ liệu thì nó sẽ tự động điền defautl value vào ô bị xót đó

Trang 3

D Primary key

- Primary key là giá trị duy nhất của mỗi record dùng để định danh record đó

- Primary key là giá trị duy nhất và nó không thể là NULL, một table chỉ có 1 primary key duy nhất

- Ví dụ : primary key có thê là số ID, mã SV, mã công dân,…

- Syntax:

o CREATTE TABLE table_name (

Column_name DEFAUTL ‘value’,

Column_name DEFAUTL ‘value’,

PRIMARY KEY (clumn_name);

);

- Câu lệnh trên sẽ set một collumn bất kì là primary key

- Trong trường hợp primary key là id, khi insert data ta phải nhớ records trước có id là bao nhiêu ta mới có thể set id cho record mới, để tự động tăng id mỗi lần set thêm record ta dùng thêm từ khóa AUTO_INCREMENT vào sau column_name là primary key

- Ví dụ:

o CREATTE TABLE table_name (

Column_name DEFAUTL ‘value’ AUTO_INCREMENT,

Column_name DEFAUTL ‘value’,

PRIMARY KEY (clumn_name);

);

- Ta có thể dùng cả 3 từ khóa trên cùng lúc

E VÍ dụ cho các tính chất trên

- Trog table trên ta có thể thấy

o Tính chất NULL đều là NO

o Id là Primary key, và nó auto_increment

o Giá trị mặc định của current_status là employed

4 CRUD Command

- CRUD là viết tắt của Create Read Update Delete là các thao tác với table

Trang 4

A Create

- Create là các lệnh insert phần trước

B Read

- Read chính là các lệnh SELECT

- Syntax: SELECT columns_name, columns_name FROM table_name;

- Ta có thể dùng SELECT * để lấy ra toàn bộ bảng

- Lấy có điều kiện : để lấy có điều kiện ta dùng từ khóa WHERE

o Syntax: SELECT columns_name, columns_name FROM table_name WHERE

condition;

- Khái niệm aliases (bí danh) : aliases là ta thay đổi cách thể hiện dữ liệu dưới các tên khác nhau, ví dụ columns cat_id ta có thể để nó hiển thị thành id thông qua aliases

o Syntax: SELECT columns_name AS aliases , columns_name FROM table_name;

C Update

- Để update data ta dùng câu lệnh sau

- Syntax: UPDATE table_name SET columns_name = newValue WHERE condition;

- Câu lệnh trên sẽ update cho bảng với giá trị mới này sau từ khóa SET và UPDATE ở vị trí WHERE condition trong table

D Delete

- Để delete data khỏi bảng ta dùng câu lệnh

- Syntax: DELETE FROM table_name WHERE condition;

- Nó sẽ tìm record thỏa điều kiện và xóa khỏi bảng

- Lưu ý nếu ta bỏ đi từ khóa where thì câu lệnh sẽ thành : DELETE FROM table_name;

- Và nó sẽ xóa toàn bộ dữ liệu của bảng

- Điểm khác nhau giữa DROP table_name và DELETE FROM table_name là

o Drop sẽ xóa hoàn toàn bảng khỏi database

o Delete chỉ xóa dử liệu của bảng nhưng bảng thì vẫn được giữ lại

5 SQL String Sever funtcion

- Là những hàm built-in có sẳn của SQL dùng để xử lý data dạng string

A SQL Files

- Ta có thể tạo ra một file với đuôi là sql để lưu trữ các câu lệnh query và khi mySQL chạy file

đó nó sẽ tự động thực hiện các câu lệnh có trong file

- Để MySQL có thể chạy một File SQL bất kỳ ta dùng câu lệnh:

o SOURCE path_of_file;

- Lưu ý:

o trước khi đọc file ta phải chọn db hoặc table muốn sử dụng

o Đường dẫn file đổi các ký tự \ thành /;

B Concat

- Concat là hàm nối chuỗi, nó sẽ nối 2 chuỗi từ 2 field khác nhau lại thành một fileds mới chứa chuỗi kết quả

o Syntax: CONCAT (column_name1, columns_name2);

- Vì CONCAT chỉ nối và tạo ra fileds mới nên nó thường đi kèm với lệnh SELECT để hiển thị và FROM để chỉ rõ bảng có columns được nối

o Syntax: SELECT CONCAT(column_name1, column_name2) FROM table_name;

- Nối có ký tự ngắn cách : đê nối có ký tự ngăn cách ta dùng hàm CONCAT_WS

o Syntax: CONCAT_WS (‘connect_symbol’, column_name1, columns_name2);

o Hàm trên sẽ nếu chuỗi với mỗi giá trị được ngăn cách bởi ký tự nối được khai báo đầu tiên trong hàm

C Substring

- Là hàm để trích chuỗi bên trong 1 chuỗi khác

Trang 5

o Syntax: SUBSTRING / SUBSTR (string, m,n);

o Trong đó :

 String là chuỗi được trích

 m là vị trí bắt đầu (index đầu là 1)

 n là vị trí kết thúc

 Nếu ta chỉ để một số thì nó sẽ bắt đầu từ số đó đến hết chuỗi, nếu ta để số

âm thì nó lấy ngược từ cuối chuỗi

- Substring cũng giống concat tạo ra một fields và columns mới nên ta kết hợp với SELECT và FROM để sử dụng

o Syntax: SELECT SUBSTRING(column_name, m,n) FROM table_name;

D Replace

- Để thay thế một thành phần trong chuỗi bằng giá tị khác

o Syntax: REPLACE (string, ‘old’, ‘new’);

o Trong đó:

 string là chuỗi được thay thế

 old : là ký tự được thay thế

 new : là ký tự sẽ thay thế ký tự pos

- Tương tự các câu lệnh trên REPLACE thường đi cùng SELECT và FROM

o Syntax: SELECT REPLACE(string, ‘old’, ‘new’) FROM table_name;

E Reverse

- Dùng để lật ngược chuỗi lại

- Syntax: REVERSE(string);

F Char_Length

- Cho biết độ dài chuỗi

- Syntax: CHAR_LENGTH(string);

G Uper and Lower

- Dùng để viết hoa hoặc viết thường xuống

- Syntax : UPPER / LOWER (string);

6 Refining our selection

A Distinct

- Đây là câu lệnh giúp lọc bớt những dữ liệu giống nhau và chỉ để lại một

- Nó có tính chất giống các câu lệnh trên nên cũng được dùng chung với SELECT và FROM

o Syntax: SELECT DISTINCT columns_name FROM table_name

- Lưu ý:

o Khi sử dụng DISTINCT thì trước nó không thể chọn columns nào được

o Khi có 2 hay nhiều colums đứng sau DISTINCT thì nó sẽ tự động CONCAT các column

đó và DISTINCT column mới vừa CONCAT

B Order By

- Đây là câu lệnh dùng để sort một fields bất kỳ (câu lệnh này bắt buộc đi kèm với SELECT FROM)

o Syntax: SELECT column_name FROM table_name ORDER BY columns_name / index;

- Mặc định câu lệnh sẽ short fields theo chiều tăng dần, để thay đổi cách short ta thêm từ khóa DESC (giảm dần) hoặc ASC (tăng dần)

- VÌ câu lệnh này sẽ làm thay đổi thứ tự trong fields được short nên cũng sẽ làm thay đổi thứ

tự các fields khác dựa theo fields được short

- Nếu có 2 hay nhiều column_name theo sau ORDER BY nó sẽ short lần lượt các colums, Ví dụ short nhiều fileds là khi ta short họ nhưng đôi khi họ trùng nhau ta sẽ tính tới tên lúc này ta cần short cả 2 fields Tuy nhiên MySQL sẽ ưu tiên short fields đầu tiên được khai báo trước

Trang 6

C Limit

- Đây là câu lệnh để lấy ra một số lượng phần tử nhất định

o Syntax : LIMIT n;

o Câu lệnh trên sẽ lấy ra n records tính từ đầu table

- Ngoài ra LIMIT có thể nhận 2 tham số

o Syntax: LIMIT m,n;

o Trong đó

 m là vị trí bắt đầu lấy (index bắt đầu là 0)

 n là số records sẽ lấy

- LIMIT sẽ đi kèm với SELECT FROM

o Syntax: SELECT columns_name FROM table_name LIMIT m,n;

D Like

- Là câu lệnh tìm kiếm nâng cao bổ trọ cho WHERE

o Syntax : WHERE columns_name LIKE ‘condition’

o Nó sẽ tìm kiếm ở columns_name theo condition

*Wildcards trong LIKE

- Wildcards là những toàn tử hỗ trợ tìm kiếm cho từ khóa LIKE

- % wildcards : toán tử % nghĩa là chọn bất cứ thứ gì (hoặc ko)

o VD :

 %da%: nghĩa là chọn columns có ký tự ‘da’ và ký tự ‘da’ trước đó có thể có bất cứ thứ gì và sau nó cũng có thể có bật cứ thứ gì

 da% : nghĩa là chọn columns có ký tự ‘da’ và ký tự ‘da’ trước đó ko có ký tự nào khác và sau nó cũng có thể có bật cứ thứ gì

 %da : nghĩa là chọn columns có ký tự ‘da’ và ký tự ‘da’ trước đó có thể có bất

cứ thứ gì và sau nó ko có gì cả

- _wildcards : toán tử _ đại diện cho 1 ký tự

o VD:

 _ : nghĩa là tìm kiếm columns có 3 ký tự

 _da: nghĩa là trước ký tự ‘da’ có 1 ký tự

 da : nghĩa là sau ký tự ‘da’ có 2 ký tự

- Ta có thể dùng kết hợp cả 2 toán tử

o VD :

 da% : nghĩa là trước ký tự ‘da’ có 2 ký tự và sau nó có thể có bất cứ thứ gì

- Câu lệnh LIKE đi kèm với SELECT FROM WHERE

o Syntax: SELECT columns_name FROM table_name WHERE column_name LIKE

‘condition’

E Lưu ý thứ tự sử dụng

- Thông thường ta sẽ sử dụng ORDER BY -> WHERE -> LIKE -> LIMIT

7 Aggregate Function

- Aggregate Function là những hàm tính toán dữ liệu và trả về 1 kết quả duy nhất

- Các hàm này sẽ trả về 1 kết quả dưới dạng 1 fields nên ta dùng sau từ khóa SELECT để hiển thị kết quả ra

A Count

- Count là hàm sẽ đếm các số phần tử

o Syntax: COUNT(column_name);

Trang 7

o Hàm trên sẽ đếm và trả về số lượng phần tử ứng với columns_name

- Hàm count trả về giá trị dưới dạng 1 fileds nên dùng sau từ khóa SELECT để hiển thị kết quả

o Syntax: SELECT COUNT(columns_name) FROM table_name

- Count(*) có thể đếm số lượng phần tử của nguyên bảng

B Group By

- Gruop By là 1 hàm quan trọng trong aggregate, nó giúp gruop các dữ liệu thành 1 dòng siêu

dữ liệu dựa theo 1 columns bất kỳ

o Syntax: GROUP BY columns_name;

o Nó sẽ dựa vào columns_name để xác định những data giống nhau trong

columns_name và gộp các records có data giống nhau đó thành 1 dòng siêu dữ liệu

- Dòng siêu dữ liệu là dòng chứa nhiều dữ liệu nhưng chỉ hiển thị ra 1 dòng

- Khác với DISTINCT sẽ loại bỏ những data giống nhau chỉ giữ lại một, còn GROUP BY sẽ gộp data giống nhau lại, không xóa dữ liệu mà chỉ gộp lại thành 1 dòng

- GROUP BY cũng nhận nhiều tham số, nó sẽ concat lại và thực hiện GRUOP (tương tự

DISTINCT)

- Mỗi hàng dữ liệu khi được gruop cũng được xem như 1 table mini nên khi ta dùng COUNT(*) thì nó sẽ cho ra 1 fields đếm lần lượt số phần tử có trong mỗi ‘table mini’ này

- GRUOP BY sẽ đi sau SELECT FROM

o Syntax: SELECT columns_name FROM tables_name GROUP BY columns_name;

C MIN và MAX

- Min max đơn giản là trả về giá trị nhỏ nhất và lớn nhất

o Syntax: MIN/MAX (column_name)

- Câu lệnh này sẽ đi sau SELECT tương tự COUNT

o Syntax: SELECT MIN/MAX(columns_name) FROM table_name;

- Khi ta sử dụng MIN/MAX lên table không có gruop by thì nó sẽ tính MIN MAX cho cả table và trả về 1 giá trị, còn khi ta dùng MIN/MAX cho table có GRUOP BY thì nó sẽ tính MIN MAX cho từng dòng được gruop lại với nhau nghĩa là mỗi GRUOP sẽ có 1 MIN/MAX (duy tự gọi đây là tính GRUOP của hàm)

D Sum

- Dùng để cộng tất cả dữ liệu trong 1 fileds

o Syntax: SUM (column_name);

o Lưu ý : nó chỉ nhận 1 tham số

- SUM giống các hàm Aggregate khác đều theo sau từ khóa SELECT

o Syntax: SELECT SUM(colums_name) FROM table_name;

- SUM có tính GRUOP

E Average

- Dùng để tính trung bình cộng các dữ liệu của 1 fields

o Syntax: AVG(column_name);

o Lưu ý : nó chỉ có 1 tham số

- AVG giống các hàm Aggregate khác đều theo sau từ khóa SELECT

o Syntax: SELECT AVG (colums_name) FROM table_name;

- AVG có tính GRUOP

8 More in Data Type

A Char và Varchar

- Char nó cũng tương tự với Varchar cũng dùng để lưu dữ liệu dạng text, nhưng char nó sẽ fixed cứng độ dài Ví dụ nếu ta khai báo Char(5) thì khi ta nhập vào data chỉ có 4 ký tự thì SQL

sẽ tự động thê khoảng trắng phía sau data sao cho độ dài đủ 5 ký tự

Trang 8

- Khi lưu trữ thì data được thêm khoảng trắng phía sau cho đủ độ dài nhưng khi ta select hoặc dùng các hàm truy xuất, tập hợp data thì SQL tự động bỏ khoảng trắng đi rồi thực hiện việc tính toán

- Char thường được dùng với các dữ liệu được fixed sẵn như giới tính là M hoặc F

B Decimal

- Decimal là kdl dùng để hiển thị số thập phân

o Syntax: DECIMAL(d, m);

o Trong đó

 d là số ký tự tối đa của số thập phân (ví dụ: 12,3 thì số ký tự là 3)

 m là số ký tự nằm sau dấu phẩy thập phân (ví dụ: 12,3 thì số ký tự sau dấu phẩy là 1)

 d luôn lớn hơn m

- Khi ta lưu một giá trị có phần d lớn hơn phần d được khai báo thì sẽ bị lỗi

- Còn khi ta lưu gái trị có phần m lớn hơn phần m được khai báo thì nó sẽ tự động làm tròn đến phần m được khai báo

o Ví dụ : nếu khai báo m là 2 mà ta nhập 2,345 thì nó sẽ làm tròn thành 2,35

C Float và Double

- FLoat và Double cũng là kdl để chứa số thập phân

- Khác với Decimal sử dụng fixed-point type (kiểu mỗi số thập phân là một mã) còn float và double sử dụng floating-point type nên kiểu decimal sẽ chính xác hơn trong tính toán và kiểu float/ double sẽ giúp lưu trữ số lớn hơn nhưng dùng ít dữ liệu hơn

- Phạm vi chính xác của Float là 7 ký tự (doube là 14 ký tự) : nghĩa là nếu số thập phân vượt qua phạm vi này thì float và double sẽ lưu không còn chính xác nửa

- Vậy khi nào dùng Decmial và khi nào dùng Float/Double

o Dùng Decimal:

 Khi ta quan tâm đến tính chính xác của dữ liệu

 Cần thực hiện những phép toàn chính xác

o Dùng Float/Double

 Khi ta không cần quan tâm nhiều đến tính chính xác của dữ liệu

 Cần lưu số lớn với một không gian nhỏ hơn

D Datetime

- Kdl ngày tháng có 3 kiểu cơ bản phổ biến

o Date : chỉ lưu ngày tháng năm, format: ‘yyyy-mm-dd'

o Time : chỉ lưu giờ phút giây, format: ‘hh:mm:ss’

o Datetime : lưu cả ngày tháng năm và giờ phút giây, format : ‘yyyy-mm-dd hh:mm:ss’

*CURDATE(), CURTIME(), NOW(): 3 hàm hiển thị thời gian hiện tại

- CURDATE() : sẽ hiển thị ngày hiện tại

- CURTIME() : sẽ hiển thị giờ hiện tại

- NOW() : sẽ hiện thị ngày giờ thiện tại

E Date Format

- Một số hàm format date:

o DAY() : lấy ngày

o DAYNAME() : lấy thứ ứng với ngày

o DAYOFWEEK() : xem ngày thứ mấy trong tuần

o DAYOFYEAR() : ngày thứ mấy trong năm

- Một số hàm format tháng:

o MONTH() : lấy tháng

o MONTHNAME() : lấy tên tháng

Trang 9

- Hàm Date_Format() giúp ta tự do định dạng ngày tháng năm và giờ

o Syntax: DATE_FORMAtT(columns_name, formating)

o Tham khảo tại :

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format

F Date Math

- Là các hàm cho phép ta thực hiện các phép toán trên date

- Trừ datetime lấy số ngày

o Syntax : DATEDIFF(dateime1, datetime2);

o Nó sẽ trừ datetime1 cho datetim2 lấy số ngày cách biệt giữa 2 datetime

o Có thể thực hiện phép toán với cả date và datetime, hàm có thể trả về số âm

- Cộng trừ datetime với 1 khoảng thời gian nhất định

o Syntax: datetime_name +/- INTERVAL time;

o Câu lệnh trên sẽ cộng hoặc trừ 1 khoảng thời gian là time vào datime_name

o Time có thể là 1 month, 2 day, 1 year , 10 minutes, 3 quarters

G Timestamps

- Timestamps giống như datetime cũng dùng để lưu ngày giờ nhưng giới hạn của nó ngắn hơn (từ 1970-01-01 00:00:01 đến 2038-01-19 3:14:07)

- Timestamps thường được dùng để hiện thị những update vào khoảng thời gian nào

- Ví dụ :

o Syntax: TIMESTAMPS DEFAUTL NOW() ON UPDATE CURRENT_TIMESTAMPS

o Câu lệnh trên khi khời tọa một timestamp thì nó sẽ lấy datetime hiện tại, và mỗi lần update 1 giá trị nào đó thì datetime cũng được update theo

- TimeStamps thường được dùng để thể hiện tính năng cmt hay post đã được post lên khi nào

và update khi nào

9 Logical Operater

A NOT LIKE

- Ngược lại với LIKE

B BETWEEN

- Nó sẽ lấy giá trị ở giữa một khoảng nào đó

o Syntax: WHERE column_name BETWEEN m AND n;

o Câu lệnh sẽ lấy giá trị giữa m và n

o Câu lệnh tương tự như: column_nam >= m && column_name <= n

- NOT BETWEEN thì ngược lại lấy những dữ liệu ngoài khoảng

- Lưu ý : khi dùng BETWEEN với kiểu dử liệu datetime tốt nhất ta nên covert sang cùng 1 kiểu

để dễ dàng so sánh

o Dùng câu lệnh CAST() để covert

o Syntax: CAST( values/column_name AS new_kdl)

o Câu lệnh sẽ chuyển kdl của values hoặc là 1 columns thành 1 kdl mới

C IN

- Từ khóa IN như 1 short hand cho nhiều câu điều kiện OR

o Syntax: WHERE column_name IN (value1, value2);

o Câu lệnh trên sẽ lấy ra những record có column_name mang giá trị value1 hoặc value2

o Câu lệnh trên tương tự câu lệnh: WHERE column_name = value1 OR column_name = value2;

- NOT IN thì ngược lại sẽ lấy những giá trị bên ngoài khoảng IN

D CASE Statement

- Là cấu trúc case như trong các nnlt

Trang 10

- Syntax: SELECT CASE

WHEN condittion THEN value WHEN condittion THEN value ELSE value

END;

- Câu lệnh trên có logic tương tự cấu trúc case của các nnlt, đầu tiên nó xét điều kiện nếu đúng nó sẽ in ra giá trị, nếu sai nó tiếp tục xét điện kiện tiếp theo đến khi gặp từ khóa END

nó sẽ kết thúc

- Vì CASE sẽ tạo ra 1 fields để chứa các value trả về nên nó đi kèm với select

10 Realationship of Data

- Trong thực tế các dữ liệu không chỉ gồm một table mà nó là một hệ thống các table liên kết với nhau thông qua thuộc tình nào đó Đó chính là mqh giữa các table

- Có 3 loại mqh

o Ont to one relationship (mqh 1-1)

o One to many relationship (mqh 1 - nhiều)

o Many to many relationship (mqh nhiều - nhiều)

A One to many Relationship

- Mqh 1 nhiều nghĩa là trong cùng một thời điểm thì một thực thể trong table này có mqh với nhiều thực thể trong table khác Ví dụ : books thì có nhiều review, 1 review thì chỉ viết về 1 book

- Thông thường để liên kết giữa các table thì trong bảng này sẽ có dữ liệu từ bảng khác Tuy nhiên một số trường hợp dữ liệu ở bảng này lại có giá trị nằm ngoại phạm vị của nó trong bảng khác sẽ làm phá hỏng dữ liệu Để ngăn ngừa điều trên ta dùng Foreign key (khóa ngoại)

*Foreign Key

- Foreign key (khóa ngoại) được sử dụng để hạn chế những hành động làm phá hoại sự liên kết của dữ liệu, về ĐN Foreign key là một fields mà nó tham chiếu tới Primary key của bảng khác Bảng có foreign key sẽ đgl bảng con còn bảng có primary key được tham chiếu tới sẽ gọi là bảng được tham chiếu hoặc bảng cha

o Syntax : FOREIGN KEY (column_name1) REFERENCES table_name(column_name2)

o Trong đó : column_name1 là khóa ngoại và nó references tới column_name2 của table_name

*ON DELETE CASADE

- Khi liên kết Foreign key với Primary key của table cha thì dữ liệu ở table cha sẽ không thể xóa được, khi ta dùng lệnh DELETE thì nó sẽ hiển lỗi là dữ liệu có liên kết với table con qua Foreign key nên không thể xóa được Muốn xóa ta có 2 cách

o C1: xóa dữ liệu liên quan ở table con trước sau đó xáo dữ liệu cha

Ngày đăng: 22/07/2022, 14:12

TỪ KHÓA LIÊN QUAN

w