[Powered by Google Translate] [SQL] [CHRISTOPHER Bartholomew] [ĐẠI HỌC HARVARD] [Đây là CS50] [CS50 TV] Vì vậy, các lập trình viên sử dụng cơ sở dữ liệu như một công cụ để lưu trữ và tổ chức dữ liệu liên tục của chúng tôi trong vòng bảng. Điều này có nghĩa là dữ liệu của bạn được lưu trữ trên trung vị chẳng hạn như một ổ đĩa cứng không dễ bay hơi, và ngay cả khi máy tính tắt, dữ liệu vẫn còn nguyên vẹn. Và, như lập trình, các chương trình của chúng tôi sử dụng cơ sở dữ liệu cho các kịch bản như là lưu trữ người sử dụng thông tin từ các hình thức web, tìm kiếm hàng tồn kho, hoặc cập nhật thông tin về những gì các trang web hiển thị. Nhưng làm thế nào để chúng ta thực sự tương tác với cơ sở dữ liệu của chúng tôi, hoặc những gì chúng ta sử dụng để đọc, lưu trữ, xóa, và cập nhật dữ liệu của chúng tôi trong các bảng cơ sở dữ liệu? Vâng, câu trả lời là chúng ta sử dụng một loại đặc biệt của ngôn ngữ cơ sở dữ liệu mà tương tác trực tiếp với các bảng cơ sở dữ liệu của chúng tôi. Tên của nó được cấu trúc Query Language, [Structured Query Language] hoặc những gì tôi đề cập đến như SQL. Bây giờ, [Se-QueL], hoặc SQL, không phải là một ngôn ngữ lập trình, nhưng thay vào đó, nó là một ngôn ngữ mà cung cấp một bộ tiêu chuẩn của lệnh để truy xuất và thao tác dữ liệu từ nhiều hệ thống quản lý cơ sở dữ liệu. Đối với mục đích của CS50, chúng ta sẽ đi qua bốn lệnh cơ bản: lựa chọn, chèn, cập nhật, và xóa. Hơn nữa, chúng tôi sẽ sử dụng một giao diện web cơ sở dữ liệu phpMyAdmin, cài đặt trên thiết bị để viết câu lệnh SQL của chúng tôi. Vì vậy, để giúp bạn nhớ các lệnh này, Tôi đã mang một số cupcakes trong tủ để hỗ trợ với các kịch bản của chúng tôi. Giả sử bạn có một cơ sở dữ liệu của cupcake, nơi bạn lưu trữ tất cả các thông tin về cupcakes của bạn. Bây giờ, cơ sở dữ liệu có thể chứa nhiều bảng và bản thân các bảng có thể chứa nhiều cột. Bên trong cơ sở dữ liệu của chúng tôi cupcake, chúng tôi có một bảng gọi là cupcake_cupboard. Bảng này sẽ được sử dụng để lưu trữ tất cả thông tin về cupcakes đó là, tốt, trong tủ của bạn. Các cột có trong bảng của bạn đại diện cho các thuộc tính của một cupcake. Ví dụ, cột của cupcake_cupboard Bánh ID, CakeType, CakeColor, và CakeIsNice. Cột boolean, đánh máy này được sử dụng để xác định xem bánh là đẹp hay không đẹp. Chúng ta sẽ bắt đầu với viết một tuyên bố chọn. Báo cáo lựa chọn được sử dụng để lấy dữ liệu của một bảng cơ sở dữ liệu cụ thể. Trong kịch bản này, chúng tôi muốn biết tất cả mọi thứ về tất cả các cupcakes mà tồn tại trong tủ của chúng tôi. Cú pháp để làm điều này là "không gian" Chọn sao, hoặc *, không gian từ không gian bảng của chúng tôi, là cupcake_cupboard. Hãy cho đi trước và thực hiện mà. Như chúng ta có thể thấy, đây là tất cả các cupcakes trong tủ của chúng tôi. Điều quan trọng cần lưu ý là *, hoặc dấu hoa thị, là một nhân vật thẻ hoang dã biểu thị tập hợp của tất cả các cột của bảng một số. Thông thường, chúng ta có thể truy cập vào một cột cụ thể hoặc cột bằng cách thay thế * với tên cột thực tế. Nếu chúng ta muốn nhiều cột, nhưng không phải tất cả, chúng ta có thể đạt được điều này bằng cách viết các tên cột phân chia ranh giới mỗi cột bằng dấu phẩy. Ví dụ, chúng ta hãy chỉ lấy CakeId và CakeType trong bảng cupcake_cupboard. Cú pháp để làm điều này là: SELECT không gian CakeID dấu phẩy Không gian CakeType từ cupcake_cupboard, bàn của chúng tôi. Hãy cho đi trước và thực hiện điều này. Và ở đây, bây giờ chúng ta chỉ có hai cột chúng tôi quy định cho mỗi cupcake trong tủ của chúng tôi. Chúng tôi cũng có thể tinh chỉnh các kết quả truy vấn của chúng tôi bằng cách xác định "Where" điều khoản ngay sau khi tên bảng. Ví dụ, dường như có một cupcake trong tủ của chúng tôi tốt, có nghĩa là, không đẹp. Hãy tìm ra tất cả các cupcakes trong tủ của chúng tôi được tốt, không tốt đẹp tim bằng cách sử dụng "ở đâu" khoản. Cú pháp để làm điều này là không gian không gian: SELECT * FROM cupcake_cupboard không gian không gian WHERE không gian cột có điều kiện của chúng tôi, trong trường hợp này CakeIsNice =, và giá trị boolean False. Điều quan trọng là cần lưu ý rằng nếu bạn đang sử dụng dây, bạn phải đặt nó bên trong dấu ngoặc đơn. Điều này đúng cho tất cả các chuỗi trong SQL, hoặc về cơ sở dữ liệu SQL ký tự biến thể, được gọi là Varchar kiểu dữ liệu. Trong trường hợp này, chúng tôi đang sử dụng đúng hay sai, đó là một giá trị boolean và không phải là một chuỗi. Hãy cho đi trước và thực hiện lệnh này. Thật lạ kỳ, đó là trường hợp đó, chúng tôi có 1 sô-cô-la không phải như vậy tốt đẹp cupcake trong tủ của chúng tôi. Tiếp theo, chúng ta sẽ viết một báo cáo chèn. Báo cáo chèn được sử dụng để chèn hoặc thêm thêm các hàng dữ liệu vào bảng cơ sở dữ liệu của bạn. Xem xét lại trường hợp của chúng ta, chúng ta hãy giả định mà chúng tôi đã chỉ cần thực hiện một thương hiệu mới cupcake. Vì chúng tôi là rất có tổ chức ăn cupcake, chúng tôi sẽ phải để chèn cupcake mới trong bảng cupcake_cupboard của chúng tôi. Cú pháp để làm điều này là: Chèn vào không gian vào không gian bảng của chúng tôi, cupcake_cupboard, không gian ( và ở đây chúng tôi chỉ định tên cột, định giới bằng dấu phẩy, CakeType dấu phẩy CakeColor dấu phẩy CakeIsNice) không gian. Sau này, chúng tôi viết từ GIÁ TRỊ không gian (và ở đây chúng tôi nhập giá trị cho mỗi cột tương ứng, cũng được phân định bằng dấu phẩy. Nháy đơn, bởi vì họ là tất cả các giá trị Varchar chúng tôi sẽ bao quanh chúng trong dấu ngoặc đơn, Bơ đậu phộng 'dấu phẩy' dấu phẩy màu nâu nhạt True. Bây giờ, điều quan trọng để cung cấp cho mỗi hàng một số duy nhất để xác định chính nó. Autoincrementing một cột cung cấp này như là  "Không có hai cùng một ID bao giờ có thể tồn tại trong bảng này." Chúng ta hãy đi trước và thực hiện. Hiện chúng tôi đi, tất cả các tổ chức. SQL tuyên bố rằng chúng tôi sẽ viết một báo cáo cập nhật. Báo cáo cập nhật có thể được sử dụng để sửa đổi dữ liệu trong một cột cho bất kỳ hàng hiện có trong bảng cơ sở dữ liệu của bạn. Trước đó trong kịch bản của chúng tôi, bằng cách sử dụng một tuyên bố chọn, chúng tôi đã xác định được một cupcake trong bảng của chúng tôi cupcake_cupboard giá trị CakeIsNice mà là False. Giả sử rằng trong khi cupcake bơ đậu phộng của chúng tôi là trong lò, chúng tôi đã thực hiện cupcake không-để-tốt đẹp của chúng tôi rất tốt đẹp. Được như vậy đặc biệt tổ chức, chúng tôi muốn cupcake của chúng tôi để phản ánh giá trị này trong bảng cupcake_cupboard của chúng tôi. Vì vậy, chúng ta hãy cập nhật cupcake sô-cô-la của chúng tôi trong cơ sở dữ liệu để phản ánh điều này. Cú pháp là: UPDATE không gian bảng của chúng tôi, không gian, cupcake_cupboard SET không gian cột mà chúng ta muốn thay đổi, CakeIsNice =. Sau đó, ở đây chúng tôi đặt không gian giá trị mới của chúng tôi thật. Bây giờ, bởi vì chúng tôi không muốn để cập nhật tất cả các hàng với giá trị này, chúng tôi muốn cung cấp một "ở đâu" điều khoản là sẽ xác định chúng tôi hàng chính xác mà chúng tôi muốn thay đổi. Trong trường hợp này, chúng ta biết rằng chỉ có một cupcake có một giá trị CakeIsNice là False. Hơn nữa, chúng tôi cũng sẽ đảm bảo rằng chúng tôi đang cập nhật hàng chính xác bằng cách sử dụng "" điều khoản. Chúng tôi sử dụng "" điều khoản để tinh chỉnh truy vấn của chúng tôi hơn nữa. Trong trường hợp này, bởi vì chúng ta biết rằng cupcake là sô cô la, chúng tôi sẽ sử dụng cột này CakeType. Trong trường hợp không gian có điều kiện cột không gian của chúng tôi CakeIsNice không gian = False, và không gian CakeType = 'CHOCOLATE. Vì vậy, đặt nó tất cả cùng nhau, báo cáo cập nhật này nói tìm thấy tất cả các cupcakes trong tủ cupcake của chúng tôi, và nếu có một cupcake có cột CakeIsNice chứa các giá trị False và CakeType chứa CHOCOLATE giá trị, chúng tôi muốn cập nhật giá trị hàng CakeIsNice cụ thể là True. Vì vậy, chúng ta hãy đi trước và thực hiện báo cáo. Và bây giờ, chúng tôi đang tổ chức. Tất cả điều này nói chuyện của cupcakes đã làm cho tôi một chút đói. Tôi nghĩ rằng tôi nên giúp đỡ bản thân mình một. Nhưng nếu tôi thực sự ăn này cupcake, tôi nên ít nhất cũng loại bỏ sự tồn tại của nó  từ bảng cupcake_cupboard của chúng tôi. Để làm điều này, chúng tôi sẽ sử dụng "Delete" tuyên bố. "Delete" tuyên bố có thể được sử dụng để loại bỏ tất cả hoặc một số hàng từ bảng. Nếu bạn muốn loại bỏ một số hàng cụ thể từ bảng, sau đó bạn phải cung cấp một "ở đâu" khoản, do đó xác định một cột phải là duy nhất để hàng mà bạn muốn loại bỏ. Đây là cú pháp: DELETE không gian từ không gian bảng cupcake_cupboard của chúng tôi, không gian. Bây giờ, vào thời điểm này, bất cứ khi nào bạn đang điều này trong một tuyên bố xóa của bạn bạn phải rất cẩn thận. Ví dụ, nếu tôi muốn chạy truy vấn này như là không có cung cấp một số "ở đâu" khoản Tôi sẽ mất tất cả các dữ liệu trong bảng này cupcake_cupboard, nhưng vì tôi đã biết rằng ID bánh của tôi là duy nhất, tôi sẽ sử dụng ID bánh Red Velvet cho khoản của tôi "ở đâu". Đâu không gian cột của chúng tôi, CakeID = 1. Bởi vì đây là một giá trị số nguyên không có nhu cầu để bao quanh nó trong dấu ngoặc đơn. Vì vậy, chúng ta hãy thực hiện báo cáo. Vâng, bây giờ chúng tôi đã xóa sổ sự tồn tại của cupcake này từ bảng cupcake_cupboard của chúng tôi, chúng tôi chỉ có một điều trái: Làm cho nó biến mất. Tôi là Christopher Bartholomew. Đây là CS50.