ACCESS数据库常用SQL语句

合集下载

access like用法

access like用法

access like用法access like是一种SQL语言中的模糊查询操作符,它在查询中提供了一种相对灵活的搜索方式。

此操作符通过定义一段文本模式来搜索匹配的结果。

在SQL查询中,like操作符通常与通配符(wildcard)一起使用,如%和_,以更好地满足用户的搜索需求。

在使用access like操作符时,需要注意以下几点:1. 基本语法like操作符基本语法为: SELECT column_name(s) FROM table_name WHEREcolumn_name LIKE pattern;其中,pattern是一个可匹配的模式,可以使用通配符%和_。

例如:SELECT * FROM Products WHERE ProductName LIKE '%apple%'; 这条SQL语句将返回所有包含“apple”文本的产品列表,如“apple pie”、“apple juice”等等。

2. 通配符%的应用4. 组合应用5. 注意事项使用%,_等通配符时,需要注意以下几点:(1)避免过度使用。

将通配符用于搜索模式将增加查询的复杂性。

因此,在使用模糊搜索时,应尽量限制通配符的使用次数,以减少查询时间。

(2)匹配大小写。

在大多数情况下,like操作符默认是不区分大小写的。

如果您需要在搜索时区分大小写,请使用区分大小写的操作符like binary。

总之,access like操作符为SQL查询提供了更加灵活的搜索方式,可以用于匹配任意长度和任意文本的模式。

在使用时,应该注意限制通配符的使用,避免增加查询时间。

同时,应注意使用倒引号和反斜杠等功能以确保模糊搜索的准确性。

数据库常用sql语句有哪些

数据库常用sql语句有哪些

数据库常用sql语句有哪些数据库常用sql语句有哪些结构化查询语言简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

下面是店铺整理的数据库常用sql语句有哪些,欢迎大家分享。

数据库常用sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2<score;9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC whereS.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002')group by S# having count(*)=(select count(*) from SC where S#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名 ,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[<60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩 > T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩 desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;28、查询男生、女生人数Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) asagefrom studentwhere CONVERT(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;34、查询课程名称为“数据库”,且分数低于60的`学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score<60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e<60 order by C# ;38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B whereA.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过10人的课程才统计)。

Accesssql语句创建表及字段类型

Accesssql语句创建表及字段类型

