第一篇:高效SQL語句(SQL Server)(寫寫幫推薦)
以下的SQL語句以Northwind為例
1、不要再where子句中“=”的左側(cè)使用函數(shù)和表達(dá)式,因為系統(tǒng)無法應(yīng)用函數(shù)或表達(dá)式中的索引
SELECT * FROM Customers WHERE Cast(CustomerID AS VARCHAR(20))='1'--Clustered Index Scan 全表掃描
SELECT * FROM Customers WHERE CustomerID ='1'--Clustered Index Seek 索引掃描
2、只返回必要的行或列
2.1 減少I/O次數(shù)
2.2 減少加載到內(nèi)存的數(shù)據(jù)量
3、關(guān)于組合索引(待定)
組合索引中的順序很重要,當(dāng)查詢語句中的列只能與組合索引中的第1列相匹配時,才能在查詢中應(yīng)用此索引
4、Distinct語句的使用原則
盡量少用,因為數(shù)據(jù)庫引擎需要花費大量的時間對所有字段進(jìn)行比較,過濾掉重復(fù)的記錄,因此影響了查詢的效率
字段較少時,可適當(dāng)采用;較多時,不宜采用
5、Union語句
Union必須滿足以下要求:
1、所有select語句的列數(shù)必須相同
2、所有select語句中對應(yīng)列的數(shù)據(jù)類型必須兼容
執(zhí)行包含Union的查詢語句的過程如下:
1、依次執(zhí)行所有select語句
2、將所有select語句的結(jié)果集合并為一個結(jié)果集
3、對結(jié)果集進(jìn)行排序,并過濾掉重復(fù)的記錄(由于需要第3步的操作,導(dǎo)致聯(lián)合查詢效率很低)可使用union all,不用排序和過濾重復(fù)記錄,效率高
6、使用存儲過程
數(shù)據(jù)庫引擎可以在創(chuàng)建存儲過程時對其進(jìn)行分析和優(yōu)化,并可在首次執(zhí)行該過程后使用該過程的內(nèi)存中版本。
相對來說,每次運行sql語句時,都要從客戶端重復(fù)發(fā)送,并且在sqlserver每次執(zhí)行這些語句時,對其進(jìn)行編譯和優(yōu)化。
7、如果需要多次對一個數(shù)據(jù)量非常大的表中一部分?jǐn)?shù)據(jù)進(jìn)行查詢操作,可以將這部分?jǐn)?shù)據(jù)放在臨時表中,然后對臨時表進(jìn)行操作。
8、模糊匹配符%和索引的關(guān)系
假定有一個表Good,主鍵為聚集索引,類型為nvarchar(50)
SELECT * FROM Goods AS g WHERE g.GoodsName LIKE '%商品1'--Clustered
Index Scan 全表掃描
SELECT * FROM Goods AS g WHERE g.GoodsName LIKE '商%品1'--Clustered Index Seek 索引掃描
SELECT * FROM Goods AS g WHERE g.GoodsName LIKE '商品1%'--Clustered Index Seek 索引掃描
結(jié)論:通配符%放在中間和后面會走索引,放在前面不會
9、應(yīng)盡量避免在 where 子句中對字段進(jìn)行 null 值判斷,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,如:
SELECT * FROM Employees AS e WHERE e.EmployeeID =1--走聚集索引
SELECT * FROM Employees AS e WHERE e.EmployeeID IS NULL--Constanct Scan10、盡量使用數(shù)字型字段,若只含數(shù)值信息的字段盡量不要設(shè)計為字符型,這會降低查詢和連接的性能,并會增加存儲開銷。這是因為引擎在處理查詢和連 接時會逐個比較字符串中每一個字符,而對于數(shù)字型而言只需要比較一次就夠了。
11、在所有的存儲過程和觸發(fā)器的開始處設(shè)置 SET NOCOUNT ON,在結(jié)束時設(shè)置 SET NOCOUNT OFF。無需在執(zhí)行存儲過程和觸發(fā)器的每個語句后向客戶端發(fā)送
DONE_IN_PROC 消息。
第二篇:高效SQL語句
1.SELECT子句中避免使用 “*”
當(dāng)你想在SELECT子句中列出所有的COLUMN時,使用動態(tài)SQL列引用 ?*? 是一個方便的方法.不幸的是,這是一個非常低效的方法.實際上,ORACLE在解析的過程中, 會將“*” 依次轉(zhuǎn)換成所有的列名, 這個工作是通過查詢數(shù)據(jù)字典完成的, 這意味著將耗費更多的時間.2.使用DECODE函數(shù)來減少處理時間
使用DECODE函數(shù)可以避免重復(fù)掃描相同記錄或重復(fù)連接相同的表.例如:
Sql代碼
1.SELECT COUNT(*),SUM(SAL)FROM EMP WHERE DEPT_NO = 0020 ANDENAME LIKE ?SMITH%?;
2.SELECT COUNT(*),SUM(SAL)FROM EMP WHERE DEPT_NO = 0030 AND ENAME LIKE ?SMITH%?;
SELECT COUNT(*),SUM(SAL)FROM EMP WHERE DEPT_NO = 0020 ANDENAME LIKE ?SMITH%?;
SELECT COUNT(*),SUM(SAL)FROM EMP WHERE DEPT_NO = 0030 AND ENAME LIKE ?SMITH%?;
你可以用DECODE函數(shù)高效地得到相同結(jié)果:
Sql代碼
1.SELECT COUNT(DECODE(DEPT_NO,0020,?X?,NULL))D0020_COUNT,2.COUNT(DECODE(DEPT_NO,0030,?X?,NULL))D0030_COUNT,3.SUM(DECODE(DEPT_NO,0020,SAL,NULL))D0020_SAL,4.SUM(DECODE(DEPT_NO,0030,SAL,NULL))D0030_SAL5.FROM EMP WHERE ENAME LIKE ?SMITH%?;
SELECT COUNT(DECODE(DEPT_NO,0020,?X?,NULL))D0020_COUNT,COUNT(DECODE(DEPT_NO,0030,?X?,NULL))D0030_COUNT,SUM(DECODE(DEPT_NO,0020,SAL,NULL))D0020_SAL,SUM(DECODE(DEPT_NO,0030,SAL,NULL))D0030_SAL FROM EMP WHERE ENAME LIKE ?SMITH%?;
類似的,DECODE函數(shù)也可以運用于GROUP BY 和ORDER BY子句中.3.刪除重復(fù)記錄
最高效的刪除重復(fù)記錄方法(因為使用了ROWID)
Sql代碼
1.DELETE FROM EMP E WHERE E.ROWID >(SELECT MIN(X.ROWID)FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
DELETE FROM EMP E WHERE E.ROWID >(SELECT MIN(X.ROWID)FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
4.用TRUNCATE替代DELETE
當(dāng)刪除表中的記錄時,在通常情況下,回滾段(rollback segments)用來存放可以被恢復(fù)的信息,如果你沒有COMMIT事務(wù),ORACLE會將數(shù)據(jù)恢復(fù)到刪除之前的狀態(tài)(準(zhǔn)確地說是恢復(fù)到執(zhí)行刪除命令之前的狀況),而當(dāng)運用TRUNCATE時, 回滾段不再存放任何可被恢復(fù)的信息.當(dāng)命令運行后,數(shù)據(jù)不能被恢復(fù).因此很少的資源被調(diào)用,執(zhí)行時間也會很短.5.計算記錄條數(shù)
和一般的觀點相反, count(*)比count(1)稍快,當(dāng)然如果可以通過索引檢索,對索引列的計數(shù)仍舊是最快的.例如 COUNT(EMPNO)
6.用Where子句替換HAVING子句
避免使用HAVING子句,HAVING 只會在檢索出所有記錄之后才對結(jié)果集進(jìn)行過濾,這個處理需要排序、總計等操作,如果能通過WHERE子句限制記錄的數(shù)目,那就能減少這方面的開銷, 例如:
Sql代碼
1.--低效
2.SELECT REGION,AVG(LOG_SIZE)FROM LOCATION GROUP BY REGION HAVING REGION REGION!= ?SYDNEY? AND REGION!= ?PERTH?3.--高效
4.SELECT REGION,AVG(LOG_SIZE)FROMLOCATION WHERE REGION REGION!= ?SYDNEY? ND REGION!= ?PERTH? GROUP BY REGION
--低效
SELECT REGION,AVG(LOG_SIZE)FROM LOCATION GROUP BY REGION HAVING REGION REGION!= ?SYDNEY? AND REGION!= ?PERTH?--高效
SELECT REGION,AVG(LOG_SIZE)FROMLOCATION WHERE REGION REGION!= ?SYDNEY? ND REGION!= ?PERTH? GROUP BY REGION
7.用EXISTS替代IN
在許多基于基礎(chǔ)表的查詢中,為了滿足一個條件,往往需要對另一個表進(jìn)行聯(lián)接.在這種情況下, 使用EXISTS(或NOT EXISTS)通常將提高查詢的效率.Sql代碼1.--低效
2.SELECT * FROM EMP WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ?MELB?)
3.--高效:
4.SELECT * FROM EMP WHERE EMPNO > 0 AND EXISTS(SELECT ?X?FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ?MELB?)
--低效
SELECT * FROM EMP WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ?MELB?)
--高效:
SELECT * FROM EMP WHERE EMPNO > 0 AND EXISTS(SELECT ?X?FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ?MELB?)
8.用NOT EXISTS替代NOT IN
在子查詢中,NOT IN子句將執(zhí)行一個內(nèi)部的排序和合并.無論在哪種情況下,NOT IN都是最低效的(因為它對子查詢中的表執(zhí)行了一個全表遍歷).為了避免使用NOT IN,我們可以把它改寫成外連接(Outer Joins)或NOT EXISTS.例如:
SELECT …FROM EMPWHERE DEPT_NO NOT IN(SELECT DEPT_NO FROM DEPT WHERE DEPT_CAT=?A?);
Sql代碼
1.--為了提高效率改寫為:(方法一: 高效)
SELECT ….FROM EMP A,DEPT B WHERE A.DEPT_NO = B.DEPT(+)AND B.DEPT_NO IS NULL AND B.DEPT_CAT(+)= ?A?2.--(方法二: 最高效)
SELECT ….FROM EMP E WHERE NOT EXISTS(SELECT ?X?FROM DEPT D WHERE D.DEPT_NO = E.DEPT_NO AND DEPT_CAT = ?A?);3.--為了提高效率改寫為:(方法一: 高效)
SELECT ….FROM EMP A,DEPT B WHERE A.DEPT_NO = B.DEPT(+)AND B.DEPT_NO IS NULL AND B.DEPT_CAT(+)= ?A?
4.--(方法二: 最高效)
SELECT ….FROM EMP E WHERE NOT EXISTS(SELECT ?X?FROM DEPT D WHERE D.DEPT_NO = E.DEPT_NO AND DEPT_CAT = ?A?);
9.用EXISTS替換DISTINCT
當(dāng)提交一個包含一對多表信息(比如部門表和雇員表)的查詢時,避免在SELECT子句中使用DISTINCT.一般可以考慮用EXIST替換 例如:
Sql代碼1.--低效:
2.SELECT DISTINCT DEPT_NO,DEPT_NAMEFROM DEPT D,EMP E WHERE D.DEPT_NO = E.DEPT_NO3.--高效:
4.SELECT DEPT_NO,DEPT_NAMEFROM DEPT D WHERE EXISTS(SELECT ?X? FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO);
5.--EXISTS 使查詢更為迅速,因為RDBMS核心模塊將在子查詢的條件一旦滿足后,立刻返回結(jié)果.--低效:
SELECT DISTINCT DEPT_NO,DEPT_NAMEFROM DEPT D,EMP E WHERE D.DEPT_NO = E.DEPT_NO
--高效:
SELECT DEPT_NO,DEPT_NAMEFROM DEPT D WHERE EXISTS(SELECT ?X? FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO);
--EXISTS 使查詢更為迅速,因為RDBMS核心模塊將在子查詢的條件一旦滿足后,立刻返回結(jié)果.10.用索引提高效率
索引是表的一個概念部分,用來提高檢索數(shù)據(jù)的效率,實際上ORACLE使用了一個復(fù)雜的自平衡B-tree結(jié)構(gòu),通常通過索引查詢數(shù)據(jù)比全表掃描要快,當(dāng)ORACLE找出執(zhí)行查詢和Update語句的最佳路徑時,ORACLE優(yōu)化器將使用索引,同樣在聯(lián)結(jié)多個表時使用索引也可以提高效率,另一個使用索引的好處是,它提供了主鍵(primary key)的唯一性驗證,除了那些LONG或LONG RAW數(shù)據(jù)類型, 你可以索引幾乎所有的列.通常, 在大型表中使用索引特別有效.當(dāng)然,你也會發(fā)現(xiàn), 在掃描小表時,使用索引同樣能提高效率,雖然使用索引能得到查詢效率的提高,但是我們也必須注意到它的代價.索引需要空間來存儲,也需要定期維護(hù),每當(dāng)有記錄在表中增減或索引列被修改時,索引本身也會被修改,這意味著每條記錄的INSERT , DELETE , UPDATE將為此多付出4 , 5 次的磁盤I/O,因為索引需要額外的存儲空間和處理,那些不必要的索引反而會使查詢反應(yīng)時間變慢注:定期的重構(gòu)索引是有必要的.11.避免在索引列上使用計算
WHERE子句中,如果索引列是函數(shù)的一部分,優(yōu)化器將不使用索引而使用全表掃描.舉例:Sql代碼
1.--低效:
2.SELECT …FROM DEPT WHERE SAL * 12 > 25000;3.--高效:
4.SELECT … FROM DEPT WHERE SAL> 25000/12;--低效:
SELECT …FROM DEPT WHERE SAL * 12 > 25000;--高效:
SELECT … FROM DEPT WHERE SAL> 25000/12;
12.用>=替代>
Sql代碼
1.--如果DEPTNO上有一個索引2.--高效:
SELECT *FROM EMPWHERE DEPTNO >=4
3.--低效:
SELECT *FROM EMPWHERE DEPTNO >3--如果DEPTNO上有一個索引 4.--高效:
SELECT *FROM EMPWHERE DEPTNO >=45.--低效:
SELECT *FROM EMPWHERE DEPTNO >3
兩者的區(qū)別在于, 前者DBMS將直接跳到第一個DEPT等于4的記錄而后者將首先定位到DEPTNO=3的記錄并且向前掃描到第一個DEPT大于3的記錄.
第三篇:高效的SQL語句
如何寫高效率的SQL語句、Where子句中的連接順序:
ORACLE采用自下而上的順序解析WHERE子句。
根據(jù)這個原理,表之間的連接必須寫在其他WHERE條件之前,那些可以過濾掉最大數(shù)量記錄的條件必須寫在WHERE子句的末尾。
舉例:
(低效)
select...from table1 t1 where t1.sal > 300 and t1.jobtype = '0001' and 20 <(select count(*)from table1 t2 where t2.pno = t1.tno;
(高效)
select...from table1 t1 where 20 <(select count(*)from table1 t2 where t2.pno = t1.tno and t1.sal > 300 and t1.jobtype = '0001';
2、Select子句中避免使用 “ * ”:
當(dāng)你想在select子句中列出所有的column時,使用動態(tài)SQL列引用 ‘*' 是一個方便的方法。不幸的是,這是一個非常低效的方法。
實際上,ORACLE在解析的過程中,會將 '*' 依次轉(zhuǎn)換成所有的列名, 這個工作是通過查詢數(shù)據(jù)字典完成的, 這意味著將耗費更多的時間。
3、減少訪問數(shù)據(jù)庫的次數(shù):
當(dāng)執(zhí)行每條SQL語句時,ORACLE在內(nèi)部執(zhí)行了許多工作:
解析SQL語句、估算索引的利用率、綁定變量、讀數(shù)據(jù)塊等等。
由此可見,減少訪問數(shù)據(jù)庫的次數(shù),就能實際上減少ORACLE的工作量。
舉例:
題目——我要查找編號為0001、0002學(xué)生的信息。
(低效)
select name,age,gender,address from t_student where id = '0001';
select name,age,gender,address from t_student where id = '0002';
(高效)
select a.name,a.age,a.gender,a.address,b.name,b.age,b.gender,b.address from t_student a,t_student b where a.id = '0001' and b.id = '0002';
4、使用Decode函數(shù)來減少處理時間:
使用DECODE函數(shù)可以避免重復(fù)掃描相同記錄或重復(fù)連接相同的表。
舉例:
(低效)
select count(*), sum(banace)from table1 where dept_id = '0001' and name like 'anger%';select count(*), sum(banace)from table1 where dept_id = '0002' and name like 'anger%';(高效)
select count(decode(dept_id,'0001','XYZ',null))count_01,count(decode(dept_id,'0002','XYZ',null))
count_02,sum(decode(dept_id,'0001',dept_id,null))sum_01,sum(decode(dept_id,'0002',dept_id,null))sum_02
from table1
where name like 'anger%';
5、整合簡單,無關(guān)聯(lián)的數(shù)據(jù)庫訪問:
如果你有幾個簡單的數(shù)據(jù)庫查詢語句,你可以把它們整合到一個查詢中(即使它們之間沒有關(guān)系)
舉例:
(低效)
select name from table1 where id = '0001';
select name from table2 where id = '0001';
select name from table3 where id = '0001';
(高效)
select t1.name, t2.name, t3.name
from table1 t1, table2 t2, table3 t3
where t1.id(+)= '0001' and t2.id(+)= '0001' and t3.id(+)= '0001'
【注:上面例子雖然高效,但是可讀性差,需要量情而定?。 ?/p>
6、刪除重復(fù)記錄:
最高效的刪除重復(fù)記錄方法(因為使用了ROWID)
舉例:
delete from table1 t1
where t1.rowid >(select min(t2.rowid)from table1 t2 where t1.id = t2.id);
7、盡量不要使用having子句,可以考慮用where替換。
having只會在檢索出所有記錄之后才對結(jié)果集進(jìn)行過濾.這個處理需要排序,總計等操作。如果能通過where子句限制記錄的數(shù)目,那就能減少這方面的開銷。
8、盡量用表的別名:
當(dāng)在SQL語句中連接多個表時,請使用表的別名并把別名前綴于每個Column上。這樣一來,就可以減少解析的時間并減少那些由Column歧義引起的語法錯誤。
9、用exists替代in(發(fā)現(xiàn)好多程序員不知道這個怎么用):
在許多基于基礎(chǔ)表的查詢中,為了滿足一個條件,往往需要對另一個表進(jìn)行聯(lián)接。在這種情況下,使用exists(或not exists)通常將提高查詢的效率。
舉例:
(低效)
select...from table1 t1 where t1.id > 10 and pno in(select no from table2 where name like 'www%');
(高效)
select...from table1 t1 where t1.id > 10 and exists(select 1 from table2 t2 where t1.pno = t2.no and name like 'www%');
10、用not exists替代not in:
在子查詢中,not in子句將執(zhí)行一個內(nèi)部的排序和合并。
無論在哪種情況下,not in都是最低效的(因為它對子查詢中的表執(zhí)行了一個全表遍歷)。為了避免使用not in,我們可以把它改寫成外連接(Outer Joins)或not exists。
11、用exists替換distinct:
當(dāng)提交一個包含一對多表信息的查詢時,避免在select子句中使用distinct.一般可以考慮用exists替換
舉例:
(低效)
select distinct d.dept_no, d.dept_name from t_dept d, t_emp e where d.dept_no = e.dept_no;(高效)
select d.dept_no, d.dept_name from t_dept d where exists(select 1 from t_emp where d.dept_no = e.dept_no);
exists使查詢更為迅速,因為RDBMS核心模塊將在子查詢的條件一旦滿足后,立刻返回結(jié)果.12、用表連接替換exists:
通常來說,采用表連接的方式比exists更有效率。
舉例:
(低效)
select ename from emp e where exists(select 1 from dept where dept_no = e.dept_no and dept_cat = 'W');
SELECT ENAME
(高效)
select ename from dept d, emp e where e.dept_no = d.dept_no and dept_cat = 'W';
13、避免在索引列上使用is null和is not null
避免在索引中使用任何可以為空的列,ORACLE將無法使用該索引。
對于單列索引,如果列包含空值,索引中將不存在此記錄;
對于復(fù)合索引,如果每個列都為空,索引中同樣不存在此記錄;
如果至少有一個列不為空,則記錄存在于索引中。
舉例:
如果唯一性索引建立在表的A列和B列上, 并且表中存在一條記錄的A,B值為(123,null),ORACLE將不接受下一條具有相同A,B值(123,null)的記錄(插入),然而如果所有的索引列都為空,ORACLE將認(rèn)為整個鍵值為空而空不等于空。
因此你可以插入1000 條具有相同鍵值的記錄,當(dāng)然它們都是空!
因為空值不存在于索引列中,所以WHERE子句中對索引列進(jìn)行空值比較將使ORACLE停用該索引。
14、最好把復(fù)雜的sql,去看下它的執(zhí)行計劃,這樣有利于你分析知道自己的sql效率如何。
第四篇:sql語句
簡單基本的sql語句 幾個簡單的基本的sql語句
選擇:select * from table1 where范圍
插入:insert into table1(field1,field2)values(value1,value2)
刪除:delete from table1 where范圍
更新:update table1 set field1=value1 where范圍
查找:select * from table1 where field1 like ’%value1%’
(1)數(shù)據(jù)記錄篩選:
sql=“select * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]”
sql=“select * from 數(shù)據(jù)表 where 字段名 like '%字段值%' order by 字段名 [desc]”sql=“select top 10 * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]”sql=“select top 10 * from 數(shù)據(jù)表 order by 字段名 [desc]”
sql=“select * from 數(shù)據(jù)表 where 字段名 in('值1','值2','值3')”
sql=“select * from 數(shù)據(jù)表 where 字段名 between 值1 and 值2”
(2)更新數(shù)據(jù)記錄:
sql=“update 數(shù)據(jù)表 set 字段名=字段值 where 條件表達(dá)式”
sql=“update 數(shù)據(jù)表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達(dá)式”
(3)添加數(shù)據(jù)記錄:
sql=“insert into 數(shù)據(jù)表(字段1,字段2,字段3 …)values(值1,值2,值3 …)”
sql=“insert into 目標(biāo)數(shù)據(jù)表 select * from 源數(shù)據(jù)表”(把源數(shù)據(jù)表的記錄添加到目標(biāo)數(shù)據(jù)表)
(4)數(shù)據(jù)記錄統(tǒng)計函數(shù):
AVG(字段名)得出一個表格欄平均值
COUNT(*;字段名)對數(shù)據(jù)行數(shù)的統(tǒng)計或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計MAX(字段名)取得一個表格欄最大的值
MIN(字段名)取得一個表格欄最小的值
SUM(字段名)把數(shù)據(jù)欄的值相加
引用以上函數(shù)的方法:
sql=“select sum(字段名)as 別名 from 數(shù)據(jù)表 where 條件表達(dá)式”
set rs=conn.excute(sql)
用 rs(“別名”)獲取統(tǒng)計的值,其它函數(shù)運用同上。
查詢?nèi)コ貜?fù)值:select distinct * from table1between的用法
between限制查詢數(shù)據(jù)范圍時包括了邊界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 數(shù)值1 and 數(shù)值2
in 的使用方法
select * from table1 where a [not] in(‘值1’,’值2’,’值4’,’值6’)
第五篇:SQL語句
SQL語句,用友的SQL2000,通過查詢管理器寫的語句
1、查詢
2、修改
3、刪除
4、插入
表名:users 包含字段:id,sname,sage
查詢 select * from users查詢users表中所有數(shù)據(jù)
select id,sname,sage from users查詢users表中id,sname,sage字段所有數(shù)據(jù)
可以限定查詢條件比如:
select sname from users where sage>20查詢年齡大于20歲的所有人的名字
修改 update users set sname='李四',sage=22將users表中數(shù)據(jù)都改為姓名李四,年齡22
update users set sname='李四',sage=22 where id=1限定id為1的人的信息修改為
姓名李四,年齡22
可以加where條件。
刪除 delete from users where id=2刪除users表中id為2的一行數(shù)據(jù)delete from users 代表刪除users中所有數(shù)據(jù)
插入 insert into users(id,sname,sage)values(5,'劉三',21)插入一條數(shù)據(jù)
SQL四條最基本的數(shù)據(jù)操作語句:Insert,Select,Update和Delete。
例如:SELECT columns FROM tables;其中columns為列的名稱,tables為表格名稱
1、查詢:select 字段名 from 表名 where 條件
查找在表(如A)中符合條件的字段
2、修改:update 表名 set 字段名=‘所要修改的內(nèi)容’
修改在表(如A)中的字段的值為:所要修改的內(nèi)容
3、刪除: delete from 表名 where 條件
刪除符合條件的表(如A)中的信息
4、插入: insert into 表名(字段名)(‘插入內(nèi)容’)
在表(如A)中插入字段為:插入內(nèi)容 的一條信息