1. Trang chủ
  2. » Giáo án - Bài giảng

Bài 4 Structured Query Language Phần 1

24 214 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 24
Dung lượng 542,33 KB

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

Nội dung

Sơ lược  Thành phần cơ bản của một CSDL quan hệ là các quan hệ  SQL cho phép định nghĩa các quan hệ trong CSDL, và các thuộc tính của các quan hệ  Mỗi thuộc tính có tên và kiểu  C

Trang 1

Bài 4: SQL – Phần 1

(Structured Query Language)

Trang 2

CSDL quan hệ (relational database)

 Cách biểu diễn CSDL bằng ngôn ngữ hình thức cho thấy cơ sở lý thuyết của các ngôn ngữ truy vấn

 Các sản phẩm trong thực tế cần tới những ngôn ngữ thân thiện hơn

 SQL là ngôn ngữ phổ biến nhất và có ảnh hưởng lớn

nhất cho tới nay

 Ngoài ra còn có nhiều ngôn ngữ khác

Trang 3

 Mặc dù viết tắt từ “Structured Query Language”,

nhưng SQL bao gồm cả ngôn ngữ mô tả (DDL) và thao tác (DML)

Trang 4

Sơ lược

 Thành phần cơ bản của một CSDL quan hệ là các quan hệ

 SQL cho phép định nghĩa các quan hệ trong CSDL, và các thuộc tính của các quan hệ

 Mỗi thuộc tính có tên và kiểu

 Có thể xác định mỗi thuộc tính có thể có giá trị null hay không

 Kết nối:

 Để bắt đầu làm việc, người dùng cần thiết lập kết nối với DBMS

 Thường phải đăng nhập bằng một tên người dùng/mật khẩu

 Câu lệnh:

 Người dùng thao tác với DBMS bằng các câu lệnh SQL

 Mỗi câu lệnh có một nhiệm vụ xác định, thường phân tách nhau bằng dấu “;”

 SQL không phân biệt chữ hoa/thường với các từ khoá và các tên

 Các tên trong SQL chỉ bao gồm các ký tự Latin, chữ số và _, @, #, $

 Nếu tên trùng với các từ khoá, dùng ký hiệu `…`

Trang 5

Ví dụ với MySQL

C:\Program Files\MySQL\MySQL Server 5.5\bin>mysql -u thivien -p

Enter password: ************

Welcome to the MySQL monitor Commands end with ; or \g

Your MySQL connection id is 72721

Server version: 5.5.8 MySQL Community Server (GPL)

mysql> use thivien;

Database changed

mysql> select ID, LOGIN, DATE from thivien_member where

-> ID = (select max(ID) from thivien_member);

1 row in set (0.00 sec)

mysql> select count(*) from thivien_forum_topic;

Trang 7

int, integer số nguyên (khoảng giá trị phụ thuộc máy)

smallint số nguyên nhỏ (khoảng giá trị phụ thuộc máy)

numeric(p, d) số dấu phảy tĩnh với p chữ số (tính cả dấu) và d chữ số thập

phân real, double precision số dấu phảy động (khoảng giá trị phụ thuộc máy)

float(n) số dấu phảy động với độ chính xác thấp nhất n chữ số

date ngày tháng năm VD: '2012-05-13'

time thời gian (giờ, phút, giây) VD: '19:04:23'

timestamp tổng hợp của date và time VD: '2012-05-13 19:04:23'

Trang 8

Tạo quan hệ: create table