Accesssql语句创建表及字段类型创建⼀张空表: Sql="Create TABLE [表名]"创建⼀张有字段的表: Sql="Create TABLE [表名]([字段名1] MEMO NOT NULL, [字段名2] MEMO, [字段名3] COUNTER NOT NULL, [字段名4] DATETIME, [字段名5] TEXT(200), [字段名6] TEXT(200))字段类型:2 : "SmallInt", // 整型3 : "Int", // 长整型4 : "Real", // 单精度型5 : "Float", // 双精度型6 : "Money", // 货币7 : "DateTime", // ⽇期时间11 : "Bit", // 是否13 : "TimeStamp",17 : "TinyInt", // 字节72 : "UniqueIdentifier", // 同步复制 ID128 : "Binary",129 : "Char",130 : "NChar",131 : "Decimal", // ⼩数133 : "DateTime",135 : "SmallDateTime",200 : "VarChar",201 : "Text",202 : "VarChar", // ⽂本203 : "Text", // 备注204 : "Binary", // ⼆进制205 : "Image" // OLE 对象以下字段为⽆编码字段(NChar、NVarchar、NText型) 8,128,130,202,203,204,205 以下字段为按当前系统内码编码的字段(Asp中可⽤CodePage=936纠正为gb2312内码) 129,200,201在现有的表中增加字段:Sql="alter table [表名] add column [字段名] varchar(200)"修改字段类型:Sql="alter table [表名] Alter COLUMN 字段名] varchar(50)"删除表:Sql="Drop table [表名]"删除字段:sql="alter table [表名] drop [字段名]"修改字段:Alter TABLE [表名] Alter COLUMN [字段名] 类型(⼤⼩) NULL新建约束:Alter TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= '2007-1-1')删除约束:Alter TABLE [表名] Drop CONSTRAINT 约束名新建默认值:Alter TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT '' FOR [字段名]删除默认值:Alter TABLE [表名] Drop CONSTRAINT 默认值名=======================================conn.open connstr sql="alter table [tablename] add hehe char(20)" conn.execute(sql) response.write("添加成功")ACCESS新建数据库和表还不简单,有了表字段初始化就更简单=======================================<%session("tablen")="news"'news是已存在的表名session("fieldsn")="c"'要添加的字段名connectionstring="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("data/qq.mdb") set conn=server.createobject("adodb.connection")conn.OPEN connectionstringjhsql = " Alter Table "&session("tablen")&" add column "&session("fieldsn")&" real "conn.execute(jhsql)%>================================⽣成数据表,添加字段,其中id字段为⾃动增加,测试通过~~Sub GenAutoIncrementFld()set cn=server.CreateObject("ADODB.Connection")set clx=server.CreateObject("ADOX.Column")set cat=server.CreateObject("ADOX.Catalog")set tblnam=server.CreateObject("ADOX.Table")cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\⽹站制作\asp操作mdb\db\test.mdb" Set cat.ActiveConnection = cn = "Test"clx.ParentCatalog = catclx.Type = 3 = "Id"clx.Properties("AutoIncrement") = truetblnam.Columns.Append clxtblnam.Columns.Append "DataField",130,20cat.Tables.Append tblnamSet clx = NothingSet cat = Nothingcn.CloseSet cn = Nothing End Subcall GenAutoIncrementFld===================================字段类型对应数值''---- DataTypeEnum Values ----Const adEmpty = 0Const adTinyInt = 16Const adSmallInt = 2Const adInteger = 3Const adBigInt = 20Const adUnsignedTinyInt = 17Const adUnsignedSmallInt = 18Const adUnsignedInt = 19Const adUnsignedBigInt = 21Const adSingle = 4Const adDouble = 5Const adCurrency = 6Const adDecimal = 14Const adNumeric = 131Const adBoolean = 11Const adError = 10Const adUserDefined = 132Const adVariant = 12Const adIDispatch = 9Const adIUnknown = 13Const adGUID = 72Const adDate = 7Const adDBDate = 133 Const adDBTime = 134 Const adDBTimeStamp = 135 Const adBSTR = 8Const adChar = 129Const adVarChar = 200 Const adLongVarChar = 201 Const adWChar = 130Const adVarWChar = 202 Const adLongVarWChar = 203 Const adBinary = 128Const adVarBinary = 204 Const adLongVarBinary = 205 Const adChapter = 136 Const adFileTime = 64 Const adPropVariant = 138 Const adVarNumeric = 139 Const adArray = &H2000。

文管二级Access数据库SQL语句详解

文管二级Access数据库SQL语句详解

第一讲上面是Access数据库中所涉及的两个表下面我们介绍Access数据库中用于查询数据的语句:1、SELECT 语句SELECT语句是数据库中使用频率最高的语句,就是我们通常说的查询语句。

其格式如下:SELECT+需要查询的对象+FROM+表名+WHERE+条件。

例1、查询上表中所有男性职工的“工号”“姓名”“部门”和“应发工资”。

SELECT 工号,姓名,部门,应发工资FROM rsda where 性别=”男”注意事项:1):写查询语句时英文部分不区分字母大小写。

2):除汉字外,所有字符标点和数字都必须使用半角英文状态下输入。

3):SELECT查询语句中如果没有条件限制,“WHERE+条件”部分可以省略。

4):需要查询的项目在表中必须存在。

5):如果要输出表中所有项目可以用“*”代替。

例如:查询上表中所有人员的姓名,出生年月及部门SELECT 姓名,出生年月,部门FROM rsda;显示表中的所有信息Select * from rsda;显示表中所有女性职工的信息Select * from rsda where 性别=”女”;要求:查询表中所有“未婚”男性职工的信息。

Select * from rsda where (性别=”男”)and(婚否=no);有两个知识点需要掌握:1):运算符:A、算术运算符:加(+)、减(-)、乘(*)、除(/)、和取模(%)。

算术运算符可以完成对两个表达式的数学运算。

B:赋值运算符:等号(=)C:比较运算符:等于(=)、大于(>)、大于或等于(>=)、小于(<)、小于或等于(<=)、不等于(<>或!=)、不小于(!<)、不大于(!>).D:逻辑运算符:与(and)、或(or)和非(not)。

对于AND运算,只有当运算符两端的表达式的值都为真时,结果才返回真,只要有一股表达式的值为假,结果就是假;对于or 运算,只要运算符两端的表达式的值有一个位真,结果就返回真,只有两个表达式的值都是假,结果才为假;NOT运算是对表达式的值取反。

access数据库开发典型范例

access数据库开发典型范例

