- 前言
不是教程尼夺,
不是心得政恍,
還沒有體會方灾,
更沒啥經(jīng)驗滤祖。
這是一篇實時的學習筆記定踱,
所以你我一樣棍潘,我們同在。
God bless us!
- 計劃
學習書籍:SQL基礎(chǔ)教程
傳送門:SQL基礎(chǔ)教程
數(shù)據(jù)庫和SQL
1.數(shù)據(jù)庫
提到SQL亦歉,首先必須談到數(shù)據(jù)庫恤浪,那么什么是數(shù)據(jù)庫?
數(shù)據(jù)庫(DB)是將大量數(shù)據(jù)保存起來鳍徽,通過計算機加工而成的可以進行高效訪問的數(shù)據(jù)集合资锰。有了數(shù)據(jù)庫,那么計算機怎么去管理數(shù)據(jù)庫阶祭?
數(shù)據(jù)庫管理系統(tǒng)(DBMS)是用來管理數(shù)據(jù)庫的計算機系統(tǒng)绷杜。既然是管理數(shù)據(jù),為什么不使用Excel,文本文件,而要使用DBMS濒募?
DBMS優(yōu)點:1.實現(xiàn)多人同時共享數(shù)據(jù)鞭盟;2.提供操作大量數(shù)據(jù)所需的格式;3.讀寫自動化瑰剃;4.應(yīng)對文件被誤刪齿诉、硬盤故障的突發(fā)事故DBMS這么厲害,那么它有哪些種類晌姚?
DBMS種類:層次型數(shù)據(jù)庫粤剧、關(guān)系型數(shù)據(jù)庫(RDBMS)(主要介紹)、面向?qū)ο髷?shù)據(jù)庫挥唠、XML數(shù)據(jù)庫抵恋、鍵值存儲系統(tǒng)那么介紹下關(guān)系型數(shù)據(jù)庫?
關(guān)系型數(shù)據(jù)庫是現(xiàn)在應(yīng)用最廣泛的數(shù)據(jù)庫宝磨。和Excel工作表一樣弧关,它也采用行列二維表結(jié)構(gòu)來存儲數(shù)據(jù),一個數(shù)據(jù)庫中可以存儲多個表唤锉。Oracle Database世囊、SQL Server、DB2窿祥、PostgreSQL株憾、MySQL等都是關(guān)系型數(shù)據(jù)庫。
注意:因為本文以學習SQL為主晒衩,不針對特定RDBMS嗤瞎,所以后續(xù)內(nèi)容都使用便捷簡單的本地數(shù)據(jù)庫SQLite來操作。有了DB浸遗,有了RDBMS,然后我們就應(yīng)該想著怎么去讀寫數(shù)據(jù)了箱亿?
那么結(jié)構(gòu)化查詢語言SQL出現(xiàn)了跛锌,SQL語句就是我們與RDBMS溝通交流的工具,我們通過寫SQL語句告訴RDBMS我們想要得到的數(shù)據(jù),然后RDBMS訪問數(shù)據(jù)庫并將請求的數(shù)據(jù)返回給我們髓帽。
SQL
SQL語句的結(jié)構(gòu)
SQL是用關(guān)鍵字菠赚、表名、列名等組合而成的一條語句來描述操作的內(nèi)容郑藏。關(guān)鍵字很重要衡查,根據(jù)關(guān)鍵字我們主要分為三類
DDL:(數(shù)據(jù)定義)
CREATE:創(chuàng)建數(shù)據(jù)庫和表等對象
DROP:刪除數(shù)據(jù)庫和表等對象
ALTER:修改數(shù)據(jù)庫和表等對象的結(jié)構(gòu)
DML:(數(shù)據(jù)操作)
SELECT:查詢表中的數(shù)據(jù)
INSERT:向表中插入新數(shù)據(jù)
UPDATE:變更表中的數(shù)據(jù)
DALETE:刪除表中的數(shù)據(jù)
DCL:(數(shù)據(jù)控制)
COMMIT:確認對數(shù)據(jù)庫中的數(shù)據(jù)進行的變更
ROLLBACK:取消對數(shù)據(jù)庫中的數(shù)據(jù)進行的變更
GRANT:賦予用戶操作權(quán)限
REVOKE:取消用戶操作權(quán)限
- SQL的基本書寫規(guī)則
1.SQL語句以分號結(jié)尾
2.SQL語句不區(qū)分大小寫(插入表中的數(shù)據(jù)是區(qū)分大小寫的)
3.字符串和日期常數(shù)需要使用單引號(‘’)括起來
方便理解,后續(xù)內(nèi)容使用以下規(guī)則:關(guān)鍵字大寫必盖;表名的首字母大寫拌牲;其余(列名等)小寫。
- 創(chuàng)建表相關(guān)SQL語句實例練習
1.創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE shop;
2.創(chuàng)建數(shù)據(jù)表
CREATE TABLE Jyushoroku
(toroku_bango INTEGER PRIMARY KEY NOT NULL,
name VARCHAR(128) NOT NULL,
jyusho VARCHAR(256) NOT NULL,
tel_no CHAR(10),
mail_address CHAR(20));
3.表的更新
ALTER TABLE Jyushoroku ADD COLUNM yubin_bango CHAR(8) NOT NULL DEFAULT '0000-000';
ALTER TABLE Jyushoroku DROP COLUNM yubin_bango CHAR(8) NOT NULL DEFAULT '0000-000';
ALTER TABLE Jyushoroku RENAME TO Jyu;
4.插入數(shù)據(jù)
INSERT INTO Jyushoroku VALUES (1,'張三','湖南','0123456789','01234567899876543210','12345678');
5.表的刪除
DROP TABLE Jyushoroku;
6.事務(wù)及提交(用于數(shù)據(jù)控制歌粥,后續(xù)會介紹)
BEGIN TRANSACTION;
COMMIT;