JavaScript (1) - Làm quen với JavaScript

Lời nói đầu

Sau khi học xong HTML căn bản, chúng ta có thể tạo ra cấu trúc và ngữ nghĩa cho tài liệu HTML, nghĩa là đã tạo được phần nội dung cho trang web.

Khi đã có kiến thức căn bản về CSS, chúng ta có thể định dạng văn bản, thiết lập màu sắc, định dạng nền, thiết lập kích thước, bố trí các phần tử, tạo các hiệu ứng, và thiết kế bố cục cho một trang web.

Như đã biết, HTML và CSS đều không phải là ngôn ngữ lập trình, HTML là ngôn ngữ đánh dấu, CSS là ngôn ngữ định dạng. Khi hiển thị trang web, trình duyệt sẽ thực thi mã HTML và CSS theo thứ tự từ trái qua phải, từ trên xuống dưới, rồi hiển thị ra màn hình đúng như những gì đang có trong mã nguồn. Đây chính là một trang web tĩnh (static webpage). Muốn có trang web động, cho phép người dùng tương tác được với nó, thì phải sử dụng thêm các ngôn ngữ lập trình.

Phần này sẽ làm quen với lập trình (programming), với ngôn ngữ JavaScript. Nếu bạn đã từng học một ngôn ngữ lập trình thì là một điểm lợi, tuy nhiên, chưa học cũng không sao. Phần này sẽ tìm hiểu những kiến thức căn bản về lập trình, về JavaScript và áp dụng chúng trong làm web front-end.

Nếu xem trang web là một ngôi nhà, thì tới thời điểm này, chúng ta đã có thể làm được phần thô và phần trang trí của ngôi nhà. Trong phần này, chúng ta sẽ tiếp tục học JavaScript, để thêm các chức năng tương tác cho ngôi nhà, như hệ thống cửa, thông gió, điện, nước, chuông.

Đây là cuốn sách thứ 3, TỰ HỌC LÀM WEB, Tập 3 – JavaScript căn bản, trong loạt các cuốn sách về tự học làm web.

Sách được viết theo kiểu tự học, với mỗi chủ đề luôn bắt đầu là các kiến thức căn bản, các khái niệm, các thực hành minh họa; sau đó là các nguồn tài liệu tham khảo để bạn đọc và xem thêm; tiếp theo là các bài tập và thực hành; sau cùng là câu hỏi ôn tập.

Trong sách cũng có các tài liệu tham khảo, câu hỏi, bài tập, bài thực hành bằng tiếng Anh, để giúp người học trải nghiệm, từng bước nâng cao khả năng sử dụng tiếng Anh. Bạn có thể sử dụng danh mục các từ tiếng Anh chuyên ngành tại đây: https://bit.ly/3iLYpgG.

Phần kết thúc sẽ là hướng dẫn làm một số dự án.

Nội dung của cuốn sách này:

– Làm quen với JavaScript

Cuốn sách tiếp theo bạn nên có là TỰ HỌC LÀM WEB, Tập 4 – Back-end căn bản.

Dù đã cố gắng, nhưng tài liệu này chắc chắn còn hạn chế về kiến thức, kĩ năng, nhận định. Mong bạn, luôn đọc trong tâm thế hoài nghi.

1         Làm quen với JavaScript

1.1       Vài thông tin chung về JavaScript

JavaScript là ngôn ngữ lập trình, do Brendan Eich – một nhà công nghệ người Mỹ, phát triển vào năm 1995. Tên ban đầu của JavaScript là Mocha, sau đổi thành LiveScript, hiện nay đang có tên là JavaScript.

Cũng như các ngôn ngữ lập trình khác, JavaScript không ngừng được cải tiến, thay đổi; do vậy tính từ khi ra đời đến nay đã có rất nhiều phiên bản của JavaScript được tạo ra. Hiện nay, mọi người đang sử dụng các phiên bản JavaScript do tổ chức European Computer Manufacturer’s Association (ECMA) chuẩn hóa, nên có tên gọi là ECMAScript (thường được gọi tắt là ES).

Các phiên bản của ECMAScript:

Phiên bản

Năm ra đời

Từ năm 2016, các phiên bản được đặt tên theo năm ra đời

1

1997-06-01

ECMAScript 2016

2

1998-06-01

ECMAScript 2017

3

1998-12-01

ECMAScript 2018

E4X

2004-06-01

ECMAScript 2019

5

