Dưới đây là các ví dụ về cách giải quyết một số vấn đề phổ biến với MySQL.
Một số ví dụ sử dụng bảng shop
để giữ giá của mỗi bài viết [số mặt hàng] cho một số nhà giao dịch [đại lý] nhất định. Giả sử rằng mỗi nhà giao dịch có một mức giá cố định duy nhất cho mỗi bài viết, sau đó [article
, dealer
] là chìa khóa chính cho các hồ sơ.
Bắt đầu công cụ dòng lệnh MySQL và chọn cơ sở dữ liệu:mysql and select a database:
$> mysql your-database-name
Để tạo và điền vào bảng ví dụ, hãy sử dụng các câu sau:
CREATE TABLE shop [
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR[20] DEFAULT '' NOT NULL,
price DECIMAL[16,2] DEFAULT '0.00' NOT NULL,
PRIMARY KEY[article, dealer]];
INSERT INTO shop VALUES
[1,'A',3.45],[1,'B',3.99],[2,'A',10.99],[3,'B',1.45],
[3,'C',1.69],[3,'D',1.25],[4,'D',19.95];
Sau khi đưa ra các câu lệnh, bảng nên có nội dung sau:
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
8.1.1 & NBSP; Tab truy vấn SQL
Tab thứ cấp truy vấn SQL mở theo mặc định khi bạn tạo kết nối với máy chủ từ màn hình chính. Nó bao gồm một khu vực trình soạn thảo truy vấn và một thanh công cụ. Bạn có thể nhập các câu lệnh SQL trực tiếp vào khu vực Trình soạn thảo truy vấn. Các câu lệnh được nhập có thể được lưu vào một tệp hoặc đoạn trích để sử dụng sau. Tại bất kỳ điểm nào, bạn cũng có thể thực hiện các câu lệnh bạn đã nhập.
Để lưu đoạn mã được nhập vào trình soạn thảo truy vấn, nhấp vào Lưu SQL vào Snippets Danh sách [] từ thanh công cụ truy vấn SQL, nhập tên [tùy chọn] và nhấp vào OK. Hình sau đây cho thấy các yếu tố chính của tab truy vấn.Save SQL to Snippets List [
Hình & NBSP; 8.2 & NBSP; SQL Editor - Tab truy vấn SQL
Thực hiện truy vấn
CREATE TABLE shop [
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR[20] DEFAULT '' NOT NULL,
price DECIMAL[16,2] DEFAULT '0.00' NOT NULL,
PRIMARY KEY[article, dealer]];
INSERT INTO shop VALUES
[1,'A',3.45],[1,'B',3.99],[2,'A',10.99],[3,'B',1.45],
[3,'C',1.69],[3,'D',1.25],[4,'D',19.95];
0 sẽ hiển thị tập kết quả được liên kết trong bảng xem SQL, ngay bên dưới bảng truy vấn SQL. Các ô này có thể chỉnh sửa nếu MySQL Workbench có thể xác định làm thế nào, ví dụ như chúng có thể chỉnh sửa nếu một khóa chính hoặc duy nhất tồn tại trong tập kết quả. Nếu không, MySQL Workbench sẽ hiển thị biểu tượng "chỉ đọc" ở góc dưới bên phải của bảng xem SQL và di chuột con trỏ chuột qua biểu tượng này sẽ cung cấp một gợi ý về lý do tại sao nó không thể chỉnh sửa.Ghi chú
Để nhanh chóng nhập tên của một bảng, xem hoặc cột, bấm đúp vào mục trong bảng lược đồ. Tên mục sẽ được chèn vào bảng truy vấn SQL.
Trình chỉnh sửa SQL có một số bảng và tab có thể định cấu hình, như được hiển thị trong hình trước.
3.3.2 & nbsp; tạo bảng
Tạo cơ sở dữ liệu là phần dễ dàng, nhưng tại thời điểm này, nó trống, như
CREATE TABLE shop [
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR[20] DEFAULT '' NOT NULL,
price DECIMAL[16,2] DEFAULT '0.00' NOT NULL,
PRIMARY KEY[article, dealer]];
INSERT INTO shop VALUES
[1,'A',3.45],[1,'B',3.99],[2,'A',10.99],[3,'B',1.45],
[3,'C',1.69],[3,'D',1.25],[4,'D',19.95];
1 cho bạn biết:mysql> SHOW TABLES;
Empty set [0.00 sec]
Phần khó hơn là quyết định cấu trúc của cơ sở dữ liệu của bạn là gì: bảng bạn cần gì và các cột nên là gì trong mỗi chúng.
Bạn muốn một bảng chứa một bản ghi cho mỗi vật nuôi của bạn. Điều này có thể được gọi là bảng
CREATE TABLE shop [
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR[20] DEFAULT '' NOT NULL,
price DECIMAL[16,2] DEFAULT '0.00' NOT NULL,
PRIMARY KEY[article, dealer]];
INSERT INTO shop VALUES
[1,'A',3.45],[1,'B',3.99],[2,'A',10.99],[3,'B',1.45],
[3,'C',1.69],[3,'D',1.25],[4,'D',19.95];
2, và nó phải chứa tối thiểu, tên của mỗi con vật. Bởi vì tên tự nó không thú vị lắm, bảng nên chứa thông tin khác. Ví dụ: nếu có nhiều hơn một người trong gia đình bạn giữ thú cưng, bạn có thể muốn liệt kê chủ sở hữu của mỗi con vật. Bạn cũng có thể muốn ghi lại một số thông tin mô tả cơ bản như loài và giới tính.Làm thế nào về tuổi tác? Điều đó có thể được quan tâm, nhưng nó không phải là một điều tốt để lưu trữ trong cơ sở dữ liệu. Tuổi thay đổi khi thời gian trôi qua, điều đó có nghĩa là bạn phải cập nhật hồ sơ của mình thường xuyên. Thay vào đó, tốt hơn là lưu trữ một giá trị cố định như ngày sinh. Sau đó, bất cứ khi nào bạn cần tuổi, bạn có thể tính toán nó là sự khác biệt giữa ngày hiện tại và ngày sinh. MySQL cung cấp các chức năng để thực hiện số học ngày, vì vậy điều này không khó. Lưu trữ ngày sinh thay vì tuổi tác cũng có những lợi thế khác:
Bạn có thể sử dụng cơ sở dữ liệu cho các nhiệm vụ như tạo lời nhắc cho sinh nhật thú cưng sắp tới. . liên lạc cá nhân hỗ trợ máy tính.]
Bạn có thể tính tuổi liên quan đến ngày khác ngoài ngày hiện tại. Ví dụ: nếu bạn lưu trữ ngày chết trong cơ sở dữ liệu, bạn có thể dễ dàng tính toán con vật cưng bao nhiêu tuổi khi nó chết.
Bạn có thể nghĩ về các loại thông tin khác sẽ hữu ích trong bảng
CREATE TABLE shop [
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR[20] DEFAULT '' NOT NULL,
price DECIMAL[16,2] DEFAULT '0.00' NOT NULL,
PRIMARY KEY[article, dealer]];
INSERT INTO shop VALUES
[1,'A',3.45],[1,'B',3.99],[2,'A',10.99],[3,'B',1.45],
[3,'C',1.69],[3,'D',1.25],[4,'D',19.95];
2, nhưng những loại được xác định cho đến nay là đủ: tên, chủ sở hữu, loài, giới tính, sinh và tử.Sử dụng câu lệnh
CREATE TABLE shop [
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR[20] DEFAULT '' NOT NULL,
price DECIMAL[16,2] DEFAULT '0.00' NOT NULL,
PRIMARY KEY[article, dealer]];
INSERT INTO shop VALUES
[1,'A',3.45],[1,'B',3.99],[2,'A',10.99],[3,'B',1.45],
[3,'C',1.69],[3,'D',1.25],[4,'D',19.95];
4 để chỉ định bố cục của bảng của bạn:mysql> CREATE TABLE pet [name VARCHAR[20], owner VARCHAR[20],
species VARCHAR[20], sex CHAR[1], birth DATE, death DATE];
CREATE TABLE shop [
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR[20] DEFAULT '' NOT NULL,
price DECIMAL[16,2] DEFAULT '0.00' NOT NULL,
PRIMARY KEY[article, dealer]];
INSERT INTO shop VALUES
[1,'A',3.45],[1,'B',3.99],[2,'A',10.99],[3,'B',1.45],
[3,'C',1.69],[3,'D',1.25],[4,'D',19.95];
5 là một lựa chọn tốt cho các cột CREATE TABLE shop [
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR[20] DEFAULT '' NOT NULL,
price DECIMAL[16,2] DEFAULT '0.00' NOT NULL,
PRIMARY KEY[article, dealer]];
INSERT INTO shop VALUES
[1,'A',3.45],[1,'B',3.99],[2,'A',10.99],[3,'B',1.45],
[3,'C',1.69],[3,'D',1.25],[4,'D',19.95];
6, CREATE TABLE shop [
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR[20] DEFAULT '' NOT NULL,
price DECIMAL[16,2] DEFAULT '0.00' NOT NULL,
PRIMARY KEY[article, dealer]];
INSERT INTO shop VALUES
[1,'A',3.45],[1,'B',3.99],[2,'A',10.99],[3,'B',1.45],
[3,'C',1.69],[3,'D',1.25],[4,'D',19.95];
7 và CREATE TABLE shop [
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR[20] DEFAULT '' NOT NULL,
price DECIMAL[16,2] DEFAULT '0.00' NOT NULL,
PRIMARY KEY[article, dealer]];
INSERT INTO shop VALUES
[1,'A',3.45],[1,'B',3.99],[2,'A',10.99],[3,'B',1.45],
[3,'C',1.69],[3,'D',1.25],[4,'D',19.95];
8 vì các giá trị cột thay đổi về chiều dài. Các độ dài trong các định nghĩa cột đó không cần phải giống nhau, và không cần phải là CREATE TABLE shop [
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR[20] DEFAULT '' NOT NULL,
price DECIMAL[16,2] DEFAULT '0.00' NOT NULL,
PRIMARY KEY[article, dealer]];
INSERT INTO shop VALUES
[1,'A',3.45],[1,'B',3.99],[2,'A',10.99],[3,'B',1.45],
[3,'C',1.69],[3,'D',1.25],[4,'D',19.95];
9. Thông thường bạn có thể chọn bất kỳ độ dài nào từ SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
0 đến SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
1, bất cứ điều gì có vẻ hợp lý nhất với bạn. Nếu bạn đưa ra lựa chọn kém và sau đó bạn cần một trường dài hơn, MySQL cung cấp một tuyên bố SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
2.Một số loại giá trị có thể được chọn để đại diện cho giới tính trong hồ sơ động vật, chẳng hạn như
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
3 và SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
4, hoặc có lẽ SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
5 và SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
6. Việc sử dụng các ký tự đơn SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
3 và SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
4 là đơn giản nhất.Việc sử dụng kiểu dữ liệu
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
9 cho các cột mysql> SHOW TABLES;
Empty set [0.00 sec]
0 và mysql> SHOW TABLES;
Empty set [0.00 sec]
1 là một lựa chọn khá rõ ràng.Khi bạn đã tạo một bảng,
mysql> SHOW TABLES;
Empty set [0.00 sec]
2 sẽ tạo ra một số đầu ra:mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| pet |
+---------------------+
Để xác minh rằng bảng của bạn đã được tạo theo cách bạn mong đợi, hãy sử dụng câu lệnh
mysql> SHOW TABLES;
Empty set [0.00 sec]
3:mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar[20] | YES | | NULL | |
| owner | varchar[20] | YES | | NULL | |
| species | varchar[20] | YES | | NULL | |
| sex | char[1] | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
Bạn có thể sử dụng
mysql> SHOW TABLES;
Empty set [0.00 sec]
3 bất cứ lúc nào, ví dụ, nếu bạn quên tên của các cột trong bảng của bạn hoặc những loại chúng có.Để biết thêm thông tin về các loại dữ liệu MySQL, xem Chương & NBSP; 11, Kiểu dữ liệu.