access数据库开发典型范例篇一:sql经典案例hai6606_cn | 四级精妙Sql语句(总结以前的所有精华)asc 按升序排列desc 按降序排列下列语句部分是Mssql语句,不可以在access中使用。

SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的 deviceUSE masterEXEC sp_addumpdevice &#39;disk&#39;, &#39;testBack&#39;, &#39;c:\mssql7backup\MyNwind_1.dat&#39; --- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2type2 [not null],..) 根据已有的表(转载于: 池锝范文网:access数据库开发典型范例)创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_olddefinition only5、说明:删除新表drop table tabname6、说明:增加一个列Alter table tabname add column col type注:列增加后将不能删除。

access sql查询操作方法

access sql查询操作方法

access sql查询操作方法Access SQL查询操作方法Access是微软公司开发的一款关系型数据库管理系统,它提供了SQL查询语言的功能,可以帮助用户快速有效地从数据库中检索所需数据。

本文将介绍Access SQL查询的基本操作方法,帮助读者更好地掌握和使用这一功能。

一、基本语法在使用Access SQL查询之前,我们首先需要了解一些基本的语法规则。

SQL查询语言由一系列的关键字、函数、操作符和表达式组成,用于从数据库中检索和过滤数据。

下面是一些常见的语法元素:1. SELECT语句:用于指定要检索的列和表。

2. FROM子句:用于指定要从中检索数据的表。

3. WHERE子句:用于指定检索条件。

4. ORDER BY子句:用于指定返回结果的排序方式。

5. GROUP BY子句:用于将结果按照指定的列进行分组。

6. HAVING子句:用于指定分组后的过滤条件。

二、基本查询1. 检索所有数据要检索表中的所有数据,可以使用如下的SELECT语句:SELECT * FROM 表名;这条语句将返回指定表中的所有列和行。

2. 检索指定列如果只需要检索表中的特定列,可以使用如下的SELECT语句:SELECT 列名1,列名2 FROM 表名;这条语句将只返回指定列的数据。

3. 检索符合条件的数据要检索符合某些条件的数据,可以使用WHERE子句。

例如,要检索年龄大于18岁的学生信息,可以使用如下的SELECT语句:SELECT * FROM 学生表 WHERE 年龄 > 18;这条语句将返回年龄大于18岁的学生的所有信息。

三、进阶查询1. 排序查询结果要按照某个列的值对查询结果进行排序,可以使用ORDER BY子句。

例如,要按照学生的年龄对查询结果进行升序排序,可以使用如下的SELECT语句:SELECT * FROM 学生表 ORDER BY 年龄 ASC;这条语句将返回按照年龄升序排列的学生信息。

《Access2016数据库教程》第5章SQL查询

《Access2016数据库教程》第5章SQL查询
第5章 SQL查询
SQL(Structure Query Language)结构化查询语言
是一种专门针对数据库操作的计算机语言,是关系数据库管 理系统中的标准语言。 SQL查询是使用SQL语句创建的查询。 查询对象本质上是一条SQL语言编写的命令。
SELECT语句
SELECT语句是对关系数据库的表作选择查询的一个命令, 可以返回指定的数据表中的全部或部分满足条件的记录。
Where Year(出生日期)=2001 Or Year(出生日期)=2003
Where Year(出生日期) In(2001,2003)
4.9 SQL查询
【例5-11】查询“学生表”中年龄为18岁的 学生的学号、姓名、政治面貌。
Select 学号, 姓名, 政治面貌 From 学生表
Where Year(Date())-Year(出生日期)=18
然后使用Group By子句按照课程名称进行分组 再计算每个组内包含成绩的平均值、最大值和最小值。
3.SELECT多表连接查询示例
【例5-19】 查询每个学生的学号、姓名和平均成绩 (保留2位小数),查询结果按“平均成绩”降序排序。
Select 学生表.学号, First(学生表.姓名) As 姓名, Round(Avg(成绩),2) As 平均成绩 From 学生表 Inner Join 选课成绩表 On 学生表.学号= 选课成绩表.学号 Group By 学生表.学号 Order By Round(Avg(成绩),2) Desc
先从Where子句的条件筛选出“男”同学,再按照 院系代码进行分组求出平均分,然后按照平均分降 序排序。
5.2.3 多表连接查询
连接就是将其他表中的列字段添加到本表中。连接运 算主要分成内连接和外连接。 内连接是应用最广泛的连接运算,结果只包含两个表 中连接字段相同的记录行,是等值连接。使用Inner Join就可以将两张表内连接在一起。

Access 2010数据库应用:Insert语句