2009-12-01

ECMAScript 2020

5.1

2011-06-01

ECMAScript 2021

ES6

2015-06-01

ECMAScript 2022

JavaScript hỗ trợ nhiều kiểu lập trình (hay mẫu hình – paradigm),  như lập trình kịch bản (scripting), lập trình hướng đối tượng (object-oriented), lập trình hàm (functional), lập trình mệnh lệnh (imperative), lập trình hướng sự kiện (event-driven), lập trình thủ tục (procedural).

Tập tin mã nguồn JavaScript có phần mở rộng là .js. Chúng ta có thể sử dụng JavaScript để lập trình web front-end, web back-end, ứng dụng di động, ứng dụng desktop.

Một số thư viện, framework dựa trên JavaScript: jQuery, React, Angular, Vue (web front-end); Express, Next (web back-end); React Native (mobile app), Electron (desktop app).

1.2       Chương trình đầu tiên

Như ở phần trước đã đề cập, chúng ta có thể sử dụng JavaScript để lập trình phần web front-end, web back-end, ứng dụng desktop, ứng dụng di động. Để đơn giản, chúng ta sẽ học JavaScript để làm phần web front-end; tất nhiên những kiến thức nền tảng về JavaScript sẽ vẫn luôn có ích cho bạn trong các môi trường làm việc khác.

Để viết một chương trình bằng ngôn ngữ lập trình bất kì, một vài câu hỏi đầu tiên luôn là: dùng phần mềm gì để viết mã, dùng phần mềm gì để dịch mã nguồn, thực thi chương trình và hiển thị kết quả ở đâu?

Với JavaScript mọi thứ khá đơn giản: bạn có thể lập trình JavaScript bằng web browser, text editor, code editor, hoặc IDE đều được. Để hiển thị kết quả bạn có thể sử dụng Nodejs, tuy nhiên đơn giản nhất bạn chỉ cần sử dụng web brower là đủ. Web browser (trình duyệt web) có thể đóng cả 3 vài trò: trình soạn thảo mã nguồn, trình dịch mã, thực thi và hiển thị kết quả. Trong trình duyệt web có sẵn thành phần dịch mã JavaScript, có tên là JavaScript Interpreter, xem hình minh họa:


Để lập trình nhanh và tiện lợi, chúng ta sẽ dùng các trình viết mã (code editor) hoặc IDE. Ví dụ chúng ta có thể sử dụng các trình viết mã như VS code, Sublime Text.

Chúng ta cùng trải nghiệm viết một chương trình JavaScript đơn giản bằng một số cách.

Cách 1. Dùng cửa sổ console của trình duyệt web

– Mở trình duyệt web (ví dụ Chrome)

– Mở cửa sổ Developer tools (bấm F12, chuột phải vào cửa sổ trình duyệt > chọn Inspect, hoặc vào menu > chọn More tools > chọn Developer tools)

– Trong cửa sổ Developer tools, chọn tab Console

– Nhập vào dòng mã nguồn sau, bấm Enter để xem kết quả:

console.log('chao bac Teo!');

– Để xóa sạch màn hình Console, bấm phím Ctrl + L, hoặc gõ vào lệnh console.clear();

Cách 2. Nhúng mã JavaScript trong tài liệu HTML

 Tạo mới một tập tin HTML bằng trình soạn thảo mã nguồn bất kỳ (ví dụ: Notepad, VS code) và nhập vào đoạn mã sau,

<!DOCTYPE html>

<head>

<title>test</title>

</head>

<body>

            <script>

                        alert("Chao bac Teo");

</script>

</body>

</html>

Lưu lại tập tin và mở bằng trình duyệt để xem kết quả. Một cửa sổ thông báo sẽ xuất hiện, với nội dung là “Chao bac Teo”.

Cách 3. Viết mã JavaScript trong một tập tin .js

– Tạo thư mục rainbow, trong thư mục này tạo hai tập tin rainbow.html và main.js

– Nhập đoạn mã sau cho tập tin rainbow.html

<!DOCTYPE html>

<html>

<head>

<title>I Can Click A Rainbow</title>

</head>

<body>

<button id='button'>click me</button>

<script src='main.js'></script>

</body>

</html>

– Nhập đoạn mã sau cho tập tin main.js

const btn = document.getElementById('button');

const rainbow = ['red','orange','yellow','green','blue','rebeccapurple','violet'];

