結構化查詢語言(SQL)原理
2024-07-21 02:34:29
供稿:網友
第一部分:介紹
結構化查詢語言(SQL)是現代數據庫體系結構的基本構成部分之一。SQL定義了在大多數平臺上建立和操作關系數據庫的方法。乍看這種語言很可怕,很復雜,但它真的不是那么糟。現在你將會知道它的原理,你會向往它,用它來操作數據庫的。
這周,我們SQL系列的第一篇文章會介紹SQL的基本概念,我們會快速的看看數據庫的創建和修改命令。在整篇文章,請記住我們的意圖:我們會了解SQL的大概――不是把握那些單個的命令。我們會提供一些例子來說明這個意圖和解釋它的原理,但是讀完這篇文章后假如你還不會寫自己的SQL命令請不要灰心。我們將在以后幾個星期會具體介紹那些主要命令的。
隨便說說,SQL的正確發音在數據庫交流中是有爭論的。對于SQL標準,美國標準協會認為官方發音是“es queue el.”。然而,許多數據庫專家用行話“sequel”。這看你自己的選擇。
SQL有好幾種版本。Oracle 數據庫定義它的PL/SQL。Microsoft SQL Server 定義它的Transact-SQL。然而,所有這些版本都是基于工業標準的ANSI SQL。在該指南,我們堅持用適用于任何現代關系數據庫系統的基于ANSI標準的SQL命令
SQL命令可以分成兩大子系統語言。數據定義語言(DDL)包含那寫用用于建立和刪除數據庫以及數據庫實體的命令。用DDL語言定義了數據庫結構后,數據庫治理者和用戶就可以利用數據操作語言來插入、得到和修改數據內容。在本文章的下兩個部分,我們將更具體地探討DDL和DML。在以后的文章中我們將會對非凡的SQL命令做更深入的探討。
現在讓我們看看數據定義語言。
第二部分:數據定義語言
數據定義語言(DDL)是用來定義和刪除數據庫以及數據庫實體的。這些命令主要是被數據庫治理者用來建立和刪除數據庫實體的。讓我們來看看四種基本DDL命令的結構和用法。
CREATE
在計算機上安裝一個數據庫治理系統以便你建立和治理許多獨立的數據庫。比如,你要維護一個銷售部門的消費者庫和人力資源部的職員數據庫。用CREATE命令就能在你的平臺上建立這些數據庫。例如下面的命令:
CREATE DATABASE employees
在你的數據庫治理系統上建立一個叫“employees”的空庫。建立數據庫后,下一步你就建一些包含這些數據的表。(假如這個沒有意義,你可以看看關于Microsoft access原理的文章來得到數據庫和表的總的看法)。CREATE的另一個參數可用于這個目的。看:
CREATE TABLE personal_info
(first_name char(20) not null, last_name char(20) not null, employee_id int not null)
在當前的數據庫中建一個叫“personal_info”的表。在我們的例子中,表包含三個屬性:first_name,last_name 和employee_id。不要擔心此命令所包含的其它信息――我們將在以后的文章中有所介紹。
USE
USE命令讓你能在你的數據庫治理系統中指定要操作的數據庫。比如,我們當前使用的是sales數據庫,而我們要發出一些操作employees數據庫的命令,我們就的先執行以下的命令:
USE employees
在執行命令和操作數據庫前,你要有意識地確定你要操作的數據庫,這是很重要的。
ALTER
一旦你在數據庫中建立了一個表,你也許想要修改它。ALTER命令能讓你改變數據庫的結構而不用刪除它之后在重建。看看下面的命令:
ALTER TABLE personal_info
ADD salary money null
這個例子給personal_info表添加了一列新的屬性――employee's salary。“money”指定的格式使職員的薪水用美元和美分的格式存放。最后,為空(NULL)則告訴數據庫對任何職員次列可以為空值。
DROP
數據定義語言的最后一個命令,DROP,答應我們從數據庫治理系統中移去整個數據庫實體。比如,假如你想永遠的移去你建立了的personal_info表,我們就的用下面的命令:
DROP TABLE personal_info
同樣的,下面的命令將用來移去整個employee數據庫:
DROP DATABASE employees
請小心地使用這個命令!記住DROP命令會刪除整個的數據庫。假如你想刪掉某個記錄,用數據治理語言的DELETE命令。
那只是數據定義語言的一小部分。在本文的下一部分,我們將看看數據操作語言怎樣被用來操作數據庫中的信息內容。請繼續!
第三部分:數據操作語言
數據操作語言(DML)用來得到、插入和修改數據庫信息的。用戶在常規的數據庫操作中使用這些命令。讓我們來大概地了解一下基本的DML命令:
INSERT
在SQL中INSERT命令被用來在表中添加一些記錄。回到上面的personal_info例子,假設人力資源部要往庫中添加一個新的employee記錄。他們會用到類似于下面的命令:
INSERT INTO personal_info
values('bart','simpson',12345,$45000)
請注重,在記錄中指定了四個值。
這些對應表中定義的屬性:first_name,last_name,employee_id,and salary。
SELECT
SELECT命令是SQL最常用的命令。它答應數據庫使用者從一個數據庫中得到他們想要的信息。讓我們看點例子,繼續用employees庫中的personal_info表。
下面的命令得到personal_info表中的所有信息。注重,星號在SQL中是通配符。下面的意思是:“從personal_info表中取所有信息”。
SELECT *
FROM personal_info
作為選擇,用戶想限定從數據庫中得到的數據列。比如,人力資源部想列出公司中所有職員的名字。下面的SQL命令就能得到這些信息:
SELECT last_name
FROM personal_info
最后,WHERE子句用來限定得到的記錄,使其合乎要求。CEO也許會想得到所有高薪的職員的信息。下面的命令將從personal_info表得到薪水高于50,000美元的記錄:
SELECT *
FROM personal_info
WHERE salary > $50000
UPDATE
UPDATE命令用來更新表的內容,無論是成批的還是單個的記錄。每年公司給每個職員加30%的生活津貼。下面的命令用來快速地使所有的職員的記錄實現這個目的:
UPDATE personal_info
SET salary = salary * 1.03
另一方面,我們一個新的職員art Simpson超額完成工作。治理者想嘉獎他5,000美元。用WHERE子句就能單個地給Bart添加薪水:
UPDATE personal_info
SET salary = salary + $5000
WHERE employee_id = 12345
DELETE
最后,我們來看看DELETE命令。你會發現它的語法類似于其它的DML命令。不幸的是,最新的公司收入報告比預想的還差,可憐的Bart被解雇了。用帶WHERE的DELETE命令從personal_info表中刪去他的記錄。
DELETE FROM personal_info
WHERE employee_id = 12345