MySql常用SQL增删改查精

MySql常用SQL增删改查精
MySql常用SQL增删改查精

SQL语句的添加、删除、修改

添加、删除、修改使用db.Execute(Sql命令执行操作

(一Select 语句

A.普通查询

1. 查询全部的行和列

select * from users

2. 查询部分的行并用as命名列(as可用空格代替)

select UserName as用户名,NickName 密码,sex from users where sex = 0

select UserName,NickName,sex from users where sex <> 0

3. 查询空行

i. select UserName from users where sex is nu II;

ii. select UserName from users where sex ="";

4. 使用常量列

select UserName as用户名,"中北大学"as "学校"from users;

5. 限制固定行数

select UserId ,UserName a用户名from users limit 2,4;

6. 升序排列降序排列按照多列排序

i. select * from users where Height >178 order by age asc;

ii. select * from users where Height >178 order by age desc;

iii. select UserName as用户名,Height 身高,Age as 年龄from users where Age>20 order

by Height asc, Age desc;

7. 随机查询前20条数据

Select * from users order by rand ( limit 20;

8. 关键字顺序:

Where ---- group by——having --- o rder by

B.高级查询:

1. 模糊查询——like

select SName aS姓名from Students where Sname like 张% ;'

2. 模糊查询——IS NULL

select Sname as生名,SAddress as地址form Students where SAddress is null

3. 模糊查询 --- betwee n

select Stude ntld,Score from Score where Score betwee n 60 and 80

4. 模糊查询——in

select Sname a学员姓名,SAddress as地址from Students where SAddress in(北京',''广州’上海’;

SELECT ? r.'fytd.SrjInij FROM :砒比

WHERE lypa > "bunna?

,

SELECT SfSCQrtl 献* 甲场]£■

From Scon WHERE Scort >■ 60 SELECT AS 平均虜章一蘭&X I S EDT*)AS■■分一

MIU AS From Scot?WHERE Scan k>6C-

C.聚合函数

SELECT COUNT f(di5E9nict]|idl}| AS AH Aft From frcoirv

WHERE Scm BO WthMfieM*

D.分组查询

a分组查询—— GROUP BY

SELEC CountlD. AVGl£cc

FROM Scora GROUP OV CourulD

COurMd

?1

37L2

9托£

b分组查询---- 多列分组

SELECT SlvdtndD AS Goun?4D AS 冏*iM试

咖Zr平均畅

FROM Scon QRQUP ST S urU^tlD Co-- ",

c分组查询——HAVING

SELECT SiutT?ni>0 AS 富员■专,Covn?ED AS 内■■茁

Cc*uf?ID

d分组查询总结

i. where字句从数据源中去掉不符合其搜索条件的数据

ii. group by字句搜集数据航到各个组中

iii. 统计函数为各个组计算统计值

iv. hav ing字句去掉不符合其搜索条件的各组数据行

v. 使用group by时,select后面出现的内容要么为聚合函数,要么为group by后面出现的内容

vi. 关键字的先后顺序:where ------ group by ------ h avi ng ------ o rder by

E.多表连接查询

分类:

内连接(inner join):(等值连接、内连接)只返回两个表中连结字段相等的行外连接:1左外连接(left join )返回包括左表中的所有记录和右表中连结字段相等的记录

2右连接(right join ):返回包括右表中的所有记录和左表中连结字段相等的记录。

SELECT From INNER J6hl ON S C.C D4J I F3?IC I^ C.Scara S^Qr* AS C

SUjd?nl$ AS S

C.StudtmcliD ■ S S>Co>d?

SELECT StudtimtM.SHjmia. ■上e>ur?l[L 罂迄w FROM Sludents,

WHERE 52血110£3& -s SH&ore.SmdcntID

SELECT

S A£ C} CourwtNjm? A3 WK C Scor*

INNER JOIN A$ CON |$ ?Cod* * C UudantlD)

INNER J04N Cour*? AS C$ ?丁" [https://www.360docs.net/doc/3b6159734.html,urtvlD ? C CourttK}}

SCiLECT

i SHamfl AS. 匚■口AS C Sc&ri AS

FROM StudarrEs AS S . Sc ora AS 匚Cour>i AS ci wti?ri S.SCoM ■ C SoiMntiD CS.CouriuHD ■ C.CiM*r??4D

SELECT Frgm

LEFT JOIN

ON

$ UtMuifl C CoursalQ C.$cor? S

Sc@r? AS C

C Stud?mli

D ■ S SCcd?

SELECT Tnl?i< Tnlv^kl! Titles Trata Publish?rs Pub^ridm* FROM tUlM

RIGHT JOIN Puiblii4i?r3

Q 计TrtiHts.Pub^id - Publiis hort. P ub_id

F.子查询

在某些特定的业务需求下,当进行查询的时候,需要的条件是另一个select语句的结果,这个时候,就要用到子查询。用于子查询的关键字包括:in、notin、

=、!=、exists、not exists …

■豊曲嵇肩举住年?大手累小凤的学t??

SELECT ' FROM ituteifc WHERE stuAgo >

(SELECT事山心FROM 刊血g 鼻中凤]

1.子查询在where语句中的一般用法:

?SELECT ... FROM 知 WHERE字図1和子住询)

?押血的憲询林为肚冷兔*粘号中嵐.人的査逆聲为十杏询-UPDATE, INSERT. DELETE?nIUttffi+曲注矍亂于SELECTS旬.林子査询粗比牧远算裕联令檯用时.粥则t

证予育闻返回的値莒I平

Sc?rt

2.子查询in

3. ---------------- 子查询not in

4. ---------------- 子查询exists

5. ---------------- 子查询not exists