function change(){

    document.body.style.background = rainbow[Math.floor(7*Math.random())];

}

btn.addEventListener('click', change);

– Mở tập tin rainbow.html bằng trình duyệt, bấm nút “click me” để xem màu nền thay đổi.

Cách 4. Chạy mã JavaScript trên nền tảng Nodejs

– Vào trang web của Nodejs, tải chương trình Nodejs về máy tính: https://nodejs.org/en/

– Cài đặt Nodejs trên máy tính, sau khi cài đặt xong, vào cmd, gõ lệnh node –v để kiểm tra xem việc cài đặt Nodejs được chưa, nếu cửa sổ dòng lệnh có hiển thị phiên bản là đã cài đặt được

– Mở một trình soạn thảo mã nguồn bất kỳ (ví dụ: Notepad, VS code) và nhập vào đoạn mã sau:

console.log(‘Chao bac Teo’);

– Lưu lại với tên myjs.js, để trong ổ đĩa D:\

– Mở cửa sổ dòng lệnh (cmd), di chuyển dấu nhắc lệnh về ổ đĩa D:\

– Gõ lệnh node myjs.js để Nodejs thực thi đoạn mã, xem kết quả xuất ra ngay cửa sổ dòng lệnh

1.3       Xem và đọc thêm

– [1] Tìm kiếm theo các từ khóa sau để đọc thêm: javascript căn bản, javascript wiki

– [2] JavaScript có thể làm được gì? https://www.youtube.com/watch?v=0SJE9dYdpps&list=PL_-VfJajZj0VgpFpEVFzS5Z-lkXtBe-x5

– [3] JavaScript: https://en.wikipedia.org/wiki/JavaScript

– [4] JavaScript : https://vi.wikipedia.org/wiki/JavaScript

1.4       Bài tập và thực hành

Bài 1. Chuẩn bị môi trường để có thể lập trình JavaScript: tải và cài đặt trình duyệt web Chrome, chương trình VS Code.

Bài 2. Viết và chạy chương trình JavaScript đơn giản bằng 4 cách (như đã trình bày trong phần lý thuyết)

Bài 3. Quiz Ninja

– Tạo thư mục có tên quiz

– Trong quiz, tạo các tập tin sau:

index.html

main.js

styles.css

– Nhập nội dung cho index.html

<!doctype html>

<html lang='en'>

 

<head>

    <meta charset='utf-8'>

    <meta name='description' content='A JavaScript Quiz Game'>

    <title>Quiz Ninja</title>

    <link rel='stylesheet' href='styles.css'>

</head>

 

<body>

    <section class='dojo'>

        <div class='quiz-body'>

            <header>

                <h1>Quiz Ninja!</h1>

            </header>

        </div>

    </section>

    <script src='main.js'></script>

</body>

 

</html>

– Định dạng trang web bằng css. Thêm nội dung cho tập tin styles.css. Bạn có thể tải tập tin dojo.svg tại https://drive.google.com/file/d/18bwSyTzqy20KUseriEWRqdew5Q-gJTeF/view

@import url('https://fonts.googleapis.com/css?family=Baloo+Da|Roboto');

body{

background: #5F1C1C;

font-family: 'Roboto', sans-serif;

}

.dojo{

background:url(https://cdn.rawgit.com/alexmwalker/6acbe9040d9fe6e5e9fd758a25e1b2a5/raw/9c8131eb2ccc1e3839a5a5114cb16b5dc74daf04/dojo.svg)

no-repeat;

width: 100%;

height: 800px;

background-size: 100% auto;

padding-top: 10px;

}

.quiz-body{

background: rgba(255,255,255,1);

margin: 150px 33%;

padding: 10px 20px 50px 20px;

-webkit-box-shadow: 4px 4px 11px 3px rgba(0,0,0,0.3);

-moz-box-shadow: 4px 4px 11px 3px rgba(0,0,0,0.3);

box-shadow: 4px 4px 11px 3px rgba(0,0,0,0.3);

}

h1{

color: #611BBD;

font-family: 'Baloo Da', cursive;

font-weight: 900;

text-align: center;

font-size: 48px;

margin: 0;

}

button {

color: #ffffff;

background-color: #611BBD;

border-color: #130269;

border-radius: 4px;

margin: 0.2em 0;

display: block;

width: 100%;

font-size: 24px;

}

#question {

font-size: 24px;

}

#result{

color: #fff;

margin: 0.2em 0;

width: 100%;

