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ỏ
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.