Access 2010数据库应用:Insert语句
6
《Access2010数据库应用》
4
② 部分添加
如果只需要向数据表中插入部分字段的值, 可以将Insert语句写成以下格式:
Insert Into 表名(字段1 , 字段2, …, 字段n ) Values (第1个字段值 , 第2个字段值 , … , 第n个字段值)
5
使用这种形式向数据表中添加新记录时,在 关键字Insert Into后面输入所要添加的数据表名 称,然后在括号中列出将要添加新值序对应地输入所要添加的记录值。
3
Insert语句的格式如下:
① 完全添加
Insert Into 表名 Values (第1个字段值 , 第2个 字段值 , … , 最后一个字段值)
其中,Values后面括号中的字段值必须与数据 表中对应字段所规定的字段类型相符,如果只是对 部分字段赋值,可以用空值NULL替代,否则会出 现错误。
Access2010数据库应用
《Access2010数据库应用》
单元6 应用SQL语句操作 Access数据表
Insert语句
2
《Access2010数据库应用》
在数据库中创建数据表的结构后,可以 向该数据表中添加记录,使用SQL语言中的 Insert语句也可以向数据表中追加新的数据记 录,每次只能添加一条记录。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ACCESS数据库常用SQL语句 SELECT 语句

指示 Microsoft Jet 数据库引擎从数据库返回一组记录信息。 语法 SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]} FROM tableexpression [, ...] [IN externaldatabase] [WHERE... ] [GROUP BY... ] [HAVING... ] [ORDER BY... ] [WITH OWNERACCESS OPTION]

SELECT 语句包含以下部分: 部分 说明 predicate 这些谓词之一:ALL、DISTINCT、DISTINCTROW 或 TOP。可以使用谓词来限定返回记录的数量。如果没有指定谓词,默认值为 ALL。 * 指定选择所指定的表的所有字段。 table 表的名称,该表包含了其记录被选择的字段。

field1,field2 字段名,这些字段包含了要检索的数据。如果包括多个字段,将按它们的排列顺序对其进行检索。 alias1, alias2 用作列标题的名称,不是 table 中的原始列名。 tableexpression 其中包含要检索的数据的表的名称。

externaldatabase 如果 tableexpression 中的表不在当前数据库中,则使用该参数指定该数据库名。

说明 若要执行此项操作,Microsoft® Jet 数据库引擎会搜索指定的表,并提取出选定的列,再选择出符合条件的列,然后按指定的顺序对得到的行进行排序或分组。

SELECT 语句不会更改数据库中的数据。 SELECT 通常是 SQL 语句中的第一个词。大多数 SQL 语句是 SELECT 或 SELECT...INTO 语句。 SELECT 语句最简化的语法为: SELECT fields FROM table 可以通过星号 (*) 来选择表中所有的字段。以下的示例选择在 Employees 表中的所有字段:

SELECT * FROM Employees; 如果一个字段名包括于 FROM 子句内的多个表中,请在该字段前面加上表名和 .(圆点)号。在下面的示例中,Department 字段同时存在于 Employees 表和 Supervisors 表中。SQL 语句从 Employees 表中选择出部门并从 Supervisors 表中选择出主管名:

SELECT Employees.Department, Supervisors.SupvName FROM Employees INNER JOIN Supervisors WHERE Employees.Department = Supervisors.Department; 创建 Recordset 对象时,Microsoft Jet 数据库引擎将使用表的字段名作为 Recordset 对象中的 Field 对象名。如果需要一个不同的字段名或者名称不适合用来生成该字段的表达式,请使用 AS 保留字。下面的示例使用标题 Birth 来命名在所得到的 Recordset 对象中的返回 Field 对象:

SELECT BirthDate AS Birth FROM Employees; 只要使用的聚合函数或查询返回的是不明确的或重复的 Field 对象名称,就必须使用 AS 子句为该 Field 对象另外提供一个替代名称。下面的示例使用标题 HeadCount 来命名在结果 Recordset 对象中的返回 Field 对象:

SELECT COUNT(EmployeeID) AS HeadCount FROM Employees; 可以在 SELECT 语句中使用其他子句进一步约束和组织所返回的数据。有关详细信息,请参阅相应子句的帮助主题。

请参阅 ALL DISTINCT、DISTINCTROW、TOP 谓词 ORDER BY 子句 (Microsoft Jet SQL) DELETE 语句 SELECT...INTO 语句 FROM 子句 SQL 聚合函数 GROUP BY 子句 UNION 操作 HAVING 子句 UPDATE 语句 IN 子句 WHERE 子句 INSERT INTO 语句 WITH OWNERACCESS OPTION 声明

