sql簡(jiǎn)介
sql是用于訪問和處理數(shù)據(jù)庫的標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言(Structed Query Language),支持絕大多數(shù)數(shù)據(jù)庫:mysql、sqlserver、oracle、access等等。其中mysql和php結(jié)合開發(fā)web的組合非常流行,因此以下適用于mysql數(shù)據(jù)庫。
注意:不同數(shù)據(jù)庫的sql語言命令格式不完全相同,請(qǐng)參考對(duì)應(yīng)的官方文檔。
sql應(yīng)用場(chǎng)景
sql經(jīng)典的使用場(chǎng)景為:創(chuàng)建數(shù)據(jù)庫和表-----插入記錄-----維護(hù)數(shù)據(jù)庫和表(增刪查改)
1. 創(chuàng)建數(shù)據(jù)庫和表
CREATE DATABASE my_db;
CREATE TABLE my_table{
coloum1_name1 data_type(size) constraint_name;
coloum1_name2 data_type(size) constraint_name;
...
};
以下創(chuàng)建一個(gè)websites的表:
CREATE TABLE `websites` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL DEFAULT ''
`url` varchar(255) NOT NULL DEFAULT '',
`alexa` int(11) NOT NULL DEFAULT '0'
`country` char(10) NOT NULL DEFAULT ''
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
ENGINE為設(shè)置mysql的數(shù)據(jù)庫引擎。charset為設(shè)置字符集。這個(gè)表有5列,分別是id、name、url、alexa和country,每一列都帶有數(shù)據(jù)類型和大小,比如id的數(shù)據(jù)類型和大小事int(11)。后面的都是約束條件(constraint_name):
- NOT NULL表示不能為NULL值。
- DEFAULT后面是默認(rèn)值。
- AUTO_INCREMENT是自增的,即在插入記錄時(shí)無需指定這個(gè)字段,這個(gè)字段會(huì)自增1,在后面可以看到AUTO_INCREMENT=6即可以指定初始值。
- PRIMARY KEY為設(shè)置主鍵(一個(gè)表應(yīng)該有一個(gè)主鍵,也只能有一個(gè)主鍵)。
約束條件包括:
| 約束條件 | 含義 |
|---|---|
| NOT NULL | 指定某列不能為NULL值 |
| UNIQUE | 指定某列的每行值不能重復(fù) |
| PRIMARY KEY | 指定表的主鍵 (NOT NULL 和 UNIQUE的結(jié)合) |
| FOREIGN KEY | 指定表的外鍵(外鍵是另一個(gè)表的主鍵) |
| DEFAULT | 指定沒有給列賦值時(shí)的默認(rèn)值 |
| CHECK | 保證列中的值符合條件 |
創(chuàng)建的這個(gè)空表如下形式:
| id | name | url | alexa | country |
|---|---|---|---|---|
2. 插入記錄
插入一條記錄有兩種方式,分別是不指定列名插入和指定列名插入。
INSERT INTO table_name VALUES(value1, value2, ...); 不指定列名插入,需列出全部插入值
INSERT INTO table_name (column1, column2, ...) VALUES(value1,value2,...) 指定列名,只需列出對(duì)應(yīng)值。
使用不指定列名在websites表中插入記錄:
INSERT INTO websites VALUES('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘寶', 'https://www.taobao.com/', '13', 'CN'), ('3', '菜鳥教程', 'http://www.runoob.com/', '4689', 'CN'), ('4', '微博', 'http://weibo.com/', '20', 'CN')
因此表中增加了4條記錄:

使用指定列名在websites表中插入記錄:
INSERT INTO websties (name, url, country) VALUES('Facebook', 'https://www.facebook.com/', 'USA' )
表中增加一條記錄:

這條記錄未指定alexa列的值,因此輸出默認(rèn)值0。
3.維護(hù)數(shù)據(jù)庫和表(增刪查改)
-
增加記錄
參考章節(jié)插入記錄
-
刪除記錄
刪除一條記錄非常簡(jiǎn)單,使用sql命令:
DELETE FROM table_name where column = some_value;
而使用命令:
DELETE FROM table_name 或 DELETE * FROM table_name將刪除表中所有的記錄。
你還可以使用drop語句來刪除索引、表或數(shù)據(jù)庫,刪除索引使用:
ALTER TABLE table_name DROP INDEX index_name;
刪除表使用:
DROP TABLE table_name;
刪除數(shù)據(jù)庫使用:
DROP DATABASE database_name;
如果你不想刪除表,只是想清空表,除了使用上述的DELETE命令,還可以使用:
TRUNCATE TABLE table_name;
-
查找記錄
查找記錄在數(shù)據(jù)庫的管理過程中非常重要,使用非常頻繁,掌握好查詢命令非常重要,限于篇幅的原因,我會(huì)另外花時(shí)間針對(duì)查找寫一篇博文,到時(shí)再附上鏈接。敬請(qǐng)期待!
-
修改(更新)記錄
修改/更新表內(nèi)容使用update命令:
UPDATE table_name
SET column1=value1, column2=value2,...
where some_column=some_value;
如果省略了where語句,那么表中對(duì)應(yīng)的列的所有記錄都將被修改。
你還可以使用alter命令來修改表:
ALTER TABLE table_name ADD column_name datatype表中增加一列
ALTER TABLE table_name DROP COLUMN column_name表中刪除一列
ALTER TABLE table_name MODIFY COLUMN column_name datatype修改表中列的數(shù)據(jù)類型
總結(jié)
上述只是sql命令的一些基礎(chǔ)命令,還有一些沒講到的包括查找命令(SELECT)、DB數(shù)據(jù)類型和聚合函數(shù)等將在后續(xù)博文陸續(xù)更新,歡迎關(guān)注!