text-align: center;

}

.correct {

background-color: #0c0;

}

.wrong {

color: #fff;

background-color: #c00;

}

– Thêm mã xử lý tương tác cho trang web. Nhập đoạn mã sau vào main.js.

alert('Welcome to Quiz Ninja!');

– Mở trang index.html bằng trình duyệt, để xem kết quả. Một thông báo sẽ xuất hiện, cùng với màn hình có giao diện như sau.


1.5       Câu hỏi ôn tập

Câu 1. Bạn có thể lập trình (viết mã) JavaScript bằng các công cụ sau. Đáp án nào sai?

A. Web browser

B. Text editor

C. Code editor, IDE

D. JavaScript Interpreter

Câu 2. Trong HTML, mã JavaScript được đặt trong phần tử nào?

A. <javascript>

B. <script>

C. <js>

D. <scripting>

Câu 3. Trong JavaScript, ES8 là viết tắt của?

A. Essential 8

B. ECMAScript 8

C. Explorer Source 8

D. European Script 8

Câu 4. JavaScript was created in …… by Brendan Eich, an employee of Netscape.

A. 1994

B. 1995

C. 1996

D. 2015

-----

Cập nhật: 19/8/2023
-----

Bạn muốn tự học HTML bài bản? Xem thêm 


DBMS (5) - Thao tác với dữ liệu trong MySQL

Bài trước: DBMS (4) - Tạo cơ sở dữ liệu quan hệ

-----

1.1       Thao tác với dữ liệu trong MySQL

Bạn đã tạo được cơ sở dữ liệu, đã tạo được bảng để chứa dữ liệu. Phần này bạn sẽ thực hiện thêm một số thao tác với hệ quản trị cơ sở dữ liệu MySQL:

– Thay đổi các cột của bảng

– Chèn dữ liệu vào bảng

– Truy vấn dữ liệu từ bảng

– Kết xuất cơ sở dữ liệu ra một tập tin (export database)

– Nhập một cơ sở dữ liệu có sẵn từ tập tin (import database)

1.1.1       Thay đổi các cột của bảng

Sau khi tạo bảng xong, bạn vẫn có thể thay đổi cấu trúc của nó. Ví dụ có thể thêm cột, xóa bớt cột, sửa tiêu đề của cột.

Ví dụ:

– Bảng loai_mon_an đang có cấu trúc là:

mysql> show columns from loai_mon_an;

+----------+--------------+------+-----+---------+-------+

| Field    | Type         | Null | Key | Default | Extra |

+----------+--------------+------+-----+---------+-------+

| ma_loai  | int          | YES  |     | NULL    |       |

| ten_loai | varchar(200) | YES  |     | NULL    |       |

| mo_ta    | varchar(500) | YES  |     | NULL    |       |

| hinh     | varchar(100) | YES  |     | NULL    |       |

+----------+--------------+------+-----+---------+-------+

4 rows in set (0.37 sec)

– Giờ sẽ thêm cột trang_thai (trạng thái: cho biết tình trạng của loại món ăn này: có (1)  hay không (0)). Cột trang_thai được thêm vào cuối bảng (sau cột hinh).

mysql> ALTER TABLE loai_mon_an ADD COLUMN trang_thai int AFTER hinh;

Query OK, 0 rows affected (0.53 sec)

Records: 0  Duplicates: 0  Warnings: 0

– Xem kết quả

mysql> show columns from loai_mon_an;

+------------+--------------+------+-----+---------+-------+

| Field      | Type         | Null | Key | Default | Extra |

+------------+--------------+------+-----+---------+-------+

| ma_loai    | int          | YES  |     | NULL    |       |

| ten_loai   | varchar(200) | YES  |     | NULL    |       |

| mo_ta      | varchar(500) | YES  |     | NULL    |       |

| hinh       | varchar(100) | YES  |     | NULL    |       |

| trang_thai | int          | YES  |     | NULL    |       |

+------------+--------------+------+-----+---------+-------+

5 rows in set (0.00 sec)

– Bạn có thể sửa tên cột trang_thai thành tinh_trang (tình trạng). Cú pháp là:

ALTER TABLE table_name RENAME COLUMN ten_cu TO ten_moi;

Ví dụ,

mysql> ALTER TABLE loai_mon_an RENAME COLUMN trang_thai TO tinh_trang;

Query OK, 0 rows affected (0.08 sec)

Records: 0  Duplicates: 0  Warnings: 0

