sql是個(gè)結(jié)構(gòu)化查詢語(yǔ)言
說(shuō)人話就是,它用各種語(yǔ)言命令去操作(多是查詢)網(wǎng)站的數(shù)據(jù)庫(kù)中的數(shù)據(jù)途乃。
1.用sql做查詢,需要先有一個(gè)能顯示網(wǎng)站數(shù)據(jù)的網(wǎng)站
RDBMS 數(shù)據(jù)庫(kù)程序(比如 MS Access、SQL Server蛙婴、MySQL)
使用服務(wù)器端腳本語(yǔ)言,比如 PHP 或 ASP
使用 SQL 來(lái)獲取您想要的數(shù)據(jù)
使用 HTML / CSS
安裝好數(shù)據(jù)庫(kù)程序后尔破,要訪問(wèn)數(shù)據(jù)表街图?
sql的語(yǔ)言命令對(duì)大小寫不敏感,需要在每句語(yǔ)句后加分號(hào)
2.SQL重要的操作有
select:從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)
update:更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)
delete:從數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)
insert into:從數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)
create database:創(chuàng)建新數(shù)據(jù)庫(kù)
alter?database:修改數(shù)據(jù)庫(kù)
create table:創(chuàng)建新表
alter table:變更(改變)數(shù)據(jù)庫(kù)表
drop table:刪除表
create index:創(chuàng)建索引(搜索鍵)
drop index:刪除索引
3. select語(yǔ)句:選擇數(shù)據(jù)
SELECT?column_name,column_name
FROM?table_name;
例如:websites數(shù)據(jù)表
SELECT name,country FROM Websites;
選擇的是數(shù)據(jù)表websites中name,country兩列的數(shù)據(jù)
如果選擇表中所有列的數(shù)據(jù):
SELECT * FROM Websites;
4.select語(yǔ)句去除重復(fù)值
SELECT DISTINCT?column_name,column_name
FROM?table_name;
例如:
SELECT DISTINCT country FROM Websites;
5.where語(yǔ)句懒构,用于過(guò)濾功能
SELECT?column_name,column_name
FROM?table_name
WHERE?column_name operator value;
例如:
SELECT * FROM Websites WHERE country='CN';
文本字段 vs. 數(shù)值字段
SQL 使用單引號(hào)來(lái)環(huán)繞文本值(大部分?jǐn)?shù)據(jù)庫(kù)系統(tǒng)也接受雙引號(hào))餐济。
在上個(gè)實(shí)例中 'CN' 文本字段使用了單引號(hào)。
如果是數(shù)值字段胆剧,不要使用引號(hào)絮姆。
例如:
SELECT * FROM Websites WHERE id=1;
運(yùn)算符描述
=等于
<>不等于。注釋:在 SQL 的一些版本中秩霍,該操作符可被寫成 !=
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某個(gè)范圍內(nèi)
LIKE搜索某種模式
IN指定針對(duì)某個(gè)列的多個(gè)可能值
5.SQL?AND & OR?運(yùn)算符
如果第一個(gè)條件和第二個(gè)條件都成立篙悯,則 AND 運(yùn)算符顯示一條記錄。
如果第一個(gè)條件和第二個(gè)條件中只要有一個(gè)成立铃绒,則 OR 運(yùn)算符顯示一條記錄鸽照。
例如:從 "Websites" 表中選取國(guó)家為 "CN" 且alexa排名大于 "50" 的所有網(wǎng)站
SELECT * FROM WebsitesWHERE country='CN'AND alexa > 50;
例如:從 "Websites" 表中選取國(guó)家為 "USA" 或者 "CN" 的所有客戶
SELECT * FROM WebsitesWHERE country='USA'OR country='CN';
結(jié)合And&OR
從 "Websites" 表中選取 alexa 排名大于 "15" 且國(guó)家為 "CN" 或 "USA" 的所有網(wǎng)站
SELECT * FROM Websites WHERE alexa > 15AND (country='CN' OR country='USA');
6.ORDER BY 關(guān)鍵字
ORDER BY 關(guān)鍵字用于對(duì)結(jié)果集按照一個(gè)列或者多個(gè)列進(jìn)行排序。
ORDER BY 關(guān)鍵字默認(rèn)按照升序?qū)τ涗涍M(jìn)行排序颠悬。
如果需要按照降序?qū)τ涗涍M(jìn)行排序矮燎,您可以使用 DESC 關(guān)鍵字。
SQL ORDER BY 語(yǔ)法
SELECT?column_name,column_name
FROM?table_name
ORDER BY?column_name,column_name?ASC|DESC;
例如:從 "Websites" 表中選取所有網(wǎng)站赔癌,并按照 "alexa" 列排序
SELECT * FROM Websites ORDER BY alexa;
例如:從 "Websites" 表中選取所有網(wǎng)站诞外,并按照 "alexa" 列降序排序
SELECT * FROM Websites ORDER BY alexa DESC
從 "Websites" 表中選取所有網(wǎng)站,并按照 "country" 和 "alexa" 列排序灾票,先按照country列排序后峡谊,alexa再按照country列來(lái)排序
SELECT * FROM Websites ORDER BY country,alexa;
7.SQL?INSERT INTO?語(yǔ)句插入新記錄
INSERT INTO 語(yǔ)句用于向表中插入新記錄,可以有兩種編寫形式
第一種形式無(wú)需指定要插入數(shù)據(jù)的列名刊苍,只需提供被插入的值即可:
INSERT INTO?table_name
VALUES (value1,value2,value3,...);
第二種形式需要指定列名及被插入的值:
INSERT INTO?table_name?(column1,column2,column3,...)
VALUES (value1,value2,value3,...);
例如:要向 "Websites" 表中插入一個(gè)新行
INSERT INTO Websites (name, url, alexa, country)
VALUES ('百度','https://www.baidu.com/','4','CN');
在指定的列插入數(shù)據(jù)既们,只在 "name"、"url" 和 "country" 列插入數(shù)據(jù)(id 字段會(huì)自動(dòng)更新)班缰,空余的alexa列會(huì)自動(dòng)填充值0
INSERT INTO Websites (name, url, country)
VALUES ('stackoverflow', 'http://stackoverflow.com/', 'IND')
7.SQL?UPDATE?語(yǔ)句更新表中的記錄
UPDATE 語(yǔ)句用于更新表中已存在的記錄贤壁,SQL UPDATE 語(yǔ)法
UPDATE?table_name
SET?column1=value1,column2=value2,...
WHERE?some_column=some_value;
例如:要把 "菜鳥(niǎo)教程" 的 alexa 排名更新為 5000,country 改為 USA
UPDATE Websites SET alexa='5000', country='USA'?
WHERE name='菜鳥(niǎo)教程';
8.SQL?DELETE?語(yǔ)句刪除表中的記錄
DELETE 語(yǔ)句用于刪除表中的行埠忘,SQL DELETE 語(yǔ)法
DELETE FROM?table_name
WHERE?some_column=some_value;
例如:要從 "Websites" 表中刪除網(wǎng)站名為 "百度" 且國(guó)家為 CN 的網(wǎng)站
DELETE FROM Websites
WHERE name='百度' AND country='CN';