资源描述
ACCESS( 基础知识点 SQL 编程 )
数据库基础知识
基本概念:选择题、填空题。数据、信息、处理。
数据处理技术发展:人工、文件、数据库。
数据库系统:含数据库、管理系统、应用系统、计算机、人(管理员)。
数据模型:层次、网状、关系。
关系模型概念:实体、属性、域、主键、联系、实体完整性、参照完整性。
数据表:结构、记录(元组)。
关系:实体间联系—表,E-R模型,规范化:第1-5范式
关系运算:选择、投影、连接。集合的并、交、差、积。
联系:1:1一对一 ,1:m一对多, 多对多m:n
创建数据库
表:结构、记录。视图:表设计、数据表。多种方式建表:设计器、字段模板、网站、导入。
表结构:描述表的属性。记录:数据、内容。
字段名:列的名称。 实体的属性。
字段大小:数据位数-列的宽度。
格式:>强制大写, <强制小,@占位符,如短日期。小数位数。精度。数值范围。
掩码:0-数字,9数字空格,#,L-必字母,?-可字母,A-必字母数字, a-可字母数字,&-必任1字符,C-可任1字符。见表2-5。
标题:窗体的标签。
默认值:自动填充初始值。
有效性规则:必须满足的条件。表的有效性(记录有效性)
有效性文本:违反有效性规则,弹出对话框上的“文字”。
必填字段:选择是/否。
索 引:加快搜索、查询的速度。重复/不重复。主键。
查阅属性:
查询/SQL
SQL(Structured Query Language)结构化查询语言。提供交互工具“查询设计器”。
1. 选择查询 2. 参数查询 3. 交叉查询
4. 操作查询 1.) 删除查询 2.)更新查询 3.)追加查询 4.)生成查询
筛选条件:比较运算符、 like 、in、 between…and
多表查询:连接,join …. On 左/右/内/全—连接。
嵌套查询:in /not in 。
Union :查询结果并。
3.3 查询语句Select
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]]
[Alias.] Select_Item [AS]Column_Name]
[, [Alias.] Select_Item [As Column_Name] ...]
FROM [FORCE]
Table [AS Local_Alias]
[[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN
DatabaseName!]Table [[AS] Local_Alias]
[ON JoinCondition …]
[[INTO Destination]
| [TO [ADDITIVE] | TO PRINTER [PROMPT]
| TO SCREEN]]
[PREFERENCE PreferenceName]
[NOCONSOLE]
[PLAIN]
[NOWAIT]
[WHERE JoinCondition [AND JoinCondition ...]
[AND | OR FilterCondition [AND | OR FilterCondition ...]]]
[GROUP BY GroupColumn [, GroupColumn ...]]
[HAVING FilterCondition]
[UNION [ALL] SELECTCommand]
[ORDER BY Order_Item [ASC | DESC] [, Order_Item [ASC | DESC] ...]]
模块与VBA编程
变量:类型、定义、赋值、常数。
表达式:把变量(常量/函数)用“运算符”联接成有意义(能计算的)式子。
算术、字符、日期、关系、逻辑—运算符—表达式。书写规则。
函数:常用内部函数:数值、字符、日期、类型转换。
输入:inputbox(提示[,标题][,默认值][,X坐标][,Y坐标])
输出: MsgBox(<提示信息>[,类型[,对话框标题]])
三大程序结构:顺序、选择、循环结构。
选择结构:对给定的条件进行分析、比较和判断,根据结果采取不同的操作。让计算机具有智能性。
“选择结构”或称“分支结构”
if <条件> then…else ….endcase
select case ….case ……endcase
循环结构也称重复结构,是按照给定的条件,重复执行程序段(语句组)。
Do While … [exit ]…. Loop
For i=初值 to 终值[step] …. [exit]….Next
数组:一组变量用统一名称表示。定义,使用:数组(下标)
过程函数: 定义、调用。参数:形参、虚参、实参,数值传递,地址传递。
窗体
窗体:程序界面窗口。由可视化对象作成。
类型:纵栏式、表格式、数据表、主\子窗体、图表、透视表、透视图、导航、分割窗体。
创建窗体:窗体:快速所有字段窗体
窗体设计:设计视图
空白窗体:用布局视图设计窗体。
窗体向导:通过向导设计纵栏式等窗体
导航:创建具有导航按钮6种布局窗体。
其他窗体:创建多个项目、分割窗体、模式对话框、透视图、透视表等6种窗体。
工具箱:画对象、属性窗口。
对象:数据与代码的集合。即属性事件、方法
代码窗口:如何操作对象,文本框输入输出、列表框输出(list0.additem 数据)
窗体结构:主体、窗体页眉、页面页眉、页面页脚、窗体页脚。
设计视图:视图、主题、控件、页眉/脚、工具5个组。
排列:堆积、表格。表、行列、合并、移动、位置、调整大小6个组
格式:所选内容、字体、数字、背景、格式5个组。
对象:标签、文本框、列表框、组合框、命令按扭、选项按扭、复选框、图象等对象的属性与应用。
报表
设计“表/查询”的打印格式,只能输出的格式化窗体。
类型:纵栏式、表格式、图表、标签。
报表设计器组成:区域:报表页眉、页面页眉、组页眉、主体….有7个区。
数据源:表、查询、SQL语句。
分组:“排序分组”窗格,可有多级分组。
汇总:页脚区汇总项:总计、平均、最大, =sum( ) 、=avg( )等
标签:可多栏打印的小的标签报表。
视图:预览/打印、设计、报表视图。
宏
宏:可以完成人工复杂的手写代码。一般在“命令按钮”运行宏取代手写“代码”。
宏操作:窗口、宏命令、数据库对象、系统命令、用户界面命令等分类。
独立宏和嵌入的宏。
宏设计窗格:应用。注释Comment 。分组(块) Group。
条件宏: 根据条件控制其中的那些宏操作执行。 最多可以嵌套10级
子宏:一个宏中可以定义多个子宏,每个子宏都能被单独调用执行并完成一个任务。
运行:命令按钮调用、自动运行的宏AutoExec。
选择题 ( 30题30分)
基本概念 。复习第一章内容,关系、 实体、域、 记录、属性(字段)….
数据库:表的属性,有效性。
编程基础:变量、表达式。
程序结构:分支、循环、顺序。三大序结构。
窗体:概念、布局、分类。
SQL:选择正确的语句。
其他:宏、报表等覆盖所有章节。
概念填空( 10 题10分)
数据库的6个对象是表、查询、窗体、报表、宏和模块。
与选择题范围相同,填写答案。
填写基本概念:
数据库基本概念:关系、参照完整性、主关键字….
查询设计器、窗体、报表、宏的基本概念、组成、分类。
程序填空(10个空20分)
把程序空出关键词。
DO ____ I<100
___ MOD(I,2)=1
…..
ENDIF
loop
完善SQL语句。
书写正确的表达式。
1.作业3中SQL命令。
图书 交叉表(作者 出版社)
TRANSFORM Count(图书.[书名]) AS 书名之计数
SELECT 图书.[作者], Count(图书.[书名]) AS 总数
FROM 图书
GROUP BY 图书.[作者]
PIVOT 图书.[出版社];
三个表查询
SELECT 图书类别.类别名称, 图书.图书编号, 图书.书名, 借阅.借书证号, 借阅.借阅日期
FROM 图书类别 INNER JOIN (借阅 INNER JOIN 图书 ON 借阅.图书编号 = 图书.图书编号) ON 图书类别.类别号 = 图书.类别号
ORDER BY 图书类别.类别名称, 图书.图书编号 DESC , 图书.书名 DESC;
查询 价格 降序
SELECT 图书.*, 图书.价格
FROM 图书
ORDER BY 图书.价格 DESC;
查询图书所有信息
SELECT 图书.序号, 图书.图书编号, 图书.类别号, 图书.书名, 图书.作者, 图书.出版社, 图书.出版日期, 图书.价格, 图书.在馆否, 图书.简介, 图书.封面照
FROM 图书;
查询价格 10-25
SELECT 图书.*, 图书.价格
FROM 图书
WHERE (((图书.价格) Between 10 And 25));
查询清华 经济
SELECT 图书.*, 图书.出版社
FROM 图书
WHERE (((图书.出版社) Like "*经济*" Or (图书.出版社) Like "*清华*"));
类别 统计图书册数
SELECT 图书.类别号, Count(图书类别.类别号) AS 类别号之计数1
FROM 图书类别 INNER JOIN 图书 ON 图书类别.类别号 = 图书.类别号
GROUP BY 图书.类别号;
输入作者姓名
:参数查询
2.按出版社统计册数,平均价格,册数在2以上。
select 出版社,count(*) as 统计册数, avg(价格) as 平均价格
from 图书
group by 出版社
having count(*)>2
3. 检索“类别号, 类别名称,图书编号, 书名, 作者,借书证号”,分别用where、join 联接书写。
SELECT 图书.类别号, 类别名称, 图书.图书编号, 书名, 作者, 借书证号
FROM 图书, 图书类别, 借阅
WHERE 图书类别.类别号=图书.类别号 and 借阅.图书编号=图书.图书编号
SELECT 图书类别.类别号, 类别名称, 图书.图书编号, 书名, 作者, 借书证号
FROM (图书类别 INNER JOIN 图书 ON 图书.类别号=图书类别.类别号) INNER JOIN 借阅 ON 图书.图书编号=借阅.图书编号;
4. 查询“出版社”出版的所有书全都大于20.0(该出版社未有小于20元的书,同评三好学生条件)。
SELECT *
FROM 图书
WHERE 价格 >20;
5.更新查询、追加查询、删除查询。(可直接在查询里生成后变成SQL视图)
UPDATE 借阅 SET 借阅.借阅日期 = [借阅日期]+10;
INSERT INTO 图书 ( 出版社 )
SELECT 图书.出版社
FROM 图书
WHERE (((图书.出版社)="清华"));
DELETE 图书.作者
FROM 图书
WHERE (((图书.作者)="李辉"));
update 图书
set 价格=价格*0.9
where 出版日期=#1989-10-1#
insert into 图书表2(书名, 作者)
select 图书(书名, 作者)
from 图书(由于两个表的格式不一样,所以未能追加)
6. 用命令建立“图书2”表table,修改字段,删除该表。
创建:
create table 图书2(序号 char (12),图书编号 char(12),类别号 char(1),书名 char(8),作者 char(3),出版社 char(10),出版日期 date,价格 money,在馆否 char(2),简介 char(12),封面照 char(50) )
增加“读者评价”
alter table 图书2 add 读者评价 memo
删除:
drop table 图书2
'编写求解一元二次方程根。
'2. 从键盘输入一串字母,大写输出。
'3. 输入三角形的边长a,b,c,计算面积s。
'4. 显示今天的日期,显示今天是“星期x”。计算到2014年元旦还有几天。
'5. 输入金额,计算最佳付款方式(张数最少
Sub m_1()
Dim a As String
a = InputBox("请输入字母")
MsgBox UCase(a)
End Sub
Sub m_2()
Dim a As Single, b As Single, c As Single, p As Single, s As Single
a = Val(InputBox("请输入三角形第1条边长"))
b = Val(InputBox("请输入三角形第2条边长"))
c = Val(InputBox("请输入三角形第3条边长"))
s = (a + b + c) / 2
area = Sqr(s * (s - a) * (s - b) * (s - c))
MsgBox "面积为" & area
End Sub
Sub m_3()
Dim a As Double, b As Double, c As Double
Dim x1 As Double, x2 As Double
a = InputBox("输入系数A:")
b = InputBox("输入系数B:")
c = InputBox("输入系数C:")
x1 = (-b + Sqr(b * b - 4 * a * c)) / (2 * a)
x2 = (-b - Sqr(b * b - 4 * a * c)) / (2 * a)
MsgBox ("方程的根x1是" & x1)
MsgBox ("方程的根x2是" & Str(x2))
End Sub
Sub m_41()
InputBox ("当前日期是星期几")
MsgBox "今天是星期" & (Weekday(Date - 1))
End Sub
Sub m_42()
InputBox ("今天距2014年元旦还有?天")
MsgBox (DateDiff("y", #10/30/2013#, #1/1/2014#))
End Sub
Sub m_5()
x = InputBox("请输入金额")
a = x \ 100
b = (x - 100 * a) \ 50
c = (x - 100 * a - 50 * b) \ 20
d = (x - 100 * a - 50 * b - 20 * c) \ 10
e = (x - 100 * a - 50 * b - 20 * c - 10 * d) \ 5
F = (x - 100 * a - 50 * b - 20 * c - 10 * d - 5 * e) \ 2
g = (x - 100 * a - 50 * b - 20 * c - 10 * d - 5 * e - 2 * F) \ 1
MsgBox "100元需" & a & ("张") & "50元需" & b & ("张") & "20元需" & c & ("张") & "10元需" & d & ("张") & "5元需" & e & ("张") & "2元需" & F & ("张") & "1元需" & g & ("张")
End Sub
Option Compare Database
'. 产生两个1-100的随机数,口算两个的数的和。
'2. 三个数据的排序。
'3. 输入收入总金额,计算个人所得税。
'4.输入整数,判断是否“质数”。
'5.输入年份,判断是否“闰年”。
'6.求解一元二次方程,当无解显示信息不要出错!
Sub m6_1()
Dim a As Byte, b As Byte, c As Byte
a = Rnd() * 90 + 10
b = Rnd() * 90 + 10
c = InputBox("请输入" + Str(a) + "+" + Str(b) + "=")
If a + b = c Then
MsgBox "您答对了", 48, "正确"
Else
MsgBox "您答错了,正确答案是" + (Str(a + b))
End If
End Sub
Sub m6_2()
Dim a%, b%, c%, x%, y%, z%
a = InputBox("输入A=")
b = InputBox("输入B=")
c = InputBox("输入C=")
If a < b Then
If c < a Then
x = c
y = a
z = b
Else
If c < b Then
x = a
y = c
z = b
Else
x = a
y = b
z = c
End If
End If
End If
If b < a Then
If c < b Then
x = c
y = b
z = a
Else
If c < a Then
x = b
y = c
z = a
Else
x = b
y = a
z = c
End If
End If
End If
MsgBox "结果是" + Str(z) + ">=" + Str(y) + ">=" + Str(x)
End Sub
Sub m6_3()
Dim m As Integer, n As Integer
m = InputBox("请输入收入金额")
m = m - 3500
If m < 0 Then
n = 0
Else
If m <= 1500 Then
n = m * 0.03
Else
If m <= 4500 Then
n = 1500 * 0.03 + (m - 1500) * 0.1
Else
If m <= 9000 Then
n = 1500 * 0.03 + 3000 * 0.1 + (m - 4500) * 0.2
Else
n = 1500 * 0.03 + 3000 * 0.1 + 4500 * 0.2 + (m - 9000) * 0.3
End If
End If
End If
End If
MsgBox "应缴纳税金" & n & ("元")
End Sub
Sub m6_4()
Dim i As Integer, n As Integer
n = Val(InputBox("请输入数字"))
i = 2
c = Int(Sqr(n))
Do While i <= c
If n Mod i = 0 Then Exit Do
i = i + 1 '在For以外的
Loop
If i > c Then
MsgBox n & "是素数"
Else
MsgBox n & "不是素数"
End If
End Sub
Sub m6_5()
a = InputBox("请输入年份的数字")
If (a Mod 4 = 0 And a Mod 100 <> 0) Or (a Mod 400 = 0) Then
MsgBox "闰年"
Else
MsgBox "非闰年"
End If
End Sub
Sub m6_6()
Dim a, b, c As Double
Dim x1 As String, x2 As String
a = InputBox("请输入一元二次方程的系数a")
b = InputBox("请输入一元二次方程的系数b")
c = InputBox("请输入一元二次方程的系数c")
If a = 0 Then
x1 = -c / b
x2 = "非一元二次方程,仅有一解"
MsgBox ("系数为" + a & b & c + "的一元二次方程的根分别为" & x1)
MsgBox ("系数为" + a & b & c + "的一元二次方程的根分别为" & x2)
Else
If b ^ 2 - 4 * a * c >= 0 Then
x1 = (-b + Sqr(b ^ 2 - 4 * a * c)) / (2 * a)
x2 = (-b - Sqr(b ^ 2 - 4 * a * c)) / (2 * a)
MsgBox ("系数为" + a & b & c + "的一元二次方程的根分别为" & x1)
MsgBox ("系数为" + a & b & c + "的一元二次方程的根分别为" & x2)
Else
x1 = Str((-b) / (2 * a)) & "+" & Str(Sqr(4 * a * c - b ^ 2) / (2 * a)) & "i"
x2 = Str((-b) / (2 * a)) & "-" & Str(Sqr(4 * a * c - b ^ 2) / (2 * a)) & "i"
MsgBox "此方程在实数范围内无解"
End If
End If
End Sub
Option Compare Database
Option Compare Binary
'1. 找出1-N(输入)的所有质数。
'2.输出2000年-4000年的“闰年” 年份。
'3. 打印九九表。
'4. 输入一行字符,统计大写字母、小写字母、数字、和其他字符的个数。
'5. 计算两个数的最大公约数。
'6. 找出1-1000的水仙花数。如三位数abc,若abc=a3+b3+c3,叫水仙花数
Sub m_1()
Dim n As Integer, i As Integer, j As Integer
Dim b As Boolean
n = InputBox("输入", "输入你要确定的整数")
For i = 2 To n
b = True
For j = 2 To i - 1
If i Mod j = 0 Then
b = False
End If
Next j
If b Then '不用写其他的运算符
Debug.Print i
End If
Next i
End Sub
Sub m2_()
Dim i As Integer
i = InputBox("请输入2000年至2400年的任一年份")
For i = 2000 To 2400 'if(i%4==0 && i%100!=0 || i%400==0)
'如果 i除以4的余数等于0 并且 i除以100的余数不等于0 或者 i除以400的余数等于0 条件成立
If (i Mod 4 = 0 And i Mod 100 <> 0) Or i Mod 400 = 0 Then
Debug.Print i; " "; '引号和分号
b = b + 1 'b在前面没有定义
If b Mod 10 = 0 Then Debug.Print i
End If
Next i
End Sub
Sub m九九表7_3()
Dim i%, j%
For i = 1 To 9
For j = 1 To i
Debug.Print CStr(i) + "x" + CStr(j) + "="; i * j;
Next
Debug.Print
Next
End Sub
Sub m7_41()
Dim a As Integer, b As Integer, c As Integer, d As Integer, m As String, L As Integer
m = InputBox("请输入一串字符:")
L = Len(m)
For i = 1 To L
m = Mid(m, 1, L)
Select Case m
Case "A" To "Z"
a = a + 1
Case "a" To "z"
b = b + 1
Case "0" To "9"
c = c + 1
Case Else
d = d + 1 'cstr (len(m))是计算所有输入的个数 'cstr是指转换成字符串,字符前不需空一格
End Select
Next i
MsgBox m & "字符个数是:" & CStr(Len(m)) & Chr(13) & Chr(10) & "大写字符个数是:" & a & "小写字符个数是:" & b & "数字字符个数是:" & c & "其他字符个数是:" & d
End Sub
Sub m7_5()
Dim m As Integer
Dim n As Integer
Dim r As Integer
Dim a As Integer, b As Integer
m = InputBox("请输入其中的一个正整数")
n = InputBox("请输入另一个正整数")
a = m
b = n
r = a Mod b
Do While r <> 0 '循环语句 r不等于0
a = b
b = r
r = a Mod b
Loop
Debug.Print m; "与"; n; "这两个正整数的最大公约数为:"; b
End Sub
Sub m7_6()
Dim i As Integer, s As Integer
Dim a As Integer, b As Integer, c As Integer
Debug.Print "1到1000所有水仙花数:";
For i = 1 To 1000
a = i \ 100 '取百位数
b = i \ 10 Mod 10 '或 b = i Mod 100 \10 取十位数
c = i Mod 10 '取个位数
s = a ^ 3 + b ^ 3 + c ^ 3 '水仙花数的判断依据
If s = i Then
Debug.Print i;
End If
Next i '1到1000所有水仙花数:1 153 370 371 407 1000
End Sub
'1. 用过程调用,计算圆的面积。
'2.用函数返回值,计算圆的面积。
'3. 用过程方法,计算3个数的最大公约数。
'4.用函数方法,计算3个数的最大公约数。
'5.计算组合数.若m=23,n=5,从23个数中选5个彩票总数量。
'6. 随机生成20个数,排序
Sub m8_1()
Dim r As Double, s As Double
r = InputBox("请输入圆的半径r")
s = 3.14 * (r ^ 2)
Debug.Print s
End Sub
Sub m8_11()
Call m8_1
End Sub
Function m8_12()
Dim x As Double
x = InputBox("请输入圆的半径r")
MsgBox "半径为" & x & "圆的面积为:" & m8_13(x)
End Function
Function m8_13(r As Double) As Double
Dim s As Double
s = 3.14 * r ^ 2
m8_13 = s
End Function
Sub m7_5() '最大公约数
Dim m As Integer
Dim n As Integer
Dim r As Integer
Dim a As Integer, b As Integer
m = InputBox("请输入其中的一个正整数")
n = InputBox("请输入另一个正整数")
a = m
b = n
r = a Mod b
Do While r <> 0 '循环语句 r不等于0
a = b
b = r
r = a Mod b
Loop
Debug.Print m; "与"; n; "这两个正整数的最大公约数为:"; b
End Sub
Sub m8_6()
Dim i As Integer, x(20) As Integer, t As Integer
Randomize Timer
For i = 1 To 20
x(i) = 10 + Int(89 * Rnd)
Debug.Print x(i),
Next
Debug.Print
For i = 1 To 19
For j = i + 1 To 20
If x(i) < x(j) Then
t = x(j)
x(j) = x(i)
x(i) = t
End If
Next
Next
For i = 1 To 20
Debug.Print x(i),
Next
End Sub
30 / 30
展开阅读全文