6.子查询---- from中子查询

7.子查询---- any、in、some

any意思任意一个,即大于任意一个即可,注意与all的区别

Miter n fftOv n WHERE ?I “NYIWH MT n fROM 熾

-井析匸HAfttl中育一行也含(TO) . (U3!ltE2包肯(21. 14, 7) , n 豪it式为TRUE.因如中有亠牛■丹珀谟值屮子M.如果豪12邑常( 20. 10),車書卽栗豪t3为空赛?■!(煤氏为FUSE* fal星< NULL. NULL. KULL) , ■張堆式为MIKNO榔H +

词语IN< = AMY?a|*-冏此.?WtiS旬壘樺的:

' SELECT 51 FHOM tf WHERE ?1 ? ANY (SELECT FROM l2);

' SELECT fl FROMrl W*iER6 ?1 iM (SELECT ?1 FROM rj|r

^^SOMEJtANY的别fi.同此,述曲牛ift切是FKh

-SELECT ?1 FROM tl WHERE >1 SELECT t1 FROW(2):

-SELECT 41 FROM t1 WHERE a1 ■ ■ 4QME | SELECT s1 FROM t2|.

8.子查询——ALL

all意思所有的值,注意与any的区别

SELECT *1 F^OM tl WbERE 11 AL^ {SELECT 11 FROM 121

* 井騎i Wi&fti中疽杼色盘 , H

豪址式沖TRUE.稱为lOktta4>Rff* 三*f?K* (12,

fi. NULL. -100) r MUil式対FALM.古耳鼻说中肝一仆■临人丁10. Jta鼻豪□包需<0, NULL. 1) ” ■農达式为5kn&bn.

not in是ALL的别名

?SELfCT tl FROM tl WHERE *1 v ALL (SELECT t1 FR0W l2):; -SELECT si FftOM tl WHERE tl NOT IM (SELfCT ? FROM l咼

9.补充:

Sql = "Select Distinct 字段名From 数据表"

Dist inct函数,查询数据库存表内不重复的记录

Sql = "Select Count(* From 数据表where 字段名1>#18:0:0#

and 字段名1< #19:00# "

count函数,查询数库表内有多少条记录,“字段名T是指同一字段

例:

set rs=co nn .execute("select coun t(id as idnum from n ews"

resp on se.write rs("id num"

sql="select * from 数据表where 字段名between 值1 and 值2"

Sql="select * from 数据表where 字段名between #2003-8-10#

and #2003-8-12#"

在日期类数值为2003-8-10 19:55:08 的字段里查找2003-8-10至

2003-8-12的所有记录,而不管是几点几分。

select * from tb_n ame where datetime betwee n #2003-8-10# and

#2003-8-12#

字段里面的数据格式为:2003-8-10 19:55:08 ,通过sql查出2003- 8-10

至2003-8-12的所有纪录,而不管是几点几分。

Sql="select * from 数据表where字段名=字段值order by 字段名[desc]"

Sql="select * from 数据表where 字段名like '% 字段值%' order by字段

名[desc]"

模糊查询

Sql="select top 10 * from 数据表where 字段名order by 字段

名[desc]" 查找数据库中前10记录

Sql="select top n * form 数据表order by n ewid("

随机取出数据库中的若干条记录的方法

top n,n就是要取出的记录数

Sql="select * from

数据表where字段名in ('值1','值2','值3

(二insert 语句

sql="insert into 数据表(字段1,字段2,字段3…values (值1,值2,值3…

sql="insert into 数据表values (值1,值2,值3 …"

不指定具体字段名表示将按照数据表中字段的顺序,依次添加

sql="insert into 目标数据表select * from 源数据表"

把源数据表的记录添加到目标数据表

(三update 语句

Sql="update 数据表set 字段名=字段值where条件表达式"

Sql="update 数据表set字段仁值1,字段2=值2 .............. 字段门=值n where条件表达式"

Sql="update 数据表set 字段仁值1,字段2=值2字段门=值n "

(四delete语句

Sql="delete from 数据表where条件表达式"

Sql="delete from 数据表"

没有条件将删除数据表中所有记录

(五数据记录统计函数

AVG字段名得出一个表格栏平均值

COUNT(*|字段名对数据行数的统计或对某一栏有值的数据行数统计MAX字段名取得一个表格栏最大的值

MIN(字段名取得一个表格栏最小的值

SUM字段名把数据栏的值相加

引用以上函数的方法:

sql="select sum( 字段名as别名from 数据表where条件表达式" set rs=c onn. excute(sql

用rs("别名"获取统的计值,其它函数运用同上。

(六数据表的建立和删除

CREATE TABL数据表名称(字段1类型1(长度,字段2类型2(长度例:CREATE TABLE tabO1(name varchar(50,datetime default now(DROP TABL救据表名称(永久性删除一个数据表

(七记录集对象的方法

rs.movenext将记录指针从当前的位置向下移一行

rs.moveprevious 将记录指针从当前的位置向上移一行

rs.movefirst 将记录指针移到数据表第一行

rs.movelast 将记录指针移到数据表最后一行

rs.absolutepositio n=N 将记录指针移到数据表第N行

rs.absolutepage=N 将记录指针移到第N页的第一行

rs.pageco unt 根据pagesize 的设置返回总页数

rs.pagesize=N 设置每页为N条记录

rs.recordco unt 返回记录总数

rs.bof返回记录指针是否超出数据表首端,true表示是,false为否rs.eof返回记录指针是否超出数据表末端,true表示是,false为否rs.delete 删除当前记录,但记录指针不会向下移动

rs.addnew添加记录到数据表末端

rs.update 更新数据表记录

相关主题
相关文档
最新文档