1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập nhóm khoa hệ thống thông tin quản lý Đề tài tìm hiểu về sqlite

62 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 62
Dung lượng 2,75 MB

Nội dung

Các ứng dụng tương tác với cơ sở dữ liệu SQLite đọc và ghi trực tiếp từ các tệp cơ sở dữ liệu được lưu trữ trên đĩa.. Ứng dụng lớn và phức tạp: SQLite không được thiết kế để xử lý các ứn

Trang 1

TRƯỜNG ĐẠI HỌC NGÂN HÀNG THÀNH PHỐ HỒ CHÍ MINH

Sinh viên thực hiên : Nhóm 7

TP Hồ Chí Minh, ngày 29 tháng 5 năm

2023

BÀI TẬP NHÓM

KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ

ĐỀ TÀI : TÌM HIỂU VỀ SQLITE

-Phạm Minh Châu

- Lê Nguyễn Thùy Linh

- Phan Kim Ngân

- Bùi Kim Thanh

- Tô Hoàng Mỹ Linh

Trang 2

MỤC LỤC

1 TỔNG QUAN VỀ SQLite 1

1.1 Giới thiệu về SQLite 1

1.2 Lịch sử hình thành và phát triển 2

1.3 Các phiên bản SQLite nổi bật 3

2 Tính năng 5

2.1 Ưu và nhược điểm so với các hệ quản trị khác 5

2.1.1 Ưu điểm 5

2.1.2 Nhược điểm 5

2.2 Các lỗ hổng Sqlite 6

3.Các ứng dụng của SQLite trong cuộc sống 7

4 Các toán tử trong SQLite 8

4.1 Toán tử số học 8

4.2 Toán tử so sánh 9

4.3 Toán tử logic 10

4.4 Toán tử bitwise 11

5 Các kiểu dữ liệu cơ bản trong SQLite 12

5.1 Class lưu trữ kiểu dữ liệu trong SQLite 13

5.2 Kiểu dữ liệu Boolean trong SQLite 14

5.3 Kiểu dữ liệu date and time trong SQLite 14

6 Cách tạo bảng và xóa bảng 15

6.1 Tạo bảng 15

6.2 Xóa bảng 15

7 Lệnh Insert, Update, Delete dữ liệu - Mệnh đề Where 15

7.1 Cú pháp lệnh Insert 15

7.2 Cú pháp lệnh Update + Where 16

7.3 Cú pháp lệnh Delete + WHERE 16

8 Ràng buộc trong SQLite 17

8.1 Ràng buộc là gì? 17

8.2 Các ràng buộc phổ biến trong SQLite: 17

9 Mệnh đề LIKE, GLOB, LIMIT và DISTINCT 17

9.1 Mệnh đề LIKE 17

9.2 Mệnh đề GLOB 18

9.3 Mệnh đề LIMIT 18

9.4 Mệnh đề DISTINCT 18

10 Select, Order By, Group By, Having 19

10.1 SELECT 19

10.2 ORDER BY 19

10.3 GROUP BY 20

10.4 HAVING 20

11 Lệnh JOIN 20

11.1 Lệnh Join trong SQLite là gì? 20

11.2 CROSS JOIN trong SQLite 21

11.3 INNER JOIN trong SQLite 21

11.4 OUTER JOIN trong SQLite 21

12 Một số hàm trong SQLite 22

Tài liệu tham khảo 23

DANH MỤC HÌNH ẢNH 25

DANH MỤC BẢNG BIỂU 26

Trang 3

1 TỔNG QUAN VỀ SQLite

1.1 Giới thiệu về SQLite

SQLite là thư viện phần mềm cung cấp hệ quản trị cơ sở dữ liệu quan hệ, được viết dưới dạng dưới dạng thư viện bằng ngôn ngữ lập trình C Chữ Lite trong SQLite có nghĩa là nhẹ về thiết lập, quản trị cơ sở dữ liệu và các tài nguyên cần thiết Hoạt động đa nền tảng