ALL、DISTINCT、DISTINCTROW、TOP 谓词

指定使用 SQL 查询选择的记录。 语法 SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]] FROM table

一个包含这些谓词的 SELECT 语句具有以下部分: 部分 说明

ALL 作为不包括谓词处理。Microsoft Jet 数据库引擎会选择符合 SQL 语句中的条件的所有记录。以下两个示例是等价的,它们都返回 Employees 表中的所有记录: SELECT ALL * FROM Employees ORDER BY EmployeeID;

SELECT * FROM Employees ORDER BY EmployeeID;

DISTINCT 忽略在选定字段中包含重复数据的记录。若要包括在查询的结果中,在 SELECT 语句中所列出的每个字段的值必须是唯一的。例如,Employees 表中列出的一些雇员可能有相同的名字 (LastName)。如果在 LastName 字段中有两个包含 Smith 的记录,则下面的 SQL 语句只返回一个包含 Smith 的记录:

SELECT DISTINCT LastName FROM Employees;

如果忽略了 DISTINCT,这个查询将返回两个 Smith 记录。 如果 SELECT 子句包含多个字段,若要在结果中包含给定的记录,那么所有字段的值的组合必须是唯一的。 使用 DISTINCT 查询的输出结果是不可更新的,它不会影响其他用户所做的后续更改。

DISTINCTROW 忽略整个重复记录的数据,而不仅仅是重复的字段。例如,创建一个联接顾客表和订单表的 CustomerID 字段的查询。顾客表不包含重复的 CustomerID 字段,但是订单表包含重复的 CustomerID 字段,因为每一个顾客可以有多个订单。下面的 SQL 语句显示了如何使用 DISTINCTROW 产生一个至少有一个订单但没有这些订单任何细节的公司列表:

SELECT DISTINCTROW CompanyName FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY CompanyName;

如果忽略了 DISTINCTROW,对于每个有多个订单的公司这个查询语句将得到多个行。

DISTINCTROW 仅在选择的字段源于查询中所使用的表的一部分而不是全部时才会生效。如果查询仅包含一个表或者要从所有的表中输出字段,DISTINCTROW 就会被忽略。

TOP n [PERCENT]

返回出现在由 ORDER BY 子句指定的起始和结束范围内的一定数量的记录。假定希望得到 1994 年级中前 25 名学生的名字:

SELECT TOP 25 FirstName, LastName FROM Students WHERE GraduationYear = 1994 ORDER BY GradePointAverage DESC;

如果没有包含 ORDER BY 子句,查询将会从 Students 表中返回一个满足 WHERE 子句的包含 25 个记录的任意集合。

TOP 谓词不会在两个相等的值中进行选择。在上面的示例中,如果第 25 和第 26 名的年级平均分相同,那么查询将会返回 26 个记录。

也可以使用 PERCENT 保留字返回出现在 ORDER BY 子句指定的起始和结束范围内的某个百分比数量的记录。假如,您希望返回该年级中最后名次的百分之十个学生,而不是前 25 名学生:

SELECT TOP 10 PERCENT FirstName, LastName FROM Students WHERE GraduationYear = 1994 ORDER BY GradePointAverage ASC;

ASC 谓词指定返回最小值。TOP 之后的值必须是一个无符号整数。 TOP 谓词不影响查询是否可更新。 table 从中检索记录的表名。

FROM 子句 指定其中包含 SELECT 语句中所列字段的表或查询。 语法 SELECT fieldlist FROM tableexpression [IN externaldatabase]

包含 FROM 子句的 SELECT 语句具有以下部分: 部分 说明 fieldlist 要检索的字段的名称以及任何字段名别名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项。

tableexpression 用来标识从中检索数据的一个或多个表的表达式。该表达式可以是单个表名、保存的查询名、或者是 INNER JOIN、LEFT JOIN 或者 RIGHT JOIN 产生的结果。

externaldatabase 包含 tableexpression 中的所有表的外部数据库的完整路径。

说明 FROM 是必需的,并且在任何 SELECT 语句后面。 在 tableexpression 中表名称的顺序无关紧要。 为了提高性能和便于使用,建议您使用链接表而不是 IN 子句来从外部数据库中检索数据。

下例展示了怎样从 Employees 表中检索数据: SELECT LastName, FirstName

相关文档
最新文档