Bạn có thể xem cấu trúc bảng để thấy kết quả.

– Xóa cột tinh_trang

mysql> ALTER TABLE loai_mon_an DROP COLUMN tinh_trang;

Query OK, 0 rows affected (0.12 sec)

Records: 0  Duplicates: 0  Warnings: 0

Bạn có thể xem cấu trúc bảng để thấy kết quả.

1.1.2       Chèn và truy vấn dữ liệu

Chèn dữ liệu vào bảng

Công việc của bạn là cần chèn các hàng dữ liệu sau vào bảng loai_mon_an:

Mã loại

Tên loại

Mô tả

Hình ảnh

1

Cơm

Các món cơm Việt

com.jpg

2

Lẩu

Các món lẩu

lau.jpg

3

Canh

Các món canh Việt

canh.jpg

4

Kho

Các món kho

kho.jpg

Giả sử bạn đã có cơ sở dữ liệu quan_ly_nha_hang, đã định nghĩa bảng loai_mon_an, đang kết nối vào MySQL server bằng user1. Sau đây là một số gợi ý để chèn dữ liệu cho một bảng.

 – Sử dụng lệnh sau để chèn dữ liệu cho một bảng.

INSERT INTO ten_bang (ten_cot1, ten_cot2,…)

VALUES (gia_tri_cot1, gia_tri_cot2,…)

– Để biết chắc chắn tên các cột của bảng (field), sử dụng lệnh SHOW COLUMNS FROM ten_bang. Ví dụ:

mysql> show columns from loai_mon_an;

+----------+--------------+------+-----+---------+-------+

| Field    | Type         | Null | Key | Default | Extra |

+----------+--------------+------+-----+---------+-------+

| ma_loai  | int          | YES  |     | NULL    |       |

| ten_loai | varchar(200) | YES  |     | NULL    |       |

| mo_ta    | varchar(500) | YES  |     | NULL    |       |

| hinh     | varchar(100) | YES  |     | NULL    |       |

+----------+--------------+------+-----+---------+-------+

4 rows in set (0.08 sec)

– Ví dụ chèn hàng dữ liệu đầu tiên cho bảng

mysql> insert into loai_mon_an(ma_loai, ten_loai, mo_ta, hinh) values(1, 'com', 'cac mon com Viet', 'com.jpg');

Query OK, 1 row affected (0.24 sec)

Lưu ý: nếu dữ liệu thuộc kiểu chuỗi thì phải bao lại bằng cặp dấu nháy đơn (‘’) hoặc nháy kép (“”). Ví dụ: ‘com’.

– Để kiểm tra xem việc chèn dữ liệu vào bảng được hay chưa? Sử dụng lệnh SELECT * FROM ten_bang. Ví dụ:

mysql> select * from loai_mon_an;

+---------+----------+------------------+---------+

| ma_loai | ten_loai | mo_ta            | hinh    |

+---------+----------+------------------+---------+

|       1 | com      | cac mon com Viet | com.jpg |

+---------+----------+------------------+---------+

1 rows in set (0.00 sec)

Bạn chèn hết các hàng dữ liệu còn lại của bảng loai_mon_an, để thực hành các bài tiếp theo.

mysql> select * from loai_mon_an;

+---------+----------+-------------------+----------+

| ma_loai | ten_loai | mo_ta             | hinh     |

+---------+----------+-------------------+----------+

|       1 | com      | cac mon an Viet   | com.jpg  |

|       2 | lau      | cac mon lau       | lau.jpg  |

|       3 | canh     | cac mon canh Viet | canh.jpg |

|       4 | kho      | cac mon kho       | kho.jpg  |

+---------+----------+-------------------+----------+

4 rows in set (0.00 sec)

Truy vấn dữ liệu

Truy vấn dữ liệu là bạn đặt ra các câu hỏi dựa trên các bảng dữ liệu, sau đó MySQL server sẽ tìm kiếm và hiển thị kết quả cho bạn.

Cú pháp căn bản của một câu truy vấn có dạng:

SELECT – FROM – WHERE: nghĩa là bạn muốn hiển thị cái gì, từ bảng nào và dựa trên điều kiện gì?

Tuy nhiên, cú pháp tổng quát thì nó gồm một số thành phần sau:

SELECT [*| DISTINCT] <Danh sách các cột [AS <Bí danh>]>

FROM <Danh sách Tên bảng/Tên View>

