Bài giảng SQL
MỤC LỤC
1. Sql server
2. Truy vấn thông tin
3. Cập nhật dữ liệu
4. Tạo lập và quản lí CSDL
Tham gia đóng góp
Tóm tắt nội dung Bài giảng SQL, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Wynkoop", "520-555-1212") Các trường hợp : - Nếu không có danh sách cột thì được hiểu là mọi cột theo đúng thứ tự vốn có trong bảng. Các giá trị trong danh sách gía trị sẽ được thêm tuân tự cho cột thứ nhất, cột thứ 2, ... insert into customers values ("Caitlin Wynkoop","123 West St.", "520-555-1212") - Có thể thay danh sách giá trị bằng DEFAULT. Lúc này sẽ thêm một dòng mới với các giá trị mặc định được định nghĩa khi tạo bảng. 26/37 Nhập dữ liệu từ bảng khác. Câu lệnh INSERT .... SELECT INSERT INTO DestTableName ( col_1, col_2,...) SELECT c1, c2, ... FROM SourceTableName WHERE Condition Một số Hệ quan trị CSDL cho phép tạo bảng tạm. Bảng tạm sẽ tự động bị xoá khi két nối kết thúc. Ta đã biét rằng các câu lệnh truy vấn thông tin thường phải nối nhiều bảng. Qúa trình này mất thì giờ. Nếu có nhiều câu truy vấn khác nhau cần nối nhiều bảng thì việc tạo bảng tạm thời một lần sẽ làm tăng tốc độ xử lí. Cập nhật dữ liệu - câu lệnh UPDATE UPDATE TableName SET col_1 = val_1, col_2 = val_2 ... WHERE Condition update employees set department = 'SALES', badge = 1232 where name = 'Bob Smith' Các giá trị vế phải có thể là biểu thức, nhưng phải đảm bảo phù hợp kiểu dữ liệu Nếu kích thước quá dài sẽ bị cắt đi. Có thẻ lỗi Overflow nếu giá trị vượt ra ngoài phạm vi hợp lệ. Nếu không có điều khoản Where thì nghĩa là Update mọi dòng của bảng. Xoá dữ liệu - câu lệnh DELETE. Có thể xoá một dòng, nhiều dòng, mọi dòng 27/37 Không thể xoá chỉ một vài cột ( phải Update) DELETE FROM TableName WHERE Condition Thành phần FROM là tuỳ chọn, có thể bỏ qua. Ví dụ. Xoá hết các dòng liên quan đến department 'SALES' delete from employees where department = 'SALES' Lưu ý : cũng giống như câu lệnh Update, nếu thiếu điều khoản Where thì mọi dòng bị xoá. Vậy hãy thận trọng. Nếu muốn xoá mọi dòng của bảng trong các xử lí nhưng bảng vẫn giữ nguyên thì có thể dùng câu lệnh TRUNCAT TRUNCATE TableName Câu lệnh DELETE TableName chỉ xoá nội dung mọi dòng, khung bảng vẫn còn. Muốn xoá hẳn bảng cần dùng lệnh DROP TableName. 28/37 Tạo lập và quản lí CSDL Tạo lập CSDL Những khái niệm chung Việc tạo lập CSDL thuộc nhiều vào hệ thống SQL. Cần tham khảo kĩ tài liệu hướng dẫn. Dưới đây là một số khái niệm chính cần biết về SQL Server. Devices Devices là tệp vật lí trên đĩa để lưu dữ liệu và tệp nhật kí. Nó phải được tạo lập trước khi tạo CSDL. Một database device là để chứa dữ liệu, dump device đểlưu nhật kí giao tác. Có thể tạo device bằng công cụ quản trị với giao diện đồ hoạ hoặc dòng lệnh, ví dụ DISK INIT. DISK INIT NAME = 'logical_name', PHYSNAME= 'physical_name', VDEVNO = virtual_device_number, SIZE = number_of_2K_blocks [, VSTART = virtual_address] Bảng các tham số của DISK INIT Tham số Y nghĩa Logical name Tên của SQL Server. Physical name Tên tệp và đường dẫn đầy đủ. 29/37 virtual device number Sô ID duy nhất cho một device. Có thể nhận các giá trị từ 0 đến 255. Không được trùng với các ID đã có. Sô 0 dành cho master database. Number of 2k blocks Xác định dung lượng đĩa. Tối thiểu là 512 (* 2k = 1M). virtual address Địa chỉ ảo. Tạo CSDL. câu lệnh CREATE DATABASE DB_Name. Cú pháp có thể khác nhau tuỳ từng hệ thống. Dưới đây là của Transact_SQL. CREATE DATABASE database_name [ON {DEFAULT | database_device} [= size] [, database_device [= size]]...] [LOG ON log_device [= size] [,log_device[= size]]...] [FOR LOAD] Các tham số của câu lệnh CREATE DATABASE Tham số Y nghĩa database_name Tên của CSDL. database_device Tên decive. Nếu là DEFAULT thì SQL Server sẽ chọn device cònrỗi tiếp theo. log_device Tên của device dùng ghi nhật kí. FOR LOAD Chỉ khi thực hiện LOAD thì NSD mới thâm nhập được. Tạo lập bảng Câu lệnh - CREATE TABLE 30/37 CREATE TABLE TableName Field1 datatype [not NULL], Field2 datatype [not NULL], Field3 datatype [not NULL], ... Các tên trường, tên bảng phải theo đúng quy định ví dụ - dài không quá 30 kí tự - không phân biệt chữ hoa, thường. - là chữ cái A - Z và một số kí tự khác : _ , # , $ , @ - không trùng với từ khoá, không trùng nhau trong phạm vi tác dụng : trong cùng một Schema, Owner thì tên bảng phải khác nhau, trong một bảng thì tên cột phải khac nhau. - Kiểu dữ liệu, tuỳ quy định của từng hệ thống. Giá trị NULL: Null nghĩa là không chứa giá trị nào, khác với khoảng trắng, số không. Lựa chọn NOT NULL bắt buộc phải cung cấp giá trị cho cột đó mỗi khi thêm một bản ghi mới. Một sô hệ CSDL cho phép ấn định lựa chọn UNIQUE - duy nhất- đối với một cột. Không thẻ có hai giá trị bằng nhau trong cột này. Đây là điều kiện để làm Khoá - Key. - Dưới đây là kiểu dữ liệu của Personal Oracle 7. CHAR xâu kí tự độ dài <= 255, nối thêm khoảng trắng vào cuối xâu. DATE Ngày tháng : thế kỉ, năm, tháng, ngày, giờ, phút, giây. LONG kiểu kí tự daì đến 2 GB. Thường gọi là kiểu Memo LONGRAW kiểu nhị phân binary, dài 2 GB. NUMBER số, dấu phẩy tĩnh hoặc động RAW kiểu nhị phân dài đến 255 byte 31/37 ROWID sô hệ 16 VARCHAR xâu kí tự độ daì thay đổi. Các kiểu dữ liệu của SQL server. Các kiểu số nguyên - Numeric integers - có độ rộng trường cố định. Cho phép tính toán trực tiếp. INT (integer): -(2**31) đến 2**31 -2,147,483,648 đến 2,147,483,647. SMALLINT -32768 đến +32767. TINYINT 0 đến 255. Ví dụ create table number_example (int1 int,int2 smallint,int3 tinyint) INSERT into number_example values (400000000,32767,255) Các kiẻu số thực Floating-point. REAL 3.4E-38 to 3.4E+38. FLOAT[(n)]n =số byte, mặc định là 8 byte nếu không chỉ rõ n. 1.7E-308 to 1.7E+308. n thuộc 1 .. 7, là real. Nếu n thuộc đoạn 8 .. 15, thì giống như không chỉ rõ n. Ví dụ create table precision_example (num1 real,num2 float) INSERT into precision_example values (4000000.1234,4000000.1234) 32/37 select * from precision_example num1 num2 ------------------- -------------------- 4000000.0 4000000.1234 Các kiểu số thực decimal[(p[, s])] numeric[(p[, s])] p là tổng số chữ số. S là số chữ số sau dấu chấm. Phạm vi 10**38-1 đến -10**38 vói 2 .. 17 byte. Mặc định p = 18;mặc định s = 0. Ví dụ create table definition_example (num1 decimal,num2 numeric(7,6)) INSERT into definition_example values (123456789123456789,1.123456) select * from definition_example num1 num2 --------------------------------- 123456789123456789 1.123456 Kiểu xâu kí tự - CHAR CHAR Rất hay dùng 33/37 Giá trị là xâu trong cặp dấu nháy đơn ' ' hoặc nháy kép " " Ví dụ CHAR(15), mỗi giá trị là 15 byte, có thể chứa 15 kí tự. Nếu ngắn hơn được nối thêm khoảng trắng cho đâỳ. VARCHARxâu độ dài thay đổi. varCHAR(15), nghĩa là độ dài tối đa là 15 kí tự. create table string_example (CHAR1 CHAR(5),CHAR2 varCHAR(5)) INSERT into string_example values ('AB','CD') select * from string_example CHAR1CHAR2 ---------- AB CD . datetime smalldatetime Rộng 8 byte. 4 byte cho ngày tháng, 4 byte cho thời gian. dạng số Y nghĩa tương đương 710624 June 24, 1971 19710624 June 24, 1971 1971 January 1, 1971 71 Không hợp lệ '' January 1, 1900 12:00 A.M. smalldatetiME 34/37 từ 1/1/1900 đến 6/6/2079. Thêm cột, sửa đổi cột. Câu lệnh ALTER TABLE. Tác dụng sửa đôỉ cấu trúc của bảng. Thêm cột ALTER TABLE TableName ADD NULL, NULL... Sửa đổi cột ALTER TABLE TableName MODIFY , ,... [ constraint] Một số hạn chế. - thường chỉ dùng để thay đỏi độ rộng cột. Có thể tăng hoặc giảm độ rộng cột. Tuy nhien chỉ giảm được nếu không có giá trị dữ liệu nào dài hơn. - có thể đổi từ NOT NULL sang NULL và ngược lại. Tuy nhiên, chỉ có thể đổi từ NULL sang NOT NULL nếu mọi dòng hiện có đều có giá trị (Not Null) tại cột này. Huỷ bảng và huỷ CSDL DROP TABLE TableName DROP BATABASE DatabaseName 35/37 Tham gia đóng góp Tài liệu: Bài giảng Sql Biên tập bởi: Vien CNTT – DHQG Hanoi URL: Giấy phép: Module: Sql server Các tác giả: Vien CNTT – DHQG Hanoi URL: Giấy phép: Module: Truy vấn thông tin Các tác giả: Vien CNTT – DHQG Hanoi URL: Giấy phép: Module: Cập nhật dữ liệu Các tác giả: Vien CNTT – DHQG Hanoi URL: Giấy phép: Module: Tạo lập và quản lí CSDL Các tác giả: Vien CNTT – DHQG Hanoi URL: Giấy phép: 36/37 Chương trình Thư viện Học liệu Mở Việt Nam Chương trình Thư viện Học liệu Mở Việt Nam (Vietnam Open Educational Resources – VOER) được hỗ trợ bởi Quỹ Việt Nam. Mục tiêu của chương trình là xây dựng kho Tài nguyên giáo dục Mở miễn phí của người Việt và cho người Việt, có nội dung phong phú. Các nội dung đểu tuân thủ Giấy phép Creative Commons Attribution (CC-by) 4.0 do đó các nội dung đều có thể được sử dụng, tái sử dụng và truy nhập miễn phí trước hết trong trong môi trường giảng dạy, học tập và nghiên cứu sau đó cho toàn xã hội. Với sự hỗ trợ của Quỹ Việt Nam, Thư viện Học liệu Mở Việt Nam (VOER) đã trở thành một cổng thông tin chính cho các sinh viên và giảng viên trong và ngoài Việt Nam. Mỗi ngày có hàng chục nghìn lượt truy cập VOER (www.voer.edu.vn) để nghiên cứu, học tập và tải tài liệu giảng dạy về. Với hàng chục nghìn module kiến thức từ hàng nghìn tác giả khác nhau đóng góp, Thư Viện Học liệu Mở Việt Nam là một kho tàng tài liệu khổng lồ, nội dung phong phú phục vụ cho tất cả các nhu cầu học tập, nghiên cứu của độc giả. Nguồn tài liệu mở phong phú có trên VOER có được là do sự chia sẻ tự nguyện của các tác giả trong và ngoài nước. Quá trình chia sẻ tài liệu trên VOER trở lên dễ dàng như đếm 1, 2, 3 nhờ vào sức mạnh của nền tảng Hanoi Spring. Hanoi Spring là một nền tảng công nghệ tiên tiến được thiết kế cho phép công chúng dễ dàng chia sẻ tài liệu giảng dạy, học tập cũng như chủ động phát triển chương trình giảng dạy dựa trên khái niệm về học liệu mở (OCW) và tài nguyên giáo dục mở (OER) . Khái niệm chia sẻ tri thức có tính cách mạng đã được khởi xướng và phát triển tiên phong bởi Đại học MIT và Đại học Rice Hoa Kỳ trong vòng một thập kỷ qua. Kể từ đó, phong trào Tài nguyên Giáo dục Mở đã phát triển nhanh chóng, được UNESCO hỗ trợ và được chấp nhận như một chương trình chính thức ở nhiều nước trên thế giới. 37/37
File đính kèm:
- Bài giảng SQL.pdf