一、数据库的建立
一、建立数据库
在Access中建立名为自己名字的数据库(不能是汉字),比如:NewsData
二、建立表
在zgdx数据库里建立新闻栏目表名字为lanmu,新闻表名字news
文章栏目表lanmu中各字段说明
字段名 | 数据类型 | 字段大小 | 是否主键 | 默认值 | 说明 |
lanmuId | 自动编号 | 长整型 | 是 | 无 | 文章栏目Id号 |
lmName | 文本 | 50 | 否 | 无 | 栏目名称 |
新闻表news中各字段说明
字段名 | 数据类型 | 字段大小 | 是否主键 | 默认值 | 说明 |
id | 自动编号 | 长整型 | 是 | 无 | 新闻唯一编号 |
lanmuId | 数字 | 长整型 | 否 | 无 | 栏目Id号 |
title | 文本 | 50 | 否 | 无 | 新闻标题50 |
name | 文本 | 20 | 否 | 无 | 新闻作者 |
content | 备注 |
| 否 | 无 | 新闻内容 |
click | 数字 | 长整型 | 否 | 0 | 新闻阅读次数 |
writedate | 日期/时间 | 长日期 | 否 | Date() | 新闻书写日期 |
三、建立表间关系。
对栏目表和新闻表,建立一对多的关系,并且建立级联更新相关字段,级联删除相关字段
二、基本SQL语句的语法
一、查询记录
基本语法:Select 字段名 from 表名 where 条件
1、 查询结果,显示所有字段。用*代表所有
示例1:从news表中选择所有新闻
select * from news
2、 查询结果,显示指定字段。多个字段用逗号隔开
示例1:从news表中选择所有新闻,但只显示title,name,content字段
select title,name,content from news
3、 在where后指定查询条件。条件运算符有=、<、>、>=、<=、<>。逻辑运算符not and or
示例1:从news表显示id号等于3的新闻
select * from news where id=3
示例2:从news表显示热点文章(提示:点击次数大于10的都是热点文章)
select * from news where click>10
示例3:从news表显示2007年1月1日之后的文章(提示:cdate()函数把字符串类型转换为日期类型,在SQL语句中单引号括起来的为字符串)
select * from news where writedate>cdate('2007年1月1日')
示例4:从news表显示2007年1月1日之后的热点文章
select * from news where click>10 and writedate>cdate('2007年1月1日')
示例5:从news表,显示出名字为“张美丽”发表的所有文章
select * from news where name='张美丽'
4、 利用like运算符,
* 任意长度的字符;(注:在SQL Server中用%)
?表示任何一个单一的字符;
示例1:从news表中,搜索标题(字段名为title)中含有“ASP.NET”的所有文章
select * from news where title like '*ASP.NET*'
示例2:从news表中,搜索内容(字段名为content)中含有“ASP.NET”的所有文章
select * from news where content like '*ASP.NET*'
示例3:从news表中,查找作者姓“李”的所有人发表的文章
select * from news where name like '李*'
示例4:从news表中,查找作者姓“李”的,名字为两个字所有人发表的文章
select * from news where name like '李?'
5、 对查询的记录进行排序。
语法:Select 字段名 from 表名 order by 字段名 desc或asc
desc表示降序,asc表示升序
示例1:从news表中的显示所有文章,按书写时间(字段名为writedate)进行降序排列
select * from news order by writedate desc
示例1:从news表中的热点文章,按点击次数(字段名为click)进行降序排列
select * from news where click>10 order by click desc
6、 对查询记录返回指定行数。
语法:Select top 数字 字段 from 表名……
示例1:从news表中的显示前6条最新新闻
select top 6 * from news order by writedate desc
7、 常用函数
SUM ( ) 求和
AVG ( ) 平均值
COUNT (* ) 计算记录的数目
MAX 最大值
MIN 最小值
示例1:从news表中,显示总共有多少条新闻
select count(*) from news
示例2:从news表中,显示点击率最高的新闻
select max(click) from news
8、 多表查询
语法:select 表1.字段,表2.字段 from 表1,表2 where 表1.主键=表2.外键
示例1:从栏目表lanmu中的栏目,和每个栏目对应的新闻
select lanmu.*,news.* from lanmu,news where lanmu.lanmuId=news.lanmuId
9、 内连接进行多表查询
语法:select 表1.字段,表2.字段 from 表1 inner join 表2
on 表1.主键=表2.外键
示例1:从栏目表lanmu中的栏目,和每个栏目对应的新闻
select lanmu.*,news.* from lanmu inner join news on lanmu.lanmuId=news.lanmuId
二、增加记录
基本语法:insert into 表名 (字段1,字段2,……) values (数据1,数据2,……)
示例1:在表news中,增加一条新闻,要求:
栏目:为国际新闻lanmuId为2,
标题:“如何生成炎症码?”
作者:王五
内容:“利用Random类中的随机函数就可以.”
insert into news (lanmuId,title,name,content)
values (2,'如何生成炎症码?','王五','利用Random类中的随机函数就可以.')
三、更新记录
基本语法:update表名set字段1=数据1, 字段2=数据2…… where 条件
示例1:在表news中,更新id等于9的一条新闻,要求:
栏目更新为:国内新闻lanmuId为1,
标题更新为:“如何生成验证码?”
作者更新为:王老二
update news set lanmuId=1,title='如何生成验证码?',name='王老二' where id=9
四、删除记录
基本语法:delete from 表名 where 条件
示例1:在表news中,删除id等于9的一条新闻
delete from news where id=9