[WHERE <Biểu thức điều kiện>]

[GROUP BY <Danh sách cột>]

[HAVING <Điều kiện>]

[ORDER BY <Tên cột/ Số thứ tự cột/Biểu thức> [ASC/DESC]]

Ví dụ:

– Hiển thị tất cả các loại món ăn đang có trong bảng loai_mon_an

mysql> SELECT * FROM loai_mon_an WHERE true;

+---------+----------+-------------------+----------+

| ma_loai | ten_loai | mo_ta             | hinh     |

+---------+----------+-------------------+----------+

|       1 | com      | cac mon an Viet   | com.jpg  |

|       2 | lau      | cac mon lau       | lau.jpg  |

|       3 | canh     | cac mon canh Viet | canh.jpg |

|       4 | kho      | cac mon kho       | kho.jpg  |

+---------+----------+-------------------+----------+

4 rows in set (0.00 sec)

– Hiển thị loại món ăn có mã loại là 3

mysql> SELECT * FROM loai_mon_an WHERE ma_loai = 3;

+---------+----------+-------------------+----------+

| ma_loai | ten_loai | mo_ta             | hinh     |

+---------+----------+-------------------+----------+

|       3 | canh     | cac mon canh Viet | canh.jpg |

+---------+----------+-------------------+----------+

1 row in set (0.00 sec)

– Hiển thị các thông tin về món ăn có tên là lau (lẩu)

mysql> SELECT * FROM loai_mon_an WHERE ten_loai = 'lau';

+---------+----------+-------------+---------+

| ma_loai | ten_loai | mo_ta       | hinh    |

+---------+----------+-------------+---------+

|       2 | lau      | cac mon lau | lau.jpg |

+---------+----------+-------------+---------+

1 row in set (0.05 sec)

1.1.3       Xuất và nhập một cơ sở dữ liệu

Xuất một cơ sở dữ liệu thành một tập tin

Khi bạn đã có một cơ sở dữ liệu, với rất nhiều dữ liệu trong các bảng và các quan hệ đã được tạo. Để tạo ra một bản lưu dự phòng, hoặc chia sẻ cơ sở dữ liệu cho người khác bạn có thể xuất cơ sở dữ liệu thành một tập tin.

Sử dụng lệnh MYSQLDUMP. Lệnh này nằm trong thư mục \mysql\bin>

Ví dụ:

C:\Program Files\mysql\bin>mysqldump -u user1 -p quan_ly_nha_hang > quanLyNhaHang.sql

Enter password: ******

Tập tin kết quả quanLyNhaHang.sql sẽ được lưu trong thư mục \mysql\bin>

Việc xuất (export) một cơ sở dữ liệu sang dạng .sql, thực tế là việc ghi lại các lệnh: tạo bảng, thiết lập khóa, chèn dữ liệu …v.v vào một tập tin dạng văn bản. Để kiểm tra điều này, hãy xuất một cơ sở dữ liệu sang dạng một tập tin .sql, sau đó mở tập tin này bằng phần mềm Notepad chẳng hạn, rồi xem kết quả.

[quanLyNhaHang.sql]

-- MySQL dump 10.13  Distrib 8.0.30, for Win64 (x86_64)

--

-- Host: localhost    Database: quan_ly_nha_hang

-- ------------------------------------------------------

-- Server version 8.0.30

--

-- Table structure for table `loai_mon_an`

--

 

DROP TABLE IF EXISTS `loai_mon_an`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!50503 SET character_set_client = utf8mb4 */;

