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

Một số hệ quản trị mã nguồn mở - Tìm hiểu quản trị CSDL PostgreSQL ppt

69 1,4K 8

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

Nội dung

o Mỗi dòng của 1 bảng có cùng các cột được đặt tên o Mỗi cột có 1 kiểu dữ liệu cụ thể... Ngôn ngữ SQL Truy vấn toàn bộ bảng SELECT * FROM ;  Truy vấn thuộc tính cụ thể của bảng SELECT

Trang 1

o Một số hệ quản trị mã nguồn mở

o Tìm hiểu quản trị CSDL PostgreSQL

Giáo viên: Nguyễn Trần Minh Thư Nhóm 07

Trang 3

Hệ quản trị mã nguồn mở

MySQL

 MySql là HQTCSDL mã nguồn mở phổ biến nhất thế giới.

 Sử dụng ngôn ngữ truy vấn có cấu trúc (SQL).

 MySQL là cơ sở dữ liệu tốc độ cao, ổn định, bảo mật và dễ sử dụng.

 Phát triển bởi công ty MySQL AB.

 Phiên bản mới nhất: 5.0.17 vào ngày 21 tháng 12 năm 2005.

 Hệ điều hành: Đa hệ điều hành

 Thể loại: RDBMS (relational database management system)

 Website: www.mysql.com

Trang 4

Hệ quản trị mã nguồn mở

Oracle

 Oracle là một HQTCSDL quan hệ đối tượng phổ biến trên thế giới (ORDBMS)

 Oracle cung cấp một HQTCSDL mềm dẻo gồm CSDL Oracle , môi trường cho việc thiết kế các cơ sở dữ liệu, các công cụ phát triển

 HQTCSDL có tính an toàn , bảo mật cao, tính nhất quán và toàn vẹn dữ liệu

Trang 5

Hệ quản trị mã nguồn mở

Oracle

 Được cung cấp bởi công ty ORACLE.

 Phiên bản mới nhất: Oracle Database 11g phát hành vào tháng 9 năm 2011.

 Viết bằng ngôn ngữ: C, C++.

 Hệ điều hành: Đa hệ điều hành.

 Website: www.oracle.com

Trang 6

Hệ quản trị mã nguồn mở

 SqLite là phần mềm quản lý cơ sở dữ liệu (DBMS)

 Đặc điểm của SQLite là gọn, nhẹ, đơn giản

 Sử dụng dưới dạng thư viện nhúng, không chạy theo kiểu server độc lập

 Hỗ trợ các ngôn ngữ phổ biến: C, C++, C#, Basic, Perl, Ruby, Python, PHP, Java

 Hỗ trợ mã UTF8, command line, transaction, view, C extensions

Trang 7

Hệ quản trị mã nguồn mở

 Có các công cụ quản lý bằng đồ hoạ

 Download & sử dụng miễn phí

 Phát triển bởi D.Richard Hipp

 Phiên bản: Hiện tại SQLite có 2 nhánh khác nhau là version 2.x và version 3.x Lệnh sqlite là của version 2.x, sqlite3 là lệnh của version 3.x

 Hệ điều hành: Nền tảng Cross

 Website: http://www.sqlite.org

Trang 9

Giới thiệu PostgreSQL

PostgreSQL là gì?

 PostgreSQL là một HQTCSDL quan hệ và đối tượng dựa trên Postgres (ORDBMS: object-relational database management system)

 Được phát triển bởi khoa điện toán của đại học California tại Berkeley

 PostgreSQL là một chương trình mã nguồn mở xây dựng trên mã nguồn ban đầu của đại học Berkeley

 PostgreSQL theo chuẩn SQL99

 Được phát triển từ hơn 15 năm, tương thích chuẩn SQL, khả năng làm việc trên cơ sở dữ liệu lớn, đang dần tiến gần đến doanh nghiệp

Trang 10

Giới Thiệu PostgreSQL

 Giao diện lập trình ứng dụng

 Công cụ hỗ trợ lập trình

 Công cụ quản trị

 Được viết bằng ngôn ngữ C

 Hệ điều hành: đa hệ điều hành

 Thể loại: ORDBMS (object-relational database management system)

 Website: http://www.postgresql.org/

Trang 11

Đặc điểm PostgreSQL

Câu truy vấn phức hợp (complex query).