có sẵn trên Android, BSD, iOS, Linux, Mac, Solaris, Windows, dễ dàng dịch chuyển sang các hệ thống khác

SQLite có các tính năng đáng chú ý sau: khép kín, không có máy chủ, không cấu hình, giao dịch

- Không có máy chủ

Thông thường, một RDBMS như MySQL, PostgreSQL, v.v., yêu cầu một quy trình máy chủ riêng để hoạt động Các ứng dụng muốn truy cập máy chủ cơ sở dữ liệu sử dụng giao thức TCP/IP để gửi và nhận yêu cầu Đây được gọi là kiến trúc máy khách/máy chủ

Hình 1 Sơ đồ minh họa kiến trúc máy khách/máy chủ RDBMS

SQLite không hoạt động theo cách này SQLite không yêu cầu máy chủ chạy Cơ sở dữ

liệu SQLite được tích hợp với ứng dụng truy cập cơ sở dữ liệu Các ứng dụng tương tác với cơ sở dữ liệu SQLite đọc và ghi trực tiếp từ các tệp cơ sở dữ liệu được lưu trữ trên đĩa

Hình 2 Sơ đồ minh họa kiến trúc SQLite không máy chủ

- Khép kín

SQLite yêu cầu hỗ trợ tối thiểu từ hệ điều hành hoặc thư viện bên ngoài Điều này làm choSQLite có thể sử dụng được trong mọi môi trường, đặc biệt là trong các thiết bị nhúng như iPhone, điện thoại Android, bảng điều khiển trò chơi, trình phát phương tiện cầm tay, v.v

Trang 4

SQLite được phát triển bằng ANSI-C Mã nguồn có sẵn dưới dạng tệp sqlite3.c lớn và tệp tiêu đề của nó sqlite3.h Nếu bạn muốn phát triển một ứng dụng sử dụng SQLite, bạn chỉ cần thả các tệp này vào dự án của mình và biên dịch nó bằng mã của bạn

- Không cấu hình

Do kiến trúc không có máy chủ, bạn không cần phải “cài đặt” SQLite trước khi sử dụng Không có quy trình máy chủ nào cần được định cấu hình, bắt đầu và dừng Ngoài ra, SQLite không sử dụng bất kỳ tệp cấu hình nào

- Giao dịch

Tất cả các giao dịch trong SQLite đều hoàn toàn tuân thủ ACID Điều đó có nghĩa là tất cảcác truy vấn và thay đổi đều nguyên tử, nhất quán, biệt lập và lâu bền Nói cách khác, tất

cả các thay đổi trong một giao dịch diễn ra hoàn toàn hoặc hoàn toàn không xảy ra ngay

cả khi xảy ra tình huống không mong muốn như sự cố ứng dụng, mất điện hoặc sự cố hệ điều hành

- Các tính năng đặc biệt khác của SQLite

· SQLite sử dụng các kiểu động cho bảng Điều đó có nghĩa là bạn có thể lưu trữ bất kỳ giá trị nào trong bất kỳ cột nào, bất kể loại dữ liệu

· SQLite cho phép một kết nối cơ sở dữ liệu duy nhất truy cập đồng thời nhiều tệp cơ sở dữ liệu Điều này mang lại nhiều tính năng hay như nối các bảng trong các cơ sở dữ liệu khác nhau hoặc sao chép dữ liệu giữa các cơ sở dữ liệu trong một lệnh

· SQLite có khả năng tạo cơ sở dữ liệu trong bộ nhớ hoạt động rất nhanh

1.2 Lịch sử hình thành và phát triển

Trang 5

1.3 Các phiên bản SQLite nổi bật

Trang 6

4

Trang 7

2 Sqlite là phần mềm tự do với mã nguồn mở và miễn phí Bất kỳ ai có thể sử dụng nó miễn phí và có thể tùy chỉnh mã nguồn theo nhu cầu của họ.

