数据库SQL操作语句Word格式文档下载.docx
《数据库SQL操作语句Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库SQL操作语句Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。
![数据库SQL操作语句Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/a5fad418-5a6f-435d-9f68-b45cd7d2e20f/a5fad418-5a6f-435d-9f68-b45cd7d2e20f1.gif)
activedatetimedefaultnow(),"
osvarchar(15),"
Browservarchar(15),"
hideintegerdefault0,"
strwherevarchar(30),"
primarykey(ip))"
objconn.execute(strsql)
DropTABLE数据表名称(永久性删除一个数据表)
(6)更改表格:
AlterTABLEtable_nameADDCOLUMNcolumn_nameDATATYPE说明:
增加一个栏位(没有删除某个栏位的语法)。
AlterTABLEdistributorsADDCOLUMNaddressVARCHAR(30);
向表中增加一个VARCHAR列
altertablememberaddcolumnintdefault0增加一个长整形的列,默认值为0
bit代表"
是否"
类型
对现存列改名:
AlterTABLEdistributorsRENAMECOLUMNaddressTOcity;
对现存表改名:
AlterTABLEdistributorsRENAMETOsuppliers;
更改列类型:
AlterTABLEtable_nameMODIFYcolumn_namedatatype
AlterTABLEtable_nameCHANGEcolumn_namenew_column_namedatatypeCHANGE还可以一起改列名
AlterTABLEtable_nameADDPRIMARYKEY(column_name)说明:
更改表得的定义把某个栏位设为主键。
AlterTABLEtable_nameDropPRIMARYKEY(column_name)说明:
把主键的定义删除。
(7)、建立索引:
CreateINDEXindex_nameONtable_name(column_name)说明:
对某个表格的栏位建立索引以增加查询时的速度。
(8)数据记录统计函数:
AVG(字段名)得出一个表格栏平均值
COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名)取得一个表格栏最大的值
MIN(字段名)取得一个表格栏最小的值
SUM(字段名)把数据栏的值相加
引用以上函数的方法:
sql="
selectsum(字段名)as别名from数据表where条件表达式"
setrs=conn.excute(sql)
用rs("
别名"
)获取统的计值,其它函数运用同上。
(9)记录集对象的方法:
rs.movenext将记录指针从当前的位置向下移一行
rs.moveprevious将记录指针从当前的位置向上移一行
rs.movefirst将记录指针移到数据表第一行
rs.movelast将记录指针移到数据表最后一行
rs.absoluteposition=N将记录指针移到数据表第N行
rs.absolutepage=N将记录指针移到第N页的第一行
rs.pagesize=N设置每页为N条记录
rs.pagecount根据pagesize的设置返回总页数
rs.recordcount返回记录总数
rs.bof返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete删除当前记录,但记录指针不会向下移动
rs.addnew添加记录到数据表末端
rs.update更新数据表记录
smallint16位元的整数。
interger32位元的整数。
decimal(p,s)p精确值和s大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。
如果没有特别指定,则系统会设为p=5;
s=0。
float32位元的实数。
double64位元的实数。
char(n)n长度的字串,n不能超过254。
varchar(n)长度不固定且其最大长度为n的字串,n不能超过4000。
graphic(n)和char(n)一样,不过其单位是两个字元double-bytes,n不能超过127。
这个形态是为了支援两个字元长度的字体,例如中文字。
vargraphic(n)可变长度且其最大长度为n的双字元字串,n不能超过2000。
date包含了年份、月份、日期。
time包含了小时、分钟、秒。
timestamp包含了年、月、日、时、分、秒、千分之一秒。
sql结构化查询语言常用操作
SQL语句:
标准的结构化查询语言,适用不同的数据库存产品.
1、select语句.
语法:
select[topn]字段名列表[*]from表名where条
件orderby字段名desc/asc
注明:
topn表示前n条件记录.
*:
代表所有记录
ordryby
排序
desc降序asc升序
where条件:
比较表过式、逻辑表达式
例1:
查询出news表中的所有标题.
selecttitle,bodyfromnews
例2、查询news表中所有的数据.
select*fromnews
例3、从news表中查询出标题为"
开会通知"
的记录.
select*fromnewstitle="
例4、从news表中查询出标题,内容。
例5、查询出news表中前5条件记录.
selecttop7*fromnews
例6、显示news表示所有记录并按降序排序.
select*fromnewsorderbyiddesc
例7、查询出stu表所有女生.
select*fromstuwhere性别="
女"
例8、查询出stu表所有女生并按id号降序.
orderbyid1
desc
例9、查询出stu表中性别为男,并且民族为汉族学历为
专科的所有的学生,
SELECT*FROMstuWHERE性别="
男"
and民族="
汉"
and学历="
专科"
例10、将stu表中性别不等于女生找出来.
select姓名,性别fromstu
where性别<
>
女生"
例11、查询性别为男以及民族为汉的学生,且年龄在19
以上的.
select姓名,性别,民族fromstuwhere性别="
and
民族="
and年龄>
19
例12、in的应用.找出stu表中年龄为17,18,19,20
select*fromstuwhere年龄
in(17,18,19,20)
注意:
在in前加not时表示相反的结果.
in主要用在成批量删除或修改时用.
例13、找出stu表中没有身份证的学生的姓名,年龄.
select姓名,年龄,身份证fromstuwhere身份证is
not/null
例14、查询出stu表年龄在17-19岁的所有学生.
select*fromstuwhere年龄between17and19
between表示介于notbetween不介于
例15、模糊查找,
查询出stu表中,所有姓黄的学生。
select*fromstuwhere姓名like"
黄%"
%表示任意的字符串.
例16、从stu表查询出学生数学为最高分的.
selectmax(数学)
as数学高分from学生表
语法
selectmax/min(字段名)as虚拟字段from表名
例17;
计算出stu表中共有几位学生.
selectcount(*)as总人为fromstu
统计函数:
count()
2、insert语句添加数据
insertinto表名(字段1,字段2,.....)values(字段
值1,字段值2,......)
例1、给学生分别添加小明,男,17
insertinto学生表(姓名,性别,年龄,入学日期,生源)
values("
小明"
"
17,null,"
南宁"
字段值的数据类型要和字段匹配.
3、delete删除语句
deletefrom表名where条件
如果不加条件将会删除所有的数据
例如:
从学生表中把姓名为小明的数据删除.
deletefrom学生表where姓名="
请把新闻表中七月分以前的数据删除.
deletefrom学生表where发布日期<
#2005-7-1#
4、update修改语句
update表名set字段1=字段值1,字段2=字段值2,...
where条件
如果不加条件将会所有的数据都被修改.
把stu表中身份证号码值为无的改为正在补办
updatestuset身份证="
正在补办"
where身份证="
无"
纯真年代——Azrael'
sBlog
有电脑可以用来做什么?
总结一下--|回首页|2006年索引|--Asp中常用的数据库相关SQL语句及操作
SQL常用语句
关键词:
SQL常用语句
掌握SQL四条最基本的数据操作语句:
Insert,Select,Update和Delete。
练掌握SQL是数据库用户的宝贵财富。
在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。
当你完成这些学习后,显然你已经开始算是精通SQL了。
在我们开始之前,先使用CREATETABLE语句来创建一个表。
DDL语句对数据库对象如表、列和视进行定义。
它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。
这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
SQL中有四种基本的DML操作:
INSERT,SELECT,UPDATE和DELETE。
由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。
在图1中我们给出了一个名为EMPLOYEES的表。
其中的每一行对应一个特定的雇员记录。
请熟悉这张表,我们在后面的例子中将要用到它。
INSERT语句
用户可以用INSERT语句将一行记录插入到指定的一个表中。
例如,要将雇员JohnSmith的记录插入到本例的表中,可以使用如下语句:
INSERTINTOEMPLOYEESVALUES
('
Smith'
John'
1980-06-10'
'
LosAngles'
16,45000);
通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。
这些列按照我们创建表时定义的顺序排列。
在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;
第二个值“John”将填到第二列FIRST_NAME中……以此类推。
我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。
如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。
如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。
这是因为SQL提供对事务的支持。
一次事务将数据库从一种一致性转移到另一种一致性。
如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。
回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。
为了增加可读性而在数字间插入逗号将会引起错误。
记住,在SQL中逗号是元素的分隔符。
同样要注意输入文字值时要使用单引号。
双引号用来封装限界标识符。
对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd),但是在系统中可以进行定义,以接受其他的格式。
当然,2000年临近,请你最好还是使用四位来表示年份。
既然你已经理解了INSERT语句是怎样工作的了,让我们转到EMPLOYEES表中的其他部分:
Bunyan'
Paul'
1970-07-04'
Boston'
12,70000);
Adams'
1992-01-21'
20,100000);
Pocahontas'
1976-04-06'
12,100000);
Bessie'
1940-05-02'
5,200000);
Jones'
Davy'
1970-10-10'
8,45000);
Indiana'
1992-02-01'
Chicago'
NULL,NULL);
在最后一项中,我们不知道Jones先生的工薪级别和年薪,所以我们输入NULL(不要引号)。
NULL是SQL中的一种特殊情况,我们以后将进行详细的讨论。
现在我们只需认为NULL表示一种未知的值。
有时,像我们刚才所讨论的情况,我们可能希望对某一些而不是全部的列进行赋值。
除了对要省略的列输入NULL外,还可以采用另外一种INSERT语句,如下:
INSERTINTOEMPLOYEES(
FIRST_NAME,LAST_NAME,
HIRE_DATE,BRANCH_OFFICE)
VALUE(
Indianapolis'
);
这样,我们先在表名之后列出一系列列名。
未列出的列中将自动填入缺省值,如果没有设置缺省值则填入NULL。
请注意我们改变了列的顺序,而值的顺序要对应新的列的顺序。
如果该语句中省略了FIRST_NAME和LAST_NAME项(这两项规定不能为空),SQL操作将失败。
让我们来看一看上述INSERT语句的语法图:
INSERTINTOtable
[(column{,column})]
VALUES
(columnvalue[{,columnvalue}]);
和前一篇文章中一样,我们用方括号来表示可选项,大括号表示可以重复任意次数的项(不能在实际的SQL语句中使用这些特殊字符)。
VALUE子句和可选的列名列表中必须使用圆括号。
SELECT语句
SELECT语句可以从一个或多个表中选取特定的行和列。
因为查询和检索数据是数据库管理中最重要的功能,所以SELECT语句在SQL中是工作量最大的部分。
实际上,仅仅是访问数据库来分析数据并生成报表的人可以对其他SQL语句一窍不通。
SELECT语句的结果通常是生成另外一个表。
在执行过程中系统根据用户的标准从数据库中选出匹配的行和列,并将结果放到临时的表中。
在直接SQL(directSQL)中,它将结果显示在终端的显示屏上,或者将结果送到打印机或文件中。
也可以结合其他SQL语句来将结果放到一个已知名称的表中。
SELECT语句功能强大。
虽然表面上看来它只用来完成本文第一部分中提到的关系代数运算“选择”(或称“限制”),但实际上它也可以完成其他两种关系运算—“投影”和“连接”,SELECT语句还可以完成聚合计算并对数据进行排序。
SELECT语句最简单的语法如下:
SELECTcolumnsFROMtables;
当我们以这种形式执行一条SELECT语句时,系统返回由所选择的列以及用户选择的表中所有指定的行组成的一个结果表。
这就是实现关系投影运算的一个形式。
让我们看一下使用图1中EMPLOYEES表的一些例子(这个表是我们以后所有SELECT语句实例都要使用的。
而我们在图2和图3中给出了查询的实际结果。
我们将在其他的例子中使用这些结果)。
假设你想查看雇员工作部门的列表。
那下面就是你所需要编写的SQL查询:
SELECTBRANCH_OFFICEFROMEMPLOYEES;
以上SELECT语句的执行将产生如图2中表2所示的结果。
由于我们在SELECT语句中只指定了一个列,所以我们的结果表中也只有一个列。
注意结果表中具有重复的行,这是因为有多个雇员在同一部门工作(记住SQL从所选的所有行中将值返回)。
要消除结果中的重复行,只要在SELECT语句中加上DISTINCT子句:
SELECTDISTINCTBRANCH_OFFICE
FROMEMPLOYEES;
这次查询的结果如表3所示。
现在已经消除了重复的行,但结果并不是按照顺序排列的。
如果你希望以字母表顺序将结果列出又该怎么做呢?
只要使用ORDERBY子句就可以按照升序或降序来排列结果:
FROMEMPLOYEES
ORDERBYBRANCH_OFFICEASC;
这一查询的结果如表4所示。
请注意在ORDERBY之后是如何放置列名BRANCH_OFFICE的,这就是我们想要对其进行排序的列。
为什么即使是结果表中只有一个列时我们也必须指出列名呢?
这是因为我们还能够按照表中其他列进行排序,即使它们并不显示出来。
列名BRANCH_OFFICE之后的关键字ASC表示按照升序排列。
如果你希望以降序排列,那么可以用关键字DESC。
同样我们应该指出ORDERBY子句只将临时表中的结果进行排序;
并不影响原来的表。
假设我们希望得到按部门排序并从工资最高的雇员到工资最低的雇员排列的列表。
除了工资括号中的内容,我们还希望看到按照聘用时间从最近聘用的雇员开始列出的列表。
以下是你将要用到的语句:
SELECTBRANCH_OFFICE,FIRST_NAME,
LAST_NAME,SALARY,HIRE_DATE
ORDERBYSALARYDESC,
HIRE_DATEDESC;
这里我们进行了多列的选择和排序。
排序的优先级由语句中的列名顺序所决定。
SQL将先对列出的第一个列进行排序。
如果在第一个列中出现了重复的行时,这些行将被按照第二列进行排序,如果在第二列中又出现了重复的行时,这些行又将被按照第三列进行排序……如此类推。
这次查询的结果如表5所示。
将一个很长的表中的所有列名写出来是一件相当麻烦的事,所以SQL允许在选择表中所有的列时使用*号:
SELECT*FROMEMPLOYEES;
这次查询返回整个EMPLOYEES表,如表1所示。
下面我们对开始时给出的SELECT语句的语法进行一下更新(竖直线表示一个可选项,允许在其中选择一项。
):
SELECT[DISTINCT]
(column[{,columns}])|*
FROMtable[{,table}]
[ORDERBYcolumn[ASC]|DESC
[{,column[ASC]|DESC}]];
定义选择标准
在我们目前所介绍的SELECT语句中,我们对结果表中的列作出了选择但返回的是表中所有的行。
让我们看一下如何对SELECT语句进行限制使得它只返回希望得到的行:
SELECTcolumnsFROMtables[WHEREpredicates];
WHERE子句对条件进行了设置,只有满足条件的行才被包括到结果表中。
这些条件由断言(predicate)进行指定(断言指出了关于某件事情的一种可能的事实)。
如果该断言对于某个给定的行成立,该行将被包括到结果表中,否则该行被忽略。
在SQL语句中断言通常通过比较来表示。
例如,假如你需要查询所有姓为Jones的职员,则可以使用以下SELECT语句:
SELECT*FROMEMPLOYEES
WHERELAST_NAME='
;
LAST_NAME='
部分就是断言。
在执行该语句时,SQL将每一行的LAST_NAME列与“Jo