Chuyên đề Biến trong MySQL

Vai trò của biến Phân loại biến Biến hệ thống Biến người dùng Biến sử dụng trong routines (hàm, thủ tục) Biến con trỏ

pdf16 trang | Chia sẻ: lylyngoc | Lượt xem: 1745 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Chuyên đề Biến trong MySQL, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Biến trong MySQL Nội dung  Vai trò của biến  Phân loại biến  Biến hệ thống  Biến người dùng  Biến sử dụng trong routines (hàm, thủ tục)  Biến con trỏ Vai trò của biến  Lưu trữ thông tin cấu hình của Server  Lưu giá trị tạm thời của người dùng trong quá trình thực hiện tính toán. Phân loại biến  Biến hệ thống  Biến người dùng Biến hệ thống  Dùng để chỉ ra thiết đặt cấu hình cho MySQL Server.  Có 2 loại:  Biến toàn cục: Lưu thông tin đến hoạt động tổng thể của hệ thống.  Biến Session: Lưu thông tin của người dùng kết nối.  Mỗi biến hệ thống sẽ có một giá trị mặc định.  Có thể thiết đặt giá trị cho biến hệ thống trong lúc chạy server  Để xem các biến hệ thống của server đang chạy hiện thời ta thực hiện lệnh: Show variables Show session variables Show global variables Biến người dùng  Lưu trữ giá trị tạm thời trong một câu lệnh và được tham chiếu ở câu lệnh khác.  Phụ thuộc vào kết nối cụ thể đến Server − Một biến người dùng được tạo bởi một client không thể được nhìn thấy và sử dụng bởi client khác. − Được giải phóng khi kết nối kết thúc Biến người dùng khai báo và sử dụng  Cú pháp khai báo: SET @var_name = expr [, @var_name = expr] …  Lưu ý: không phân biệt hoa thường  Gán giá trị cho biến: SET @var_name = expr [, @var_name = expr] … SELECT @var_name:= expr [, @var_name:= expr]  Ví dụ: SET @a='test'; SELECT @a,(@a:=20) FROM tbl_name; Biến người dùng – Ví dụ Vd1: @count='test'; SELECT @count:= count(*) FROM sinhvien; Vd2: @count='test'; SELECT @count; Vd3: set @count='testa'; call dem_so_khoa(@count); select @count; Biến sử dụng trong Routines  Là tên một thành phần dữ liệu  Được sử dụng để lưu trữ giá trị tham thời trong khi thực thi các chương trình lưu trữ (thủ tục, hàm,triggers). Biến trong chương trình  Cú pháp khai báo: DECLARE variable_name [,variable_name...] datatype [DEFAULT value];  Gán giá trị cho biến: SET variable_name =expr [, @var_name = expr]  Phạm vị của biến:  Biến được khai báo trong thân thủ tục sẽ có phạm vi bên trong khối BEGIN/END. Biến trong chương trình – Ví dụ create procedure operators( ) begin DECLARE a int default 2; declare b int default 3; declare c FLOAT; set c=a+b; select 'a+b=',c; SET c=a/b; select 'a/b=',c; SET c=a*b; Select 'a*b=',c; IF (a<b) THEN select 'a is less than b'; END IF; IF NOT (a=b) THEN SELECT 'a is not equal to b'; END IF; end; Biến con trỏ • Được sử dụng trong hàm, thủ tục lưu trữ và triggers • Tham chiếu đến tập hợp các dòng ( kết quả của câu truy vấn) • Thuộc tính của biến con trỏ: Read only: Không thể cập nhật con trỏ Non-scrollable: Di chuyển một hướng qua các mẫu tin, không thể bỏ qua mẫu tin hoặc quay lại Asensitive: tránh cập nhật bảng khi mở con trỏ. Làm việc với con trỏ 1. Khai báo: DECLARE cursor_name CURSOR FOR SELECT_statement; 2. Mở con trỏ: phải được mở trước khi lấy dữ liệu OPEN cursor_name; 3. Lấy dữ liệu từ con trỏ và di chuyển đến dòng tiếp theo FETCH cursor_name INTO variable list; 4. Đóng con trỏ và giải phóng vùng nhớ CLOSE cursor_name; Sử dụng con trỏ - Bài tập DELIMITER $$ DROP procedure IF EXISTS `test`.`cursample` $$ CREATE procedure `test`.`cursample` () BEGIN declare done int default 0; declare id_khoa1 int; declare ten_khoa1 varchar(45); declare dssv cursor for select id_khoa,ten_khoa from dmkhoa; declare continue handler for not found set done=1; create table tam(id_khoa int,ten_khoa varchar(45)); open dssv; Sử dụng con trỏ - bài tập (tt) read_loop:loop fetch dssv into id_khoa1,ten_khoa1; if done then leave read_loop; end if; insert into tam values(id_khoa1,ten_khoa1); end loop; select * from tam; close dssv; drop table `test`.`tam`; END $$ DELIMITER ; Bài tập • Sử dụng con trỏ, viết thủ tục để đọc các mẫu gồm các cột id sinh viên, họ sinh viên, tên sinh viên,giới tính,ngày sinh lưu vào bảng tạm và hiển thị. • Sử dụng con trỏ, viết thủ tục để đọc các mẫu tin từ bảng sinh viên, lưu vào bảng tạm, đếm số mẫu tin và trả về số mẫu tin.