3 Nhỏ gọn và tốc độ cao: với cấu hình đầy đủ chỉ không đầy 300 KB và không yêu cầu cài đặt phức tạp Tốc độ xử lý rất nhanh, cho phép xử lý dữ liệu ở tốc độ cao trong các ứng dụng nhỏ

4 Không yêu cầu máy chủ: SQLite có thể được sử dụng trên máy tính độc lập mà không cần phải thiết lập máy chủ CSDL riêng biệt Điều này giúp giảm chi phí phát triển và triển khai ứng dụng

5 Hỗ trợ tốt cho nhiều ngôn ngữ lập trình: SQLite được hỗ trợ trên hầu hết các ngôn ngữlập trình phổ biến như C/C++, Java, Python, PHP,

6 Tính bảo mật cao: hỗ trợ mã hóa và có tính bảo mật cao Dữ liệu được lưu trữ trong SQLite có thể được mã hóa để đảm bảo an toàn

7 Tin cậy: các hoạt động transaction (chuyển giao) nội trong cơ sở dữ liệu được thực hiện trọn vẹn, không gây lỗi khi xảy ra sự cố phần cứng

8 Hỗ trợ hầu hết các tính năng của ngôn ngữ truy vấn SQL theo chuẩn SQL 92 (chỉ có một vài đặc điểm không hỗ trợ)

9 SQLite tuân thủ 4 tính chất ACID (là tính nguyên tổ (Atomic), tính nhất quán (Consistent), tính cô lập (Isolated), và tính bền vững (Durable) )

2.1.2 Nhược điểm

1 Quản lý người dùng: SQLite thiếu khả năng đa người dùng có thể được tìm thấy trong các hệ thống RDBMS chính thức như MySQL và PostgreSQL Điều này dẫn đến việc thiếu kiểm soát truy cập chi tiết, hệ thống quản lý người dùng thân thiện và khả năng bảo mật ngoài việc mã hóa chính tệp cơ sở dữ liệu

2 Ứng dụng lớn và phức tạp: SQLite không được thiết kế để xử lý các ứng dụng lớn và phức tạp, vì nó không hỗ trợ các tính năng như chia sẻ nhiều kết nối, khả năng mở rộng và sửa đổi cấu trúc dữ liệu khi chạy

3 Ứng dụng có tần suất ghi dữ liệu cao: SQLite là một DBMS dựa trên tệp,có thể gây ra các vấn đề về hiệu suất với các bộ dữ liệu lớn do các giới hạn của hệ thống tệp Sqlite không hỗ trợ các tính năng như phân hoá ,phục hồi để khắc phục các sai sót khi ghi dữliệu.Sử dụng cơ chế coarse-gained locking nên trong cùng một thời điểm có thể hỗ trợ nhiều người đọc dữ liệu, nhưng chỉ có 1 người có thể ghi

SQLite không phải là lựa chọn hoàn hảo để đáp ứng các nhu cầu xử lý trên một khối lượng dữliệu lớn, phát sinh liên tục Nguyên tắc chung là bạn nên tránh sử dụng SQLite trong các tình

Trang 8

sử dụng Điều này càng làm phạm vi ảnh hưởng của lỗ hổng như Mag Magellan có phạm vi ảnh hưởng rộng hơn.

Theo các chuyên gia bảo mật, nếu lỗ hổng này khai thác thành công nó sẽ cho phép tin tặc có quyền truy cập từ xa vào cơ sở dữ liệu SQLite để thực thi mã độc hại tiềm tàng, thậm chí làm sập trình duyệt web của người dùng

● Lỗ hổng Magellan

Magellan gây nguy cơ tin tặc tấn công hàng triệu ứng dụng Lỗ hổng có thể cho phép kẻ tấn công từ xa thực thi mã tùy ý hoặc mã độc trên các thiết bị bị ảnh hưởng để gây rò rỉ bộ nhớ chương trình hoặc làm sập ứng dụng

