1. Trang chủ
  2. » Tất cả

Database quản lý csdl

18 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 18
Dung lượng 1,24 MB

Nội dung

DATABASE A Quản lý CSDL .3 Tạo CSDL: Hiển thị CSDL: 3 Chọn CSDL để làm việc: Hiển thị bảng CSDL: Xoá CSDL: B Các kiểu liệu Các kiểu liệu số .4 Các kiểu liệu xâu Các kiểu liệu ngày thời gian C Tạo sửa đổi cấu trúc bảng .6 Tạo bảng CSDL: Các ràng buộc (constraint) Hiển thị thông tin bảng: .7 Thay đổi cấu trúc bảng: Xoá bảng: C Truy vấn Truy vấn với SELECT .8 Mệnh đề WHERE Từ khoá DISTINCT Giới hạn số lượng kết với LIMIT .8 Toán tử IN Toán tử BETWEEN Toán tử LIKE .9 Thuộc tính suy diễn (Derived Attribute) 10 Sắp xếp kết với ORDER BY .10 10 Kết hợp kết với UNION 11 D Các hàm xử lý MySQL 13 Hàm SUBSTRING 13 Hàm CONCAT 13 Hàm CONCAT_WS 13 Hàm REPLACE .14 Hàm IF .14 Hàm LAST_INSERT_ID .14 Hàm DATEDIFF .15 Hàm ADDDATE 15 Hàm EXTRACT 16 E Truy vấn nhóm 17 Các hàm nhóm (SUM, AVG, MAX, MIN,COUNT): .17 Mệnh đề nhóm GROUP BY 17 Mệnh đề điều kiện HAVING 18 A Quản lý CSDL Tạo CSDL: CREATE DATABASE [IF NOT EXISTS] database_name; Hiển thị CSDL: SHOW DATABASES; Chọn CSDL để làm việc: USE database_name; Hiển thị bảng CSDL: SHOW TABLES Xoá CSDL: DROP DATABASE [IF EXISTS] database_name; B Các kiểu liệu Các kiểu liệu số Các kiểu liệu xâu Các kiểu liệu ngày thời gian C Tạo sửa đổi cấu trúc bảng Tạo bảng CSDL: CREATE TABLE [IF NOT EXISTS] table_name( [] [column constraints], [] [column constraints], , ) type=table_type Các ràng buộc (constraint) Các ràng buộc định nghĩa theo hai cách: 1) Column constraint (Ràng buộc cột): ràng buộc áp dụng cho cột cụ thể 2) Table constraint (Ràng buộc bảng): khai báo tách rời, áp dụng ràng buộc cho nhiều cột a PRIMARY KEY (ràng buộc khóa chính):  Ràng buộc định nghĩa cột tổ hợp cột xác định dòng bảng  Mức cột: Column_name datatype [CONSTRAINT constraint_name] PRIMARY KEY  Mức bảng: [CONSTRAINT constraint_name] PRIMARY KEY (column_name1, column_name2, …) b NOT NULL  Ràng buộc yêu cầu giá trị cột không phép NULL c UNIQUE  ràng buộc yêu cầu giá trị cột phân biệt Chú ý với ràng buộc giá trị cột NULL ràng buộc NOT NULL không áp dụng cột d FOREIGN KEY (Ràng buộc khóa ngồi) Ví dụ xác định cột country_id làm khóa ngồi, tham chiếu đến khóa bảng country: CONSTRAINT fk_city_country FOREIGN KEY (country_id) REFERENCES country (country_id) ON DELETE RESTRICT ON UPDATE CASCADE ON DELETE RESTRICT:có nghĩa khơng cho phép xóa dịng liệu bảng tham chiếu cịn liệu tham chiếu tới ON UPDATE CASCADE:có nghĩa cập nhật liệu bảng tham chiếu, liệu bên bảng tham chiếu tự động cập nhật Hiển thị thông tin bảng: C1: DESCRIBE Table_Name; C2: SHOW CREATE TABLE Table_Name Thay đổi cấu trúc bảng: ALTER TABLE table_name tùy chọn[, tùy chọn ] Các tùy chọn: ADD [COLUMN] MODIFY [COLUMN] DROP [COLUMN] ADD DROP Xoá bảng: DROP TABLE [IF EXISTS] C Truy vấn Truy vấn với SELECT SELECT tên cột 1, tên cột 2, FROM bảng [WHERE điều kiện chọn] [GROUP BY nhóm] [HAVING điều kiện chọn nhóm] [ORDER BY cột xếp] [LIMIT giới hạn số lượng]; Thứ tự xuất từ khoá WHERE, GROUP BY, HAVING, ORDER BY LIMIT phải theo thứ tự + Để chọn tất cột bảng sử dụng dấu * Mệnh đề WHERE  Lọc ghi dựa điều kiện định  Kết nối điều kiện với tốn tử AND OR  IS NULL: tìm giá trị không xác định VD: SELECT FirstName, LastName, email FROM Employees WHERE jobtitle = "President" Từ khoá DISTINCT  Loại bỏ liệu trùng lặp từ câu lệnh SELECT VD: SELECT DISTINCT jobTitle FROM Employees; Giới hạn số lượng kết với LIMIT SELECT * FROM table_name LIMIT N Hoặc: LIMIT S, N S điểm bắt đầu ghi số N số lượng ghi muốn chọn Toán tử IN  Toán tử IN cho phép chọn giá trị phù hợp từ tập giá trị SELECT danh sách cột FROM tên bảng WHERE cột IN ("giá trị 1","giá trị 2"…) VD: SELECT officeCode, city, phone FROM offices WHERE country IN ('USA','France')  Có thể sử dụng tốn tử NOT kèm với tốn tử IN cho mục đích phủ định: VD: SELECT officeCode, city, phone FROM offices WHERE country NOT IN ('USA','France') Toán tử BETWEEN  BETWEEN cho phép lấy giá trị phạm vi cụ thể SELECT column_list FROM table_name WHERE column_1 BETWEEN lower_range AND upper_range VD: SELECT productCode,ProductName,buyPrice FROM products WHERE buyPrice BETWEEN 90 AND 100  Để tìm tất ghi khơng nằm phạm vi, sử dụng NOT BETWEEN Toán tử LIKE  LIKE cho phép thực việc tìm kiếm thơng tin dựa so sánh ký tự  MySQL cung cấp cho hai ký tự đại diện sử dụng với LIKE, % _ + Ký tự đại diện tỷ lệ phần trăm (%) đại diện cho chuỗi khơng có có nhiều ký tự Gạch (_) đại diện cho ký tự VD: + Tìm kiếm nhân viên có tên bắt đầu với ký tự 'a': SELECT employeeNumber, lastName, firstName FROM employees WHERE firstName LIKE 'a%' + Tìm kiếm tất nhân viên có họ kết thúc với chuỗi ‘on’: WHERE lastName LIKE '%on' + Tìm tất nhân viên mà họ nhân viên có chứa cụm 'on': WHERE lastName LIKE '%on%'  Có thể dùng NOT kèm với LIKE để hàm chứa ý nghĩa phủ định  Mysql cung cấp cho ký tự ‘\’ để ký tự đại diện sau sử dụng theo nghĩa đen khơng ký tự đại diện nữa: VD: SELECT productCode, productName FROM products WHERE productCode LIKE '%\_20%'  Nếu muốn tìm tất nhân viên có tên bắt đầu với chuỗi quy định sử dụng hàm LEFT() giống truy vấn sau đây: SET @str = 'b'; SELECT employeeNumber, lastName, firstName FROM employees WHERE LEFT(lastname,length(@str)) = @str; Thuộc tính suy diễn (Derived Attribute) VD: Tạo cột suy diễn đặt tên lineTotal, thuộc tính kết phép nhân hai thuộc tính priceEach quantityOrdered SELECT orderNumber, (priceEach*quantityOrdered) as lineTotal FROM orderdetails Sắp xếp kết với ORDER BY + Tăng dần: ASC + Giảm dần: DESC Mặc định: ORDER BY xếp kết theo thứ tự tăng dần VD: Sắp xếp danh sách nhân viên theo tên vị trí cơng việc: SELECT FirstName, LastName, jobtitle FROM Employees ORDER BY firstname ASC, jobtitle DESC; 10 Kết hợp kết với UNION  UNION cho phép kết hợp hai nhiều kết từ nhiều bảng với SELECT statement UNION [DISTINCT | ALL] SELECT statement UNION [DISTINCT | ALL] …  Một số nguyên tắc: + Số lượng cột câu lệnh SELECT phải giống + Các kiểu liệu cột danh sách cột câu lệnh SELECT phải giống chuyển đổi sang cho + Theo mặc định, UNION MySQL loại bỏ tất hàng trùng lặp từ kết không sử dụng từ khoá DISTINCT sau từ khoá UNION + Nếu sử dụng UNION ALL, hàng trùng lặp tập hợp kết cuối VD: Kết hợp thông tin khách hàng nhân viên thành tập hợp kết SELECT customerNumber id, contactLastname name FROM customers UNION SELECT employeeNumber id,firstname name FROM employees  Khi sử dụng ORDER BY để xếp kết với UNION, phải đặt vị trí cuối mệnh đề SELECT VD: Kết hợp thông tin nhân viên khách hàng, sau muốn xếp kết theo tên ID thứ tự tăng dần: (SELECT customerNumber, contactLastname FROM customers) UNION (SELECT employeeNumber, firstname FROM employees) ORDER BY contactLastname, customerNumber D Các hàm xử lý MySQL Hàm SUBSTRING  Hàm Substring cho phép trích xuất chuỗi từ chuỗi khác, bắt đầu vị trí cụ thể với độ dài định: SUBSTRING(str,pos); SUBSTRING(str FROM pos); Kết câu lệnh trả chuỗi từ chuỗi str vị trí pos SUBSTRING(str,pos,len); SUBSTRING(str FROM pos FOR len); Hai câu lệnh trả chuỗi từ chuỗi str, bắt đầu vị trí pos chuỗi trả có len ký tự VD: SELECT substring('MySQL Substring',-9); Hàm CONCAT  Hàm Concat sử dụng để nối hai nhiều chuỗi + Nếu đối số số, chúng chuyển đổi thành chuỗi trước nối + Nếu đối số danh sách đối số NULL, hàm concat trả NULL CONCAT(str1,str2, ) VD: SELECT CONCAT(contactLastname,', ',contactFirstname) fullname FROM customers Hàm CONCAT_WS  Cho phép nối hai hay nhiều hai chuỗi với dấu phân cách xác định trước CONCAT_WS(seperator,str1,str2, ) Tham số dấu phân cách định nghĩa sau chuỗi muốn nối VD: SELECT CONCAT_WS('; ',contactLastname,contactFirstname) fullname FROM customers Hàm REPLACE  Thay chuỗi cột bảng chuỗi UPDATE SET tên cột = REPLACE(tên cột,xâu cần tìm,xâu thay thế) WHERE VD: Sửa lỗi tả bảng Product sở liệu mẫu: UPDATE products SET productDescription = REPLACE(productDescription,'abuot','about') Hàm IF  IF hàm điều khiển, trả kết chuỗi số dựa điều kiện cho trước IF(expr,if_true_expr,if_false_expr) + Tham số expr kiểm tra hay sai Giá trị thực có nghĩa expr khơng expr khơng NULL Lưu ý NULL giá trị đặc biệt, khơng điều khác, thân + Nếu expr đánh giá đúng, hàm IF trả lại if_true_expr, không trả lại if_false_expr Ví dụ: SELECT IF(1 = 2,'true','false'); Trả về: false VD: SELECT customerNumber, customerName, IF(state IS NULL,'N/A',state) state, country FROM customers; Hàm LAST_INSERT_ID + Hàm LAST_INSERT_ID trả ID ghi cuối chèn vào bảng, với điều kiện đólà ID cột có thuộc tính AUTO_INCREMENT VD: Tạo bảng để thử nghiệm gọi TBL Trong bảng TBL, sử dụng ID cột AUTO_INCREMENT CREATE TABLE tbl( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, description varchar(250) NOT NULL ); Sau đó, sử dụng hàm LAST_INSERT_ID () để có ID chèn INSERT INTO tbl(description) VALUES('MySQL last_insert_id'); Thực truy vấn: SELECT LAST_INSERT_ID(); Hàm DATEDIFF  Tính tốn số ngày hai mốc thời gian DATEDIFF(expr1,expr2) VD: SELECT DATEDIFF('2011-08-17','2011-08-17'); VD2: Để tính tốn số ngày lại ngày vận chuyển ngày yêu cầu để đơn đặt hàng SELECT orderNumber, DATEDIFF(requiredDate,shippedDate) AS daysLeft FROM orders ORDER BY daysLeft DESC; Hàm ADDDATE  Hàm ADDDATE: trả giá trị thời gian kết thao tác giá trị thời gian khác Ví dụ: Đưa ngày tháng sau ngày 30 ngày SELECT ADDDATE(NOW(), INTERVAL 30 DAY); Sử dụng từ khóa DAY để giá trị cộng vào ngày VD: Đưa đơn đặt hàng khoảng 30 ngày tính từ ngày 1/5/2005 SELECT * FROM orders WHERE orderDate>= '2005-5-1' AND orderDate < ADDDATE('20055-1', INTERVAL 30 DAY); Hàm EXTRACT  Tách giá trị ngày, tháng, năm từ giá trị có kiểu thời gian (chú ý dùng hàm MONTH YEAR thay thế) VD: SELECT EXTRACT(MONTH FROM '2004-12-31 23:59:59'); VD2: Đưa đơn hàng đặt năm 2005 SELECT * FROM orders WHERE EXTRACT(YEAR FROM orderDate) = 2005 E Truy vấn nhóm Các hàm nhóm (SUM, AVG, MAX, MIN,COUNT): a Hàm tính tổng SUM  Bỏ qua giá trị NULL Ví dụ: Tính tổng số tiền thu từ đầu tới SELECT sum(priceEach * quantityOrdered) total FROM orderdetails b Hàm tính giá trị trung bình AVG  Nó khơng chấp nhận giá trị NULL (bỏ qua) VD: Tính tốn giá trung bình tất sản phẩm mua SELECT AVG(buyPrice) average_buy_price FROM Products c Hàm MAX MIN  Hàm MAX trả giá trị lớn hàm MIN trả giá trị nhỏ tập giá trị Ví dụ: Sử dụng MAX MIN để lấy mức giá cao mức giá nhỏ sản phẩm: SELECT MAX(buyPrice) highest_price, MIN(buyPrice) lowest_price FROM Products d Hàm COUNT Hàm COUNT hàm đếm số lượng VD: Đếm số lượng sản phẩm bán: SELECT COUNT(*) AS Total FROM products Mệnh đề nhóm GROUP BY  Mệnh đề GROUP BY sử dụng để gộp ghi có giá trị hay nhiều cột, thành tập hợp  Đứng sau mệnh đề WHERE FROM SELECT col1_,col_2, col_n, hàm nhóm(biểu thức) FROM tên bảng WHERE điều kiện GROUP BY col_1, col_2, col_n ORDER BY danh sách cột  Hàm nhóm bỏ qua giá trị null thực tính tốn, ngoại trừ hàm COUNT VD: Muốn biết có đơn đặt hàng nhóm trạng thái SELECT status, count(*) FROM orders GROUP BY status Mệnh đề điều kiện HAVING  Nó điều kiệ lọc liệu nhóm ghi kết việc thực hàm nhóm  HAVING thường sử dụng với GROUP BY Nếu HAVING không di kèm với GROUP BY, có ý nghĩa WHERE  Có thể sử dụng điều kiện kết hợp mệnh đề HAVING với toán tử OR, AND VD: Hiển thị đơn hàng có tổng giá trị lớn $1000 SELECT ordernumber, sum(quantityOrdered) AS itemsCount, sum(priceEach * quantityOrdered) AS total FROM orderdetails GROUP BY ordernumber HAVING total > 1000

Ngày đăng: 05/04/2023, 05:36

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

TÀI LIỆU LIÊN QUAN

w