CREATE TABLE `loai_mon_an` (

  `ma_loai` int DEFAULT NULL,

  `ten_loai` varchar(200) DEFAULT NULL,

  `mo_ta` varchar(500) DEFAULT NULL,

  `hinh` varchar(100) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

/*!40101 SET character_set_client = @saved_cs_client */;

 

--

-- Dumping data for table `loai_mon_an`

--

 

LOCK TABLES `loai_mon_an` WRITE;

/*!40000 ALTER TABLE `loai_mon_an` DISABLE KEYS */;

INSERT INTO `loai_mon_an` VALUES (1,'com','cac mon an Viet','com.jpg'),(2,'lau','cac mon lau','lau.jpg'),(3,'canh','cac mon canh Viet','canh.jpg'),(4,'kho','cac mon kho','kho.jpg');

/*!40000 ALTER TABLE `loai_mon_an` ENABLE KEYS */;

UNLOCK TABLES;

-- Dump completed on 2022-08-22  9:51:33

Nhập một cơ sở dữ liệu từ tập tin

Ngược lại, khi bạn muốn khôi phục lại, hoặc sử dụng lại một cơ sở dữ liệu đã được export trước đó. Bạn có thể thực hiện việc nhập (import) một cơ sở dữ liệu từ tập tin.

Để thực hành phần này, bạn sẽ thực hiện xóa cơ sở dữ liệu quan_ly_nha_hang. Lưu ý: bạn phải đảm bảo chắc chắn đã kết xuất cơ sở dữ liệu này sang một tập tin rồi.

Xem trong MySQL có cơ sở dữ liệu quan_ly_nha_hang không?

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| quan_ly_nha_hang   |

| sys                |

+--------------------+

5 rows in set (0.00 sec)

Thực hiện xóa:

mysql> DROP DATABASE quan_ly_nha_hang;

Query OK, 1 row affected (0.23 sec)

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

4 rows in set (0.00 sec)

– Để nhập một cơ sở dữ liệu, bạn cần tạo một cơ sở dữ liệu “rỗng” trước.

mysql> CREATE DATABASE IF NOT EXISTS quan_ly_nha_hang_new;

Query OK, 1 row affected (0.08 sec)

– Sau đó, dùng lệnh sau để nhập cơ sở dữ liệu từ tập tin .sql vào

C:\Program Files\mysql\bin>mysql -u user1 -h localhost -p quan_ly_nha_hang_new < quanLyNhaHang.sql

Enter password: ******

C:\Program Files\mysql\bin>

– Đăng nhập lại vào MySQL server

C:\Program Files\mysql\bin>mysql -u user1 -h localhost -p

Enter password: ******

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

Your MySQL connection id is 16

– Làm việc với cơ sở dữ liệu quan_ly_nha_hang_new

mysql> use quan_ly_nha_hang_new;

Database changed

– Thực hiện một số lệnh để kiểm tra cơ sở dữ liệu vừa được nhập mới

mysql> show tables from quan_ly_nha_hang_new;

+--------------------------------+

| Tables_in_quan_ly_nha_hang_new |

+--------------------------------+

| loai_mon_an                    |

+--------------------------------+

1 row in set (0.00 sec)

 

mysql> select * from loai_mon_an;

+---------+----------+-------------------+----------+

| ma_loai | ten_loai | mo_ta             | hinh     |

+---------+----------+-------------------+----------+

|       1 | com      | cac mon an Viet   | com.jpg  |

|       2 | lau      | cac mon lau       | lau.jpg  |

|       3 | canh     | cac mon canh Viet | canh.jpg |

|       4 | kho      | cac mon kho       | kho.jpg  |

+---------+----------+-------------------+----------+

4 rows in set (0.00 sec)

Lưu ý: việc nhập một cơ sở dữ liệu, chính là quá trình chạy lại các lệnh: tạo bảng, thiết lập khóa, chèn dữ liệu …v.v từ một tập tin dạng văn bản.

1.1.4       Xem và đọc thêm

– Dùng các từ khóa sau để tìm kiếm trên mạng và đọc thêm: chèn dữ liệu cho bảng mysql, mysql insert data into table, export và import cơ sở dữ liệu bằng dòng lệnh, export and import database in command line.

– INSERT: https://dev.mysql.com/doc/refman/8.0/en/insert.html

– Chu Thị Hường, Bài giảng Hệ quản trị CSDL, [chương 2: các câu lệnh SQL cơ bản] [ebook]

 

1.1.5       Bài tập và thực hành

Bài 1. Làm lại các câu lệnh ở phần lý thuyết.

Bài 2. Thực hiện một số yêu cầu sau:

1.      Tạo cơ sở dữ liệu “rỗng” có tên là quan_ly_sach

2.      Nhập (import) cơ sở dữ liệu này [chickenrainshop_structure_data.sql] vào cơ sở dữ liệu quan_ly_sach.

3.      Thực hiện các truy vấn, và ghi lại kết quả:

a.       Cơ sở dữ liệu quan_ly_sach có bao nhiêu bảng?

b.      Bảng books có bao nhiêu cột dữ liệu?

c.       Danh sách các cuốn sách có trong bảng books

d.      Sửa lại tên bảng writers thành writers_new.

Gợi ý:

Bài 2.3.a:

mysql> use quan_ly_sach

Database changed

mysql> show tables;

+------------------------+

| Tables_in_quan_ly_sach |

+------------------------+

| books                  |

| books_writers          |

| categories             |

| comments               |

| coupons                |

| groups                 |

| orders                 |

| users                  |

| writers                |

+------------------------+

9 rows in set (0.00 sec)

Bài 2.3.b

mysql> show columns from books;

+---------------+--------------+------+-----+---------+----------------+

| Field         | Type         | Null | Key | Default | Extra          |

+---------------+--------------+------+-----+---------+----------------+

| id            | int          | NO   | PRI | NULL    | auto_increment |

| category_id   | int          | YES  |     | NULL    |                |

| title         | varchar(100) | NO   |     | NULL    |                |

| slug          | varchar(255) | NO   |     | NULL    |                |

| image         | varchar(255) | YES  |     | NULL    |                |

| info          | text         | NO   |     | NULL    |                |

| price         | int          | NO   |     | NULL    |                |

| sale_price    | int          | NO   |     | NULL    |                |

| publisher     | varchar(100) | NO   |     | NULL    |                |

| publish_date  | date         | NO   |     | NULL    |                |

| link_download | varchar(255) | NO   |     | NULL    |                |

| published     | tinyint(1)   | YES  |     | 0       |                |

| created       | datetime     | YES  |     | NULL    |                |

| modified      | datetime     | YES  |     | NULL    |                |

+---------------+--------------+------+-----+---------+----------------+

14 rows in set (0.00 sec)

Bài 2.3.c

mysql> select title from books;

+-----------------------------------------+

| title                                   |

+-----------------------------------------+

| Ba ?i?m tinh y?u trên ???ng tu t?p      |

| Khám phá ngôn ng? t? duy                |

| Ng??i th?p sáng tâm h?n                 |

| Ánh sáng vô hình                        |

| Tr?i xanh c?a táo                       |

| Ông già và bi?n c?                      |

| Bi?n ??i thay                           |

| Chuông nguy?n h?n ai                    |

| Nhà ?ào t?o sành s?i                    |

| Nh?ng ?i?u s?p nói và không nói v?i b?n |

| M?t v?i m?t là ba                       |

+-----------------------------------------+

11 rows in set (0.00 sec)

2.3.d

mysql> alter table writers rename to writers_new;

Query OK, 0 rows affected (0.11 sec)

 

mysql> show tables;

+------------------------+

| Tables_in_quan_ly_sach |

+------------------------+

| books                  |

| books_writers          |

| categories             |

| comments               |

| coupons                |

| groups                 |

| orders                 |

| users                  |

| writers_new            |

+------------------------+

9 rows in set (0.00 sec)

1.1.6       Câu hỏi ôn tập

Câu 1. Lệnh [mysql> show columns from loai_mon_an;] dùng để làm gì?

A. Hiển thị các hàng dữ liệu của bảng loai_mon_an

B. Hiển thị tên các cột dữ liệu của bảng loai_mon_an

C. Lệnh trên bị lỗi và không thể thực thi

D. Hiển thị tên các bảng của cơ sở dữ liệu

Câu 2. Lệnh [mysql> ALTER TABLE loai_mon_an ADD COLUMN trang_thai int AFTER hinh;] dùng để làm gì?

A. Đổi tên bảng loai_mon_an thành trang_thai

B. Đổi tên cột trang_thai trong bảng loai_mon_an thành hinh

C. Trong bảng loai_mon_an, thêm cột trang_thai vào sau cột hinh

D. Trong bảng loai_mon_an, chuyển cột trang_thai ra sau cột hinh

Câu 3. Lệnh [C:\Program Files\mysql\bin>mysqldump -u user1 -p quan_ly_nha_hang > quanLyNhaHang.sql] dùng để làm gì?

A. Đăng nhập vào máy SQL server và truy cập vào cơ sở dữ liệu quan_ly_nha_hang

B. Hiển thị danh sách các bảng có trong cơ sở dữ liệu quan_ly_nha_hang

C. Đọc thông tin từ tập tin quanLyNhaHang.sql đưa vào cơ sở dữ liệu quan_ly_nha_hang

D. Kết xuất (export) cơ sở dữ liệu quan_ly_nha_hang vào tập tin quanLyNhaHang.sql

----

Đáp án: 1(B), 2(C), 3(D)

////// 5

-----

Cập nhật: [22/8/2022]
-----