Do các trình duyệt web xây dựng dựa trên Chromium (gồm Google Chrome, Opera, Vivaldi

và Brave) hỗ trợ SQLite thông qua API cơ sở dữ liệu SQL quá hạn, kẻ tấn công từ xa có thể

dễ dàng tấn công người dùng các trình duyệt bị ảnh hưởng chỉ bằng cách thuyết phục họ truy cập một trang web tự tạo

SQLite đã phát hành phiên bản 3.26.0 để giải quyết Magellan Google cũng đã phát hành phiên bản Chromium 71.0.3578.80 để khắc phục sự cố và tung bản đã vá lên phiên bản mới nhất của trình duyệt web Google Chrome và Brave

3.Các ứng dụng của SQLite trong cuộc sống

● Cơ sở dữ liệu cho websites

Bởi vì SQLite không yêu cầu cấu hình và lưu trữ thông tin trong các tệp đĩa thông thường nênSQLite là lựa chọn phổ biến làm cơ sở dữ liệu để quay lại các trang web vừa và nhỏ (thường

là các trang web tĩnh hoặc ít hơn 100 ngàn lượt truy cập/ngày)

Trang web SQLite (https://www.sqlite.org/), xử lý khoảng 400 nghìn đến 500 nghìn yêu cầu HTTP mỗi ngày, khoảng 15-20% trong số đó động chạm vào CSDL Thiết lập chạy trên một máy ảo duy nhất chia sẻ một máy chủ vật lý với 23 máy chủ khác và vẫn giữ mức trung bình tải dưới 0,1 hầu hết thời gian

Ngoài ra, SQLite còn được Firefox sử dụng với các tiện ích như: SQLite Manager, SQLite Viewer,

Trang 9

● Lưu trữ dữ liệu trong hệ điều hành

di động

Hệ điều hành, phần không thể thiếu trên mọi

thiết bị di động (iOS, Android, BlackBerry, ) đều sử dụng Sqlite để lưu trữ dữ liệu và đã được cài sẵn với mục đích tạo

điều kiện cho việc phát triển và sử dụng hệ quản trị cơ sở dữ liệu

● Mã hóa cho cơ sở dữ liệu nhúng và

di động

SQLite sử dụng SQLCipher để tăng độ bảo mật nhằm phòngtránh các rủi ro tiềm ẩn bị lấy cắp và chia sẻbất hợp pháp việc sử dụng các ứng dụng để lưu trữ dữ liệu cá nhân hoặc các thông tin quan trọng

Nhờ vào chi phí hoạt động thấp , kích thước nhỏ gọn nó nhanh chóng trở nên phổ biến đối vớicác nhà phát triển ứng dụng trên nền tảng iOS và hiện là giải pháp bảo mật CSDL được sử dụng nhiều nhất

● Cơ sở dữ liệu cho Internet Of Things

SQLite với dung lượng nhẹ hơn (thư viện nén với dung lượng nội dung khoảng 300KB, nếu

bỏ qua các tùy chọn không cần thiết thì con số bạn có được là 180KB Đồng thời, thiết kế Sqlite trong ngăn xếp là 4KB và trong heap là 100KB)

Bên cạnh đó, với trường hợp tính toán phức tạp, Sqlite lưu trữ kết quả một lần vào CSDL và không tính lại nhiều lần giúp việc xử lý hiệu quả, không làm gián đoạn hay tốn bộ nhớ xử lý

Vì vậy mà Sqlite luôn là một sự lựa chọn hàng đầu về việc lưu trữ dữ liệu cho các thiết bị có

bộ nhớ hạn chế như điện thoại di động, PDA và máy nghe nhạc MP3

Hình 6 Xử lý dữ liệu khi có (b) hoặc không có SQLCipher (a)

Trang 10

4 Các toán tử trong SQLite

Toán tử là một từ dành riêng hoặc một ký tự được sử dụng chủ yếu trong mệnh đề WHERE của câu lệnh SQlite để thực hiện các thao tác Trong SQLite có 4 loại toán tử: toán tử số học, toán tử so sánh, toán tử logic, toán tử bitwise

Trang 11

9

Trang 12

10

Trang 22

4.3 Toán tử logic

Trang 23

21

Trang 38

4.4 Toán tử bitwise

Toán tử bitwise hoạt động trên bit và thực hiện thao tác từng bit

Trang 39

37

Trang 44

Giả sử nếu A = 60; và B = 13, sau đó ở định dạng nhị phân, chúng sẽ như sau:

Trang 45

43

Trang 51

5 Các kiểu dữ liệu cơ bản trong SQLite

Khi tạo bảng, một trong những yếu tố tất yếu mà ta cần có chính là kiểu dữ liệu Mỗi cột, biến

và biểu thức có kiểu dữ liệu liên quan trong SQLite

5.1 Class lưu trữ kiểu dữ liệu trong SQLite

Lớp lưu trữ trong SQLite là khá chung chung so với một kiểu dữ liệu Như,trong lớp lưu trữ TEXT sẽ gồm nhiều kiểu chuỗi có độ dài khác nhau

NULL Giá trị là giá trị NULL

INTEGER Giá trị là số nguyên có dấu, lưu

trữ trong 1, 2, 3, 4, 6 hoặc 8 byte

tùy thuộc vào độ lớn của giá trị

Tương đương với kiểu Long

trong Java

INT,INTEGER,TINYINT, SMALLINT,MEDIUMINT, BIGINT

REAL Giá trị này là một giá trị dấu

phẩy động, được lưu dưới dạng

số dấu phẩy động 8 byte của

IEEE.Tương đương với Double

trong Java

REAL,DOUBLE,DOUBLE PRECISION, FLOAT

TEXT Giá trị là một chuỗi ký tự, có thể

lưu trữ các giá trị chứa ký tự

Unicode Bằng cách sử dụng mã

hóa cơ sở dữ liệu (8,

UTF-16BE hoặc UTF-16LE)

CHARACTER(20),VARCHAR(255),VARYING,CHARACTER(255),NCHAR(55),NATIVE,TEXT, CLOB,CHARACTER(70),NVARCHAR(100)

BLOB Giá trị là kiểu đối tượng nhị

phân,lưu trữ các đối tượng như

hình ảnh, âm thanh, video và tệp

lưu trữ khác Được lưu trữ chính

xác như đầu vào

Không chỉ ra kiểu dữ liệu cụ thể

NUMERIC lưu trữ giá trị số dưới dạng một

chuỗi ký tự, số, thập phân Giúp

NUMERIC,DECIMAL(10,5), BOOLEAN, DATE, DATETIME

Trang 52

lưu trữ các giá trị số với chính

xác cao hơn

Bảng 6 Các Class lưu trữ kiểu dữ liệu trong SQLite

5.2 Kiểu dữ liệu Boolean trong SQLite

SQLite không có lớp lưu trữ Boolean( luận lý ) Thay vào, các giá trị Boolean được lưu dưới dạng số nguyên với 0 (false) và 1 (true)

5.3 Kiểu dữ liệu date and time trong SQLite

SQLite lưu trữ ngày và thời gian dưới dạng các giá trị TEXT, REAL hoặc INTEGER

Class lưu trữ Định dạng thời gian

TEXT Một ngày ở định dạng như "YYYY-MM-DD HH: MM: SS.SSS"REAL Số ngày từ Greenwich November 24, 4714 B.C

INTEGER Số giây kể từ 1970-01-01 00:00:00 UTC

Bảng 7 Các Class lưu trữ kiểu dữ liệu date and time trong SQLite

❖ Ta có thể chọn hàm bất kỳ, Sqlite sẽ cung cấp hàm giúp chuyển đổi giữa các định dạng SQLite cũng có thể lưu được cả hình ảnh nếu chuyển đổi dữ liệu sang dạng Base64 Lưu ý là với cách này thì dung lượng dữ liệu sẽ bị dội lên

Tất cả các loại dữ liệu đều phải chuyển đổi sang 3 dạng ( TEXT, INTEGER, REAL)

để có thể chèn vào trong bảng Tuy nhiên SQLite không kiểm tra dữ liệu Tức là bạn

có thể chèn dữ liệu TEXT vào column dữ liệu dạng INTEGER

6 Cách tạo bảng và xóa bảng

6.1 Tạo bảng

Lệnh CREATE TABLE trong SQLite được sử dụng để tạo một bảng mới trong bất kỳ cơ sở

dữ liệu đã cho nào Về cơ bản, tạo một bảng là cung cấp tên bảng và định nghĩa các cột của nócũng như kiểu dữ liệu của mỗi cột

Cú pháp:

CREATE TABLE database_name.table_name(

column1 datatype PRIMARY KEY(one or more columns),

column2 datatype,

columnN datatype,

);

CREATE TABLE là từ khóa cho hệ thống để tạo một bảng mới

Tên hoặc định danh duy nhất cho bảng theo sau lệnh CREATE TABLE này Bạn có thể xác định tùy ý database name với table name

Trang 53

Cú pháp cơ bản của truy vấn UPDATE kết hợp với mệnh đề WHERE như sau:

Nếu bạn muốn sửa đổi tất cả các giá trị của cột ADDRESS và cột SALARY trong bảng COMPANY, bạn không cần sử dụng mệnh đề WHERE, truy vấn UPDATE sẽ như sau:

7.3 Cú pháp lệnh Delete + WHERE

Cú pháp cơ bản của truy vấn DELETE kết hợp với mệnh đề WHERE như sau:

Trang 54

8.2 Các ràng buộc phổ biến trong SQLite:

NOT NULL: đảm bảo rằng dữ liệu trong cột không nhận giá trị NULL

DEFAULT: Cung cấp cho cột giá trị mặc định nếu dữ liệu của cột chưa được xác định hoặc nhập vào

UNIQUE: Đảm bảo dữ liệu trong cùng một cột khác nhau, không trùng lặp giá trị

PRIMARY KEY (Khóa chính): Dùng để thiết lập khóa chính trên bảng Dữ liệu trên cột đượcxác định là khóa chính phải là duy nhất, không được trùng nhau Đồng thời, khi sử dụng ràng buộc khóa chính với cột hoặc các cột, yêu cầu cột hoặc các cột phải NOT NULL

CHECK: Nhằm bảo đảm tất cả các giá trị trong một cột thoả mãn điều kiện cụ thể

9 Mệnh đề LIKE, GLOB, LIMIT và DISTINCT

9.1 Mệnh đề LIKE

Mệnh đề LIKE được sử dụng để so sánh một giá trị với các giá trị tương tự Nếu biểu thức tìmkiếm khớp với mẫu, thì LIKE sẽ trả về true, mà là 1 Hai ký tự được sử dụng kết hợp với toán

tử LIKE là:

● Ký hiệu phần trăm (%): biểu diễn 0, 1 hoặc một chuỗi ký tự

● Dấu gạch dưới (_): biểu diễn một số hoặc một ký tự đơn

Cú pháp cơ bản của % và _ trong SQLite là:

Ví dụ : SELECT * FROM customers WHERE name LIKE '%J%';

Câu lệnh sẽ trả về các bản ghi trong bảng khách hàng có tên bắt đầu bằng chữ ‘J’

9.2 Mệnh đề GLOB

GLOB là một phiên bản của LIKE Được sử dụng để so khớp một giá trị với các giá trị tương

tự Phân biệt kiểu chữ và nó theo cú pháp của UNIX và thay vì sử dụng % và _ nó sử dụng:

● Dấu sao (*): biểu diễn 0, 1 hoặc nhiều số hoặc ký tự

● Dấu hỏi chấm (?): biểu diễn một số hoặc một ký tự đơn

Cú pháp:

Ngày đăng: 05/12/2024, 16:04

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

TÀI LIỆU LIÊN QUAN

w