SQL筆記一(基礎(chǔ))

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條記錄:

Paste_Image.png

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

表中增加一條記錄:

Paste_Image.png

這條記錄未指定alexa列的值,因此輸出默認(rèn)值0。

3.維護(hù)數(shù)據(jù)庫和表(增刪查改)

  • 增加記錄

參考章節(jié)插入記錄

  • 刪除記錄

刪除一條記錄非常簡(jiǎn)單,使用sql命令:
DELETE FROM table_name where column = some_value;
而使用命令:
DELETE FROM table_nameDELETE * 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)注!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容