日常開發(fā)中留量,避免不了要跟數據庫打交道吼具。也就避免不了要使用SQL語句對數據進行“增刪改查”操作。那么現在就讓我們來走進SQL語言的世界巨柒。
首先就讓我們來了解下究竟什么是SQL樱拴?
SQL(Structured Query Language)結構化查詢語言,是一種數據庫查詢和程序設計語言洋满,用于存取數據以及查詢晶乔、更新和管理關系數據庫系統(tǒng);同時也是數據庫腳本文件的擴展名牺勾。
結構化查詢語言是高級的非過程化編程語言正罢,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法驻民,也不需要用戶了解具體的數據存放方式翻具,所以具有完全不同底層結構的不同數據庫系統(tǒng), 可以使用相同的結構化查詢語言作為數據輸入與管理的接口。結構化查詢語言語句可以嵌套回还,這使它具有極大的靈活性和強大的功能裆泳。
版本
各種不同的數據庫對SQL語言的支持與標準存在著細微的不同,這是因為柠硕,有的產品的開發(fā)先于標準的公布工禾,另外,各產品開發(fā)商為了達到特殊的性能或新的特性蝗柔,需要對標準進行擴展闻葵。迄今為止已有100多種遍布在從微機到大型機上的數據庫產品SQL,其中包括DB2癣丧、SQL/DS槽畔、ORACLE、INGRES胁编、SYBASE厢钧、SQLSERVER鳞尔、DBASEⅣ、PARADOX坏快、MICROSOFTACCESS等铅檩。
語句結構
結構化查詢語言包含6個部分:
一:數據查詢語言(DQL:Data Query Language)
也稱為“數據檢索語句”憎夷,用以從表中獲得數據莽鸿,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞拾给,其他DQL常用的保留字有WHERE祥得,ORDER BY,GROUP BY和HAVING蒋得。這些DQL保留字常與其他類型的SQL語句一起使用级及。
二:數據操作語言(DML:Data Manipulation Language)
它的語句包括動詞INSERT,UPDATE和DELETE额衙。它們分別用于添加饮焦,修改和刪除表中的行。也稱為動作查詢語言窍侧。
三:事務處理語言(TPL:Things Processing Language)
它的語句能確保被DML語句影響的表的所有行及時得以更新县踢。TPL語句包括BEGIN TRANSACTION,COMMIT和ROLLBACK伟件。
四:數據控制語言(DCL:Data Control Language)
它的語句通過GRANT或REVOKE獲得許可硼啤,確定單個用戶和用戶組對數據庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問斧账。
五:數據定義語言(DDL:Data Definition Language)
其語句包括動詞CREATE和DROP谴返。在數據庫中創(chuàng)建新表或刪除表(CREATE TABLE 或 DROP TABLE);為表加入索引等咧织。DDL包括許多與人數據庫目錄中獲得數據有關的保留字嗓袱。它也是動作查詢的一部分。
六:指針控制語言(CCL)
它的語句习绢,像DECLARE CURSOR渠抹,FETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨行的操作。
今天就簡單的為大家介紹幾種最基本的SQL語句毯炮。
創(chuàng)建數據表
1.創(chuàng)建數據表格式
格式: create table 表名 (字段名1 字段類型1, 字段名2 字段類型2, …) ;
示例: create table t_student (id integer, name text, age inetger, score real) ;
2.SQLite數據類型
為了保持良好的編程規(guī)范逼肯、方便程序員之間的交流,編寫建表語句的時候最好加上每個字段的具體類型
建表時聲明類型或者不聲明類型都可以桃煎,也就意味著創(chuàng)表語句可以這么寫:
就算聲明為integer類型篮幢,還是能存儲字符串文本(主鍵除外)
create table t_student(name, age);
3.創(chuàng)建表推薦寫法
創(chuàng)建表格時, 最好加個表格是否已經存在的判斷, 這個防止語句多次執(zhí)行時發(fā)生錯誤.
格式: create table if not exists 表名 (字段名1 字段類型1, 字段名2 字段類型2, …) ;
if not exists: 判斷表不存在時才創(chuàng)建表.
4.創(chuàng)建表,設置主鍵(主鍵自動遞增)
SQL不區(qū)分大小寫,編寫SQL規(guī)范,最好關鍵字都使用大寫.表名最好加上t_前綴.
PRIMARY KEY: 約束為主鍵.
AUTOINCREMENT: 自動遞增.
創(chuàng)建表SQL語句:
CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text, age integer, score integer);
刪除表
1.刪除表的格式
格式: DROP TABLE IF EXISTS 表名;
2.刪除表示例
刪除表SQL語句: DROP TABLE IF EXISTS t_student;
修改表(重命名表)和添加字段
1.重命名數據表的格式
格式: ALTER TABLE 舊表名 RENAME TO 新表名;
2.重命名表示例
重命名表SQL語句: ALTER TABLE t_student RENAME TO t_person;
數據表添加字段
1.數據表添加字段的格式
格式: ALTER TABLE 表名 ADD COLUMN 字段名 數據類型 限定符
2.數據表添加字段示例
數據表添加字段SQL語句: ALTER TABLE t_student ADD COLUMN address text;
DML數據庫操作操作(增刪改)
插入數據(insert)
1.插入數據格式注意: 數據庫中的字符串內容應該用單引號 ’ 括住;
格式:insert into 表名 (字段1, 字段2, …) values (‘字段1的值’, ‘字段2的值’, …) ;
2.插入數據示例
示例:INSERT INTO t_student (name, age) VALUES ('James', 18);
更新數據(update)
1.更新數據格式
格式:update 表名 set 字段1 = 字段1的值, 字段2 = 字段2的值 where 條件;
2.更新數據示例注意: WHERE 條件是=號,不是==號.
示例:UPDATE t_student SET age = 19 WHERE name = 'James';
刪除數據(delete)
1.刪除數據格式
格式:delete from 表名 where 條件;
2.更新數據示例
示例:DELETE FROM t_student WHERE name = 'James';
DQL數據庫查詢語句(查詢)
1.查詢數據格式
格式1:select * from 表名;
*表示:通配符,表示所有字段.格式2:select 字段1, 字段2, … from 表名;
格式3:select 字段1, 字段2, … from 表名 where 條件;
2.查詢數據示例
示例1:SELECT * FROM t_student;
示例2:SELECT name, age FROM t_student;
示例3:SELECT name, age FROM t_student where name = 'James';
查詢相關語句
統(tǒng)計查詢
1.count(X):計算記錄個數
計算所有記錄個數:SELECT count(*) FROM t_student;
計算age有值的記錄個數(Null不計算在內):SELECT count(age) FROM t_student;
2.avg(X):計算某個字段的平均值。
3.sum(X):計算某個字段的總和为迈。
4.max(X):計算某個字段的最大值三椿。
5.min(X):計算某個字段的最小值缺菌。
排序查詢
1.升序ASC
格式:SELECT 字段1(或*) FROM 表名 ORDER BY 要排序的字段名 ASC;
示例:SELECT * FROM t_student ORDER BY age ASC;
2.降序
格式:SELECT 字段1(或*) FROM 表名 ORDER BY 要排序的字段名 DESC;
示例:SELECT * FROM t_student ORDER BY age DESC;
3.多個字段排序
格式:SELECT * FROM 表名 ORDER BY 字段名1 排序類型, 字段名2 排序類型;
示例:SELECT * FROM t_student ORDER BY age ASC, score DESC;
limit分頁查詢
1.limit分頁查詢
格式:select * from 表名 limit 數值1, 數值2 ;
示例:SELECT * FROM t_student LIMIT 4, 8;//跳過最前面4條語句,然后取8條記錄.
2.查詢第n頁的數據假設一頁顯示5條數據.
示例:SELECT * FROM t_student LIMIT 5*(n-1), 5;
3.特殊案例
示例:select * from t_student limit 7;
相當于:select * from t_student limit 0, 7;
多表查詢
1.多表查詢數據
格式:select 字段1, 字段2, … from 表名1, 表名2;
別名
應用場景: 當兩個表的字段同名時,可以使用別名來區(qū)分不同表同名字段.
1.數據表別名
格式:select 別名1.字段1 as 字段別名1, 別名2.字段2 as 字段別名2, … from 表名1 as 別名1, 表名2 as 別名2 ;
可以給表或者字段單獨起別名, as 可以省略.
表連接查詢
格式: select 字段1, 字段2, … from 表名1, 表名2 where 表名1.id = 表名2.id;
SQL特點
1.一體化:SQL集數據定義DDL搜锰、數據操縱DML和數據控制DCL于一體伴郁,可以完成數據庫中的全部工作。
2.使用方式靈活:它具有兩種使用方式蛋叼,即可以直接以命令方式交互使用焊傅;也可以嵌入使用,嵌入到C狈涮、C++狐胎、FORTRAN、COBOL歌馍、JAVA等主語言中使用握巢。
3.非過程化:只提操作要求,不必描述操作步驟松却,也不需要導航暴浦。使用時只需要告訴計算機“做什么”,而不需要告訴它“怎么做”晓锻。
4.語言簡潔歌焦,語法簡單,好學好用:在ANSI標準中带射,只包含了94個英文單詞同规,核心功能只用6個動詞,語法接近英語口語窟社。