create table tên-quan-hệ (

thuộc-tính-1 kiểu, thuộc-tính-2 kiểu,

Trang 9

Ràng buộc khoá chính

Định nghĩa khoá chính cho quan hệ bằng ràng buộc “primary key(khoá)”

create table Member (

id integer, name varchar(50), password varchar(50), regdate date,

primary key (id) );

 Khoá chính với nhiều thuộc tính:

create table Address (

road varchar(50), number int,

primary key (road, number) );

 Nếu khoá chính chỉ có một thuộc tính, có thể dùng:

create table Member (

id integer primary key , name varchar(50),

password varchar(50), regdate date);

Trang 10

Ràng buộc khoá thường

 Tương tự như khoá chính, nhưng dùng ràng buộc

“unique (khoá)”

create table Address (

id integer not null, road varchar(50),

number int, primary key (id),

unique (road, number) );

Trang 11

Giá trị null

 Một thuộc tính mặc định sẽ có thể có giá trị null

 Nếu muốn thuộc tính đó không thể lấy giá trị null,

thêm ràng buộc “not null” vào sau khai báo của

thuộc tính

 VD:

create table Member (

name varchar(50) not null ,

regdate date);

Trang 12

Ràng buộc tổng quát

 Dùng ràng buộc “check (điều-kiện)” nếu muốn các bộ

giá trị trong quan hệ phải luôn thoả mãn các điều kiện

mong muốn

 VD:

create table Student (

id integer not null, name varchar(50), class varchar(10), birthday date,

check (name is not null), check (class in ('A','B','C')), check (birthday is not null

and birthday < '2000-01-01'));

Trang 13

Xoá quan hệ

 Để xoá một quan hệ, dùng câu lệnh:

drop table tên-quan-hệ

 VD:

 Nếu chỉ muốn xoá các giá trị, mà vẫn giữ lại định nghĩa, thì dùng câu lệnh:

delete from tên-quan-hệ

 VD:

Trang 14

Thay đổi định nghĩa quan hệ

 Dùng câu lệnh “alter table…” để thực hiện các thay đổi trong định nghĩa của quan hệ

 Thay đổi thuộc tính:

 Đổi tên:

Trang 15

Thêm dữ liệu vào quan hệ

 Dùng câu lệnh “insert into …” để thêm dữ liệu

 Cú pháp:

insert into tên-quan-hệ values(các-giá-trị);

 Các giá trị liệt kê theo đúng trình tự khi khai báo quan hệ

 VD:

insert into Member

values(10, 'bill', '1234', '2005-03-22');

insert into Student

values(5, 'Tran Phi Nghia', 'A', '1993-05-12');

 Nếu không muốn phải liệt kê các giá trị theo thứ tự, dùng cú pháp:

insert into tên-quan-hệ(các-thuộc-tính) values(các-giá-trị);

 VD:

insert into Member( regdate, name, password, id )

values( '2005-03-22', 'bill', '1234', 10 );

Trang 16

Thêm nhiều dữ liệu cùng một lúc

 Một câu lệnh insert có thể được dùng để thêm nhiều dữ liệu một lần

 VD:

insert into Member

values (10, 'bill', '1234', '2005-03-22'), (11, 'lonely', 'smile', '2006-02-11'), (12, 'brokenheart', 'abcd', '2010-01-02'); tương đương với:

insert into Member

values (10, 'bill', '1234', '2005-03-22');

insert into Member

values (11, 'lonely', 'smile', '2006-02-11');

insert into Member

values (12, 'brokenheart', 'abcd', '2010-01-02');

Trang 17

Giá trị mặc định

 Có thể khai báo giá trị mặc định cho mỗi thuộc tính

 Giá trị mặc định là giá trị của một trường khi không xác định giá trị của nó trong câu lệnh insert

 VD:

create table Student (

id integer not null primary key, name varchar(50),

birthday date);

Trang 18

Tìm dữ liệu

select các-thuộc-tính from các-quan-hệ

[where điều-kiện];

 Gồm 3 mệnh đề: select, from, where

 Kết quả là giá trị các thuộc tính trong các quan hệ thoả mãn điều kiện yêu cầu

 Mệnh đề where có thể lược bớt nếu muốn lấy toàn bộ kết quả (không có điều kiện lựa chọn)

Trang 19

Mệnh đề select và from

 select: liệt kê các thuộc tính cần lấy

hệ có thuộc tính cùng tên

 Có thể dùng các phép toán trước khi trả về kết quả

 from: liệt kê các quan hệ cần dùng

 VD:

 select name from Student ;

 select * from Student ;

 select Student.name, Teacher.name from Student, Teacher ;

 select name, 800*level from Employee ;

 select length(first_name)+length(last_name) from Staff ;

Trang 20

Mệnh đề where…

 Điều kiện của phép chọn

 Là một biểu thức logic, nếu kết quả là đúng thì bộ giá trị được

chọn, sai thì không được chọn

or, not,…

 VD:

Trang 21

Đổi tên

 Các quan hệ và thuộc tính trong câu lệnh có thể

được đổi tên cho tiện sử dụng bằng toán tử “as”

 VD:

 select e name from Employee as e ;

 select s name as sname , t name as tname

from Student as s , Teacher as t ;

 Toán tử “as” có thể được lược bỏ và ngầm hiểu:

 select s name sname , t name tname

from Student s , Teacher t ;

Trang 22

 select distinct s1.name

from Student s1, Student s2

where s1.note > s2.note;

Trang 23

Sắp xếp kết quả

 Theo mặc định, dữ liệu ra của câu lệnh select sẽ có thứ tự bất kỳ

 Kết quả sẽ được sắp xếp theo thứ tự tăng dần của kết quả biểu thức theo mặc định hoặc dùng “asc”, nếu muốn sắp xếp theo thứ tự giảm dần, dùng

“desc”

 Có thể dùng nhiều biểu thức, biểu thức đứng trước sẽ được ưu tiên hơn

 VD:

 select * from Student order by name ;

 select * from Student order by name asc ;

 select * from Student order by name desc ;

 select * from Student order by name, student_number, note ;

 select * from Student order by name asc, note desc ;

Trang 24

Bài tập

án,…

xếp theo tên nhân viên

gian mới nhất trước

tuổi, sắp xếp theo tên ca sĩ

Ngày đăng: 07/03/2015, 10:14

TỪ KHÓA LIÊN QUAN

w