Khóa ngoại (foreign key).

Thủ tục sự kiện(trigger).

 Các khung nhìn(view)

Tính toàn vẹn của các giao tác (trigger).

Kiểm tra truy cập đồng thời đa phiên bản (multiversion concurrency control).

 PostgreSQL có thể dùng trong nhiều trường hợp, như tạo ra kiểu dữ liệu, hàm, toán tử, hàm tập hợp, ngôn ngữ theo thủ tục

Trang 12

Lịch sử của PostgreSQL

 Từ INGRES đến POSTGRES (1977-1994): Năm 1971 được giáo sư Michael Stonebraker nghiên cứu.

 INGRES: Ra đời vào năm 1977 là mô hình quan hệ.

 POSTGRES: Phát triển năm 1986, là mô hình đối tượng, ngôn ngữ truy vấn QUEL.

o Hỗ trợ ngôn ngữ SQL từ năm 1994.

o Phiên bản Postgres95 ra đời vào năm 1995.

o Phiên bản PostgreSQL 6.0 ra đời vào năm 1996.

Trang 13

Lịch sử của PostgreSQL

Trang 14

PostgreSQL và các HQT CSDL khác

Thông tin chung

Trang 15

PostgreSQL và các HQT CSDL khác

Hệ điều hành được hỗ trợ

Trang 16

PostgreSQL và các HQT CSDL khác

Tính năng cơ bản

Trang 17

PostgreSQL và các HQT CSDL khác

Các đối tượng khác

Trang 20

Ngôn ngữ SQL

 PostgreSQL là hệ thống QTCSDL quan hệ

 Mỗi Table tập trung các dòng

o Mỗi dòng của 1 bảng có cùng các cột được đặt tên

o Mỗi cột có 1 kiểu dữ liệu cụ thể

Trang 21

Ngôn ngữ SQL

 Insert

 Xác định thứ tự của giá trị insert

INSERT INTO <tên bảng> VALUES (<giá trị thuộc tính>,<giá trị thuộc tính>,…);

 Không xác định thứ tự của giá trị insert

INSERT INTO <tên bảng>(<tên thuộc tính>,<tên thuộc tính>,…) VALUES (<giá trị thuộc tính>,<giá trị thuộc tính>,…);

Trang 22

Ngôn ngữ SQL

 Có thể sử dụng để tải một lượng lớn dữ liệu từ tập tin văn bản có dữ liệu theo cấu trúc của bảng

COPY <tên bảng> FROM <đường dẫn file>;

COPY sinhvien(hoten,ngaysinh,noisinh,diemlt,diemth,lop) FROM ‘D:\test.txt’ DELIMITER(‘,’);

Nội dung test.txt

Ly Minh, 1989-10-10,Ben tre,7,8,10HCA

Ly Hung, 1989-11-11,Ben tre,7,9,10HCB

Trang 23

Ngôn ngữ SQL

 Truy vấn toàn bộ bảng

SELECT * FROM <tên bảng>;

 Truy vấn thuộc tính cụ thể của bảng

SELECT <tên thuộc tính>,… FROM <tên bảng>;

 Tính toán trên thuộc tính hiển thị

SELECT MSSV, (diemlt+diemth)/2 AS diem

FROM SinhVien;

Trang 24

Ngôn ngữ SQL

 Lọc dữ liệu: AND, OR, NOT

SELECT * FROM SinhVien

WHERE lop = ’10HCA’

AND diem>8.0;

 Lấy dữ liệu không trùng lắp: DISTINCT

SELECT DISTINCT noisinh

FROM SinhVien;

 Sắp xếp kết quả truy vấn: ORDER BY

SELECT DISTINCT noisinh

FROM SinhVien

ORDER BY noisinh;

Trang 25

Ngôn ngữ SQL

 Truy vấn bằng phép kết bảng

o Có những record không trùng khớp giữa 2 bảng => Một số TH sẽ mất mát dữ liệu

o SELECT mssv, hoten, ngaysinh, noisinh, diem, lop

FROM SinhVien sv, Lop l WHERE sv.lop=l.tenlop;

 Truy vấn bằng JOIN

o Inner join

Trang 26

Ngôn ngữ SQL

o Outer join

• Left outer join

Table bên trái của phép left outer join mỗi dòng được lấy ra duy nhất 1 lần, table bên phải sẽ chỉ lấy ra những dòng trùng khớp với dòng của table bên trái

SELECT * FROM SinhVien sv

LEFT OUTER JOIN Lop l ON(sv.tenlop=l.tenlop);

Trang 27

Ngôn ngữ SQL

o Outer join

Right outer join

Table bên phải của phép right outer join mỗi dòng được lấy ra duy nhất 1 lần, table bên trái sẽ chỉ lấy ra những dòng trùng khớp với dòng của table bên phải

SELECT * FROM SinhVien sv

RIGHT OUTER JOIN Lop l ON(sv.tenlop=l.tenlop);

Trang 28

Ngôn ngữ SQL

 Count: Đếm số record truy vấn

SELECT count(*) FROM SinhVien;

 Sum: Tính tổng theo một tiêu chí

SELECT sum(diem) FROM SinhVien;

 Avg: Tính trung bình cho một tiêu chí

SELECT avg(diem) FROM SinhVien;

Trang 29

Ngôn ngữ SQL

 Max: Tìm giá trị lớn nhất cho thuộc tính truy xuất(select)

SELECT max(diem) FROM SinhVien;

 Min: Tìm giá trị nhỏ nhất cho thuộc tính truy xuất(select)

SELECT min(diem) FROM SinhVien;

 Having: Lựa chọn sau khi gom nhóm(where)

SELECT lop, max(diem) FROM SinhVien

GROUP BY lop HAVING max(diem)<8.0;

Trang 30

Ngôn ngữ SQL

UPDATE <tên bảng>

SET <tên thuộc tính>=<giá trị thuộc tính>,…

WHERE <thuộc tính>=<điều kiện thuộc tính>;

 Xóa một vài dòng của bảng

DELETE FROM <tên bảng>

WHERE <thuộc tính>=<điều kiện thuộc tính>;

 Xóa toàn bộ dữ liệu của bảng

Trang 32

double precision Độ chính xác biến đổi

Giá trị không chính xác

Độ chính xác 15 chữ số thập phân

numeric Người dùng chỉ định Không giới hạn

serial Dữ liệu kiểu int tăng tự động 1 đến 2147483647

Trang 33

Định nghĩa kiểu dữ liệu

character(n) Chiều dài cố định, thêm khoảng trắng nếu kích thước chuỗi thực tế không đạt kích

thước khai báo.

Chuỗi vượt quá kích thước khai báo sẽ bị cắt bỏ

character varying(n) Chiều dài thay đổi có giới hạn

Chuỗi vượt quá kích thước khai báo sẽ bị cắt bỏ

text Chiều dài thay đổi không giới hạn

Trang 34

Định nghĩa kiểu dữ liệu

Timestamp Ngày và thời gian trong khoảng 1902 đến 2038 2012-05-20 20:38:40

date Ngày 2012-05-20

time Thời gian của ngày 20:38:40

interval Khoảng thời gian 7 day, 3 year 2 month,

bit(x) x cố định Bị lỗi nếu chuỗi ngắn hơn hoặc dài hơn x.

bit varying(x) x thay đổi Bị lỗi nếu chuỗi dài hơn x.

bit Tương đương bit(1)

Trang 35

Định nghĩa kiểu dữ liệu

Trang 37

Defication Data Type

Khởi tạo

CREATE TYPE name AS

( [ attribute_name data_type [ COLLATE collation ] [, ] ] )

Ví dụ:

CREATE TYPE compfoo AS (f1 int, f2 text);

CREATE FUNCTION getfoo() RETURNS SETOF compfoo AS

$$ SELECT fooid, fooname FROM foo $$

LANGUAGE SQL;

Trang 38

Defication Data Type

CREATE TYPE name AS ENUM ( [ 'label' [, ] ] )

Ví dụ:

CREATE TYPE bug_status AS ENUM ('new', 'open', 'closed');

CREATE TABLE bug ( id serial, description text, status bug_status);

Trang 39

Defication Data Type

DROP TYPE [ IF EXISTS ] name [, ] [CASCADE | RESTRICT]

 CASCADE: Tự động xóa các đối tượng phụ thuộc vào loại dữ liệu(như table column, function, operator)

 RESTRICT: Từ chối xóa loại dữ liệu nếu có đối tượng phụ thuộc vào nó Đây là mặc định

Trang 40

Defication Data Type

Chỉnh sửa

 Sửa tên của loại dữ liệu

ALTER TYPE name RENAME TO new_name [ CASCADE | RESTRICT ]

Vd:

ALTER TYPE electronic_mail RENAME TO email;

 Sửa tên thuộc tính của loại dữ liệu

ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name

Trang 41

Defication Data Type

 Thêm giá trị cho enumerated type

ALTER TYPE name ADD VALUE new_enum_value [ { BEFORE | AFTER } existing_enum_value ]

Vd:

ALTER TYPE colors ADD VALUE 'orange' AFTER 'red';

 Set lại schema cho loại dữ liệu

ALTER TYPE name SET SCHEMA new_schema

Vd:

ALTER TYPE email SET SCHEMA customers;

Trang 42

Defication Data Type

 Thêm thuộc tính vào loại dữ liệu đã tồn tại

ALTER TYPE name ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]

Vd:

ALTER TYPE compfoo ADD ATTRIBUTE f3 int;

 Xóa thuộc tính cho loại dữ liệu đã tồn tại

ALTER TYPE name DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE|RESTRICT ]

 Chỉnh sửa thuộc tính của loại dữ liệu đã tồn tại

ALTER TYPE name ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE

| RESTRICT ]

Trang 44

Hàm và các toán tử

@ Giá trị tuyệt đối

Trang 45

Hàm và các toán tử

 Function

abs(x) Giá trị tuyệt đối abs(-17.4) 17.4

mod(y, x) Lấy dư của y/x Mod(9,4) 1

degrees(dp) Radian sang độ degrees(0.5) 28.6478897565412

radians(dp) Độ sang radian radians(28.64) 0.499862297771176

round(dp) Làm tròn lấy phần nguyên round(42.4) 42

round(v numeric,s integer) Làm tròn lấy s chữ số round(42.4382, 2) 42.44

Trang 46

Hàm và các toán tử

initcap(text) Chuyển ký tự đầu cảu mỗi từ thành chữ in

hoa

initcap(’hi thomas’) Hi Thomas

octet_length(string) Số byte trong chuỗi octet_length(‘tom’) 3

char_length(string)

or character_length(string)

Số ký tự trong chuỗi char_length(‘tom’) 3

bit_length(string) Số bit trong chuỗi bit_length(‘tom’) 24

length(string) Chiều dài của chuỗi length(‘tom’) 3

repeat(text, integer) Lặp lại chuỗi theo số lần repeat(Pg, 3) PgPgPg

Trang 47

Hàm và các toán tử

age(timestamp) Tính đến ngày hiện tại age(timestamp'1988-10-02') 23 years 7 months 18 days

age(timestamp,timestamp) Tính từ thời gian nào đến thời gian nào age('2010-10-02',

timestamp'1988-10-02');

22 years

current_time Lấy giờ hiện tại 22:37:30.07+07

current_timestamp Lấy ngày, giờ hiện tại

date_part(text, timestamp) Lấy theo yêu cầu date_part('hour',

timestamp'2012-05-20 20:38:40')

20

date_trunc(text, timestamp) Cắt theo yêu cầu date_trunc('hour', timestamp '2012-05-20 20:38:40') 2012-05-20 20:00:00

Trang 48

Function Definition

CREATE [OR REPLACE] FUNCTION name([arguments])

RETURNS [Data type] AS

$$

Function definition

$$

LANGUAGE plpgsql;

Trang 49

Function Definition

 Tạo function cộng hai số nguyên

CREATE [OR REPLACE] FUNCTION Cong(a int, b int) RETURNS int AS

$$BEGIN return a+b;

END$$

LANGUAGE plpgsql ;

 Khi không cần xác định tên tham số truyền vào: sử dụng $a, $b

CREATE [OR REPLACE] FUNCTION Cong( int, int) RETURNS int AS

Trang 50

Function Definition

 Tạo function tính tuổi của một sinh viên khi biết mã sinh viên

CREATE OR REPLACE FUNCTION TinhTuoi(int) RETURNS interval AS

'SELECT age(ngaysinh) FROM sinhvien WHERE masinhvien=$1;' LANGUAGE sql;

Trang 51

Function Definition

 Các kiểu return của function

 void: không có giá trị trả ra

• Xóa sinh viên có điểm dưới 5.0

CREATE FUNCTION xoasinhvien() RETURNS void AS

Trang 52

Function Definition

 Các kiểu return của function

 Data type (như int, text, double, table, boolean):kết quả trả ra 1 giá trị duy nhất mặc dù có nhiều dòng thỏa

• Trả về kiểu dữ liệu là một table chỉ có 1 dòng

CREATE FUNCTION sinhvien_diem(double precision ) RETURNS sinhvien AS

'SELECT * FROM sinhvien WHERE diem > $1;‘

LANGUAGE sql;

• Trả về kiểu boolean

CREATE FUNCTION xoasinhvien() RETURNS boolean AS

$$Begin DELETE FROM sinhvien WHERE sinhvien.diem <5.0;

return true;

Trang 53

Function Definition

 Các kiểu return của function

 Setof datatype (như int, text, double, table): kết quả trả ra là nhiều dòng nếu có nhiều dòng thỏa

• Trả về kiểu dữ liệu là một table có nhiều dòng

CREATE FUNCTION sinhvien_diem(double precision ) RETURNS setof sinhvien AS

'SELECT * FROM sinhvien WHERE diem > $1;' LANGUAGE sql;

• Trả về kiểu setof text

CREATE FUNCTION sinhvien_diem(double precision ) RETURNS setof text AS

'SELECT tensinhvien FROM sinhvien WHERE diem > $1;

Trang 54

DROP FUNCTION name_function ([datatype_argument],[datatype_argument );

DROP FUNCTION sinhvien_diem(double precision ) ;

Trang 56

Tính năng khác

 Tạo trigger

CREATE TRIGGER name_trigger

[ BEFORE | AFTER ] [ INSERT | DELETE | UPDATE [ OR ] ]

ON relation

FOR EACH [ ROW | STATEMENT ]

EXECUTE PROCEDURE name_procedure (arguments);

Trang 57

Tính năng khác

 Kiểm tra khi thêm hay cập nhật điểm cho sinh viên

 Tạo proceduce sử dụng trong trigger:

CREATE OR REPLACE FUNCTION svKha()

Trang 58

Tính năng khác

 Tạo trigger kiểm tra điểm của sinh viên trên bảng sinhvien

CREATE TRIGGER trg_SVKha

BEFORE INSERT OR UPDATE

ON "SinhVien"

FOR EACH ROW

EXECUTE PROCEDURE svKha();

Trigger trg_SVKha sẽ được tự động gọi thực hiện khi INSERT hay UPDATE trên bảng sinhvien

Trang 60

Tính năng khác

 Hỗ trợ sẵn các cấu trúc B-Tree (mặc định), hash

 Ver 9.1 hỗ trợ thêm các chỉ mục K-Nearest-Neighbour để tìm kiếm các giá trị tương đương nhau

 Chứa đựng tất cả các đối tượng

 Được xem như namespace, cho phép đối tượng cùng tên cùng tồn tại trong một database

Trang 61

 MVCC

 Multiversion Concurrency Control

 Mỗi giao tác sẽ thao tác trên một bản sao của dữ liệu

 Các thay đổi sẽ không thấy được cho đến khi cập nhật

Tính năng khác

Trang 62

 Inheritance

 Kế thừa là khái niệm từ cơ sở dữ liệu hướng đối tượng

Không kế thừa Kế thừa

CREATE TABLE ThuDo (

CREATE TABLE ThuDo ( quocgia char(2)

) INHERITS (cities);

Tính năng khác

Trang 63

 Inheritance

Không kế thừa Kế thừa

• CREATE VIEW ThanhPho AS

SELECT ten, danso

• SELECT ten, danso FROM ONLY ThanhPho WHERE danso >5000000;

Trang 65

 libpq - PostgreSQL's official C application interface

 ECPG - An embedded C system

 Npgsql - NET data provider

 pgoledb - OLEDB interface

Trang 66

Các công cụ hỗ trợ PostgreSQL

 Psql: ứng dụng chính, dạng dòng lệnh

 pgAdmin: giao diện đồ họa, đa nền tảng

 phpPgAdmin: nền web, PHP, phpMyAdmin

 Java

 Microsoft ASP.NET

 PHP

Ngày đăng: 26/06/2014, 23:21

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w