第一篇:基础知识
1. 如何安装SQL?如何御载SQL?如何删除MDF和LDF文件?
2. “.MDF”和“.LDF”文件是什么文件?(“.NDF”是什么文件?)
3.SQL各工具简介
l 服务管理器(Service Manager)
说明:要操作SQL就必须启动它(一般启动SQL Server,其他的可根据具体情况而定)。
一般情况下可设置为开机时自动启动。
l 服务器网络实用工具(Server Network Utility)
说明:由于一般网络协议都为TCP/IP,所以一般只需要设置为TCP/IP就可以,无须进行其它操作。
l 客户端网络实用工具(Client Network Utility)
说明:一般将网络协议设置为TCP/IP,然后再建立以服务器IP为名的管道。
l 企业管理器(Enterprise Manager)
说明:SQL数据库的核心部份,绝大多数数据库操作都可以通过它来完成,数据库创建、恢复、备份、删除、导入导出等等各项功能。
l 查询分析器(Query Analyzer):
说明:通过写SQL语句,更方便快速的对指定数据库表等进行查询或修改操作,多用于调试程序。
l 事件探查器(Profiler):
说明:主要用于追踪程序运行了哪些SQL语句,方便我们进行数据分析、出错排障。
4. 主键和索引
l 主键(Primary Key)
说明:设置主键后,字段的列的值必须是唯一的,且不能为NULL值。
若某字段的值要求是唯一的,则此时可以将此字段设置为主键进行数据存储约束。
(注:了解“约束”的含义及其他相关的约束)
l 索引(Index)
说明:建立索引的目的主要是为了提高数据检索速度。
某字段建立索引后,系统会自动对此字段进行排序,查询时速度更快。(那为什么会快呢?)
例子:
索引前:10001 索引后:10001
30002 10003
40003 10005
20001 20001
50002 30002
10005 40003
10003 50002
5.企业管理器的一些实用操作
l 文件自动增长(Unrestricted filegrowth)
说明:即文件的大小会根据具体的数据量进行不断增长,如果设置为“将文件增长限制为(Restrict filegrowth)”,那么此时当数据库达到指定的兆数时,系统将不会再存入数据并会报出错。(注意:要注意FAT32和NTFS两种硬盘格式对文件大小的限制。)
l 压缩数据库(Shrink Database)
说明:当做数据删除等一些操作时,其实数据库的大小并没有改变,此时可以通过压缩数据库,将这些数据彻底删除,数据库这时才真正的得到缩小。(与清空回收站差不多)
l 备份数据库(Backup Database)
注:如何设置数据库自动备份?
l 恢复数据库(Restore Database)
注:当企业管理器不能进入时,此时不能备份数据库,那么可以将MDF及LDF拷贝出来,然后重装企业管理器,之后通过附加数据库或写语句将数据库文件附加到企业管理器中。
6.系统自带主要数据库简介
l 主控数据库:master
说明:管理其他数据库,其它自建的数据库信息均保留在此数据库的表中。
l 模板数据库:model
说明:创建数据库时系统将以此模板复制一份新的数据库。
l 临时数据库:tempdb
说明:做查询或存储过程时用到的临时表、变量、游标等都是存放在此临时数据库中。
7. 什么是表的默认值?表的默认值的作用?如何设置某个字段的默认值?
8. 什么是临时表?
9. 什么是约束?有多少种约束?常用的有哪些?
第二篇:数据库表的基本操作
l 修改字段宽度(小数位)
语法:Alter table 表名 Alter Column 字段名(宽度,小数位)
例子:修改库表spkfk的spbh字段的宽度为20
alter table spkfk alter column spbh char(20)
l 增加新字段
语法:Alter table 表名 add字段名(宽度,小数位)
例子:在库表spkfk中增加tym字段,宽度为20个字符
alter table spkfk add tym char(20)
l 删除原有字段
语法:Alter table 表名 drop column 字段名
例子:删除库表spkfk中的tym字段
alter table spkfk drop column tym
l 删除某个表
语法:Drop table 表名1,表名2,表名3 (注意:删除后的表将不能恢复,要谨慎使用)
例子:删除数据库test中的库表spkfk
drop table spkfk
第三篇:数据库表数据操作SQL语句
l 查询语句:select
功能描述:根据指定条件显示出符合的记录(或者生成新表)
语法:Select 字段列表 into 新表 from 表名 where 搜索条件 group by 分组表达式
order by 排序表达式
常用关键字介绍:
数据库别名:在数据库名后直接输入另一简单名称,主要是方便程序书写及阅读。
例子:显示库表spkfk中的所有的记录(显示字段spbh,spmch)
一般书写格式是:select spkfk.spbh,spkfk.spmch from spkfk
使用别名后的书写格式是:select a.spbh,a.spmch from spkfk a
AS:将某个字段名强制以另一字段名显示出来。
例子:将库表spkfk中spbh强制以spbh_new显示
select spbh as spbh_new from spkfk
DISTINCT:显示出返回结果集记录的唯一值,即有重复的记录不显示出来。
例子:显示出库表spkfk中所有的spmch(重复的spmch不显示)
select distinct spmch from spkfk
TOP n:显示出返回结果集的前N条记录
例子:显示出商品资料库spkfk中lshj最大的十条记录
Select top 10 * from spkfk order by lshj desc
(重要)数据库的关联:当数据库表内容存放在两个数据库表中时,如果要同时显示出这些内容时,必需用到关联。此时两个库表需要有至少一个以上的字段具有同一特征,然后以此特征做为关联对象,此时即可在同一select语句中显示出两个表的内容。)
例子:现有学生资料表stdoc(存放学生的各项基本资料,有:学号、姓名、性别等)和成绩表score(各学生的各科成绩,有:学号、语文成绩、数学成绩、英语成绩等),现要显示出各学生各科的成绩及其基本资料。(通过学号xh字段进行关联)
select a.*,b.* from stdoc a, score b where a.xh=b.xh
AND:条件与,即同时符合两个或两个以上的搜索条件时的记录才被显示。
例子:显示库表spkfk中shpgg为“50g”,dw为“包”的记录
select * from spkfk where shpgg='50g' and dw='包'
OR:条件或,即搜索条件有两个或两个以上时,只要记录符合其中之一,则这些记录被显示。
例子:显示库表spkfk中shpgg为“50g”和“100g”的记录
select * from spkfk where shpgg='50g' or shpgg='100g'
IN:判断是否存在,存在则显示。注:not in则相反。
例子:显示库表spkfk中spbh为10001、10002或10003的记录。
select * from spkfk where spbh in ('10001','10002','10003')
例子:显示库表spkfk中spbh不为10001、10002或10003的记录。
select * from spkfk where spbh not in ('10001','10002','10003')
LIKE:模糊查询。当记录的满足条件时显示,一般需要与通配符“-,%”等联用,不用通配符时等同与“=”号。注:not like则相反。
例子:显示库表spkfk中spbh以“1”开头的记录。(左匹配查询)
select * from spkfk where spbh like '1%'
例子:显示库表spkfk中spmch含有“酒精”的记录。(模糊查询)
select * from spkfk where spmch like '%酒精%'
IS:判断是否为Null值。如果要判断该值或该字段值是否为“null”值,不能直接用“=”号进行判断,而要用“is“来判断。注:is not则相反。
例子:显示库表spkfk中shpgg为“null”的记录。
Select * from spkfk where shpgg is null
l 插入语句:insert
功能描述:向数据库表增加新数据
语法1:insert into 表名(字段列表) values (值列表)
功能详述:向指定表插入指定字段的值,每次只能插入一条记录,可以同时插入多个值。注意在插入记录时要值列表的属性与字段列表的字段属性保持一致,要不会可能会出错。另外主键一定要有值出现在值列表中,要不插入不会成功。(其他字段的值按默认值自动生成;没有默认值而又不允许为“null”值的字段在insert是一定要为其赋值)
例子:为库表spkfk插入一条记录,spid值为“SPH00009999”,spbh值为“10009”,spmch值为“电脑主板”,jj值为100,lshj值为200。
insert into spkfk(spid,spbh,spmch,jj,lshj) values('SPH00009999','10009','电脑主板',100,200)
语法2:insert into 表名(字段列表) select 字段列表 from 表名
功能详述:将select语句的结果插入到insert语句的表名中,具体记录条数由select语句决定,可以是0到无限。注意字段列表要与select语句的字段列表保持一致,数据类型要一致;select语句为标准的select语句语法。select语句可以是insert语句的表,即从自身读数据写入自身。当select的库表结构与insert的库表结构完全一致时可以省略字段列表
例子:将库表spkfk1的所有记录插入到库表spkfk中,
从spkfk1中的取值字段为spid,spbh,spmch,jj,lshj。
insert into spkfk(spid,spbh,spmch,jj,lshj) select spid,spbh,spmch,jj,lshj from spkfk1
例子:从库表stu中读取xh为“001”的记录在插入到库表stu中。
insert into stu(xh,xm) select xh,xm from stu where xh='001'
例子:将库表stu1中的所有记录插入到库表stu中。(此时stu1和stu两表的字段必须一致)
insert into stu select * from stu1
l 更新语句:update:
功能描述:更改指定数据库表的字段内容。
语法1:update 表名 set 字段名=表达式 where 搜索条件
功能详述:将指定库表的指定字段名更新为指定表达式的值。具体更新的记录由where搜索条件决定。建议先用select语句显示出结果来先确定。
例子:要将库表spkfk中spbh以“1”开头的记录的lshj提高10个百分点,可用语句如下:
update spkfk set lshj=lshj+lshj*0.1 where spbh like '1%'
语法2:update 表名 set 字段名=表达式 from 表名1 where 搜索条件
功能详述:有时没办法直接从更新源库表来判断要更新哪些记录,而是需要根据其它表来进行判断,所以此时需要用到from字句,与其他表进行关联。
例子:老板根据分析后创建了一个库表boss,里面记录了要涨价商品的编号spbh,此时直接更新spkfk表是不可能的,所以要引用boss表的spbh进行更新。可用语句如下:
update spkfk set lshj=lshj+lshj*0.1 from boss a where a.spbh=spkfk.spbh
注:1.from的数据库可以用别名,以提高语句的简洁性。
2.没加搜索条件为更新整个表指定字段的内容,要小心。
l 删除语句:delete
功能描述:删除库表中符合指定条件的记录。
语法1:delete 表名 where 搜索条件
功能详述:根据搜索条件删除符合条件的记录。注意,记录删除后没法恢复,所以在做此操作时一定要小心。建议先用select语句显示出结果来先确定。
例子:要删除库表spkfk中以“9”开头的商品。
delete spkfk where spbh like '9%'
语法2:delete 表名 from 表名1 where 搜索条件
功能详述:from子句作用与update是一致的。
例子:上面老板创建的boss表的内容为要删除的商品编号spbh,那么用以下语句删除库表spkfk中的这些记录。
delete spkfk from boss a where a.spbh=spkfk.spbh
注:1.from的数据库可以用别名,以提高语句的简洁性。
2.没加搜索条件为删除整个表的内容,要小心。
第四篇:SQL程序设计
1.常用数据类型简介:
l 整数型:int
说明:只能存放整数。
l 实数型:decimal,numeric
说明:可以是任何数值,整数小数均可,而且数值可以是非常大,具体长度及小数位数由自己定义。
l 字符串型:char
说明:字符串型只能存放字符,所以字符串型的值都是字符,字符串只能进行相加运算,不能做其它运算,相加时只是简单的把两个字符串并在一起。注意字符串内的数值也是字符,不能进行数值计算。
l 日期时间型:datetime
说明:该类型的值可以进行加减运算,然后求出具体的时间日期。
2.基础知识
l 变量:在SQL中以@开头的是变量。变量指会随着程序的运行在程序中不断发生变化的值,
如:@spbh,@spmch
l 常量:常量是指在整个程序中从头到尾一直不变的值,
如:120,'aaaa'
l 函数:指能完成一定功能的小程序,函数一般最终会返回一个值。
如:max(),调用此函数之后它会求出一个最大值。
3.程序设计语句
l 定义变量:declare
语法:declare 变量名 变量类型
例子:定义1个变量@loop
declare @loop int
l 给变量赋值:set
语法:set 变量名=值 (提示:“=”号为赋值号,不同与等号。)
例子:给变量@loop赋值
set @loop=1
l 注释语句“--”,“/* */”
功能描述:注释即是指在程序中没用作用,只是起到说明的作用的语句。一般是在某句语句或某段程序中起到说明的作用,便于程序的阅读和维护。
语法1:-- 说明内容
功能详述:在此符号后面的一切内容都不起作用,只针对当前行。
例子:declare @loop int -- 本语句是定义一个循环变量并设置为整型 (“--”后面的文字为注释内容)
语法2:/* 说明内容 */
功能详述:在此符号之间的一切内容都不起任何作用,该语句可以是一个大范围,以“/*”开头,以“*/”结束。
例子:/*declare @loop int 本语句是定义一个变量
set @loop=1 本语句是给变量赋值*/ (“/* */”之间的语句都不起作用)
l 流程控制语句——条件语句:if 条件 语句1 else 语句2
功能描述:当if后面的语句成立时(即其值为True时)执行if下面的语句,否则执行else后面的语句。该语句可以嵌套使用。
语法1:if 条件
语句1
else
语句2
例子:当成绩@score大于等于60分时显示“合格”,否则显示“不合格”。
declare @score int
set @score=80
if @score>=60
select '合格'
else
select ’不合格'
语法2:if 条件1
if 条件2
语句1
else
语句2
else
if 条件3
语句3
else
语句4
例子:当@score为90分时显示“优秀”,80分时显示“良好”,70分时显示“一般”,60分时显示“差”。
declare @score int
set @score=85
if @score>=80
if @score>=90
select '优秀'
else
select '良好'
else
if @score>=70
select '一般'
else
select '差'
l 流程控制语句——定义语句块语句:begin 语句块end
语法:begin
语句块
end
功能描述:当流程控制语句中语句体的数量大于1句时需要用此语句进行包含。语句块中可以是其他的各种语句。
例子:当@score大于等于80时,则显示一行“成绩不错”,一行“很好”。
declare @score int
set @score=90
if @score>=80
begin
select '成绩不错'
select '很好"
end
备注:这时如果没用begin....end将两个select语句套起来的话,那么效果将大大不同,要特别注意。
l 流程控制语句——循环语句:while
语法:while 条件
begin
语句块
End
功能描述:当条件成立时,执行begin….end之间的语句。当条件不成立时则退出,执行end后面的语句。
在begin…end中可以通过break语句强制退出循环。
在begin….end中,当遇到continue语句时,会忽略循环体后面的语句,进行下一轮循环。
例子:计算1加到100的和 (while语句的基本应用)
declare @loop int,@sum int
set @loop=1
set @sum=0
while @loop<=100
begin
set @sum=@sum+@loop
set @loop=@loop+1
end
select ‘1-100之和是:’,@sum
例子:求1-10偶数之和 (continue语句的应用)
declare @loop int,@sum int
set @loop=1
set @sum=0
while @loop<=10
begin
if @loop%2=0
begin
set @loop=@loop+1
continue
end
set @sum=@sum+@loop
set @loop=@loop+1
end
select '1-10之和是:',@sum
例子:求自然数1加到N的值才能大于100000。求最小N的值。 (break语句的应用)
declare @loop int,@sum int
set @loop=1
set @sum=0
while @loop<=100000
begin
if @sum>100000
begin
set @loop=@loop+1
break
end
set @sum=@sum+@loop
set @loop=@loop+1
select 'N的值是:',@loop
第五篇:函数简介
1.常用函数
l 截取字符串函数:substring(字符串,M,N)
功能描述:返回字符串的第M个字符起的N个。
例子:有字符串“一二三四五”,现只要求显示“三四”即可。
declare @name char(10),@subname char(10)
set @name='一二三四五'
set @subname=substring(@name,3,2)
select @subname
l 统计记录条数函数:count(*)
功能描述:统计返回结果的记录的条数。
例子:显示库表spkfk中spbh以“1”开头的记录的条数。
select count(*) from spkfk where spbh like '1%'
l 求指定字段的平均值函数:avg(字段名)
功能描述:求出指定字段名的平均值。
例子:显示库表spkfk中以“2”开头的记录lshj的平均值。
select avg(lshj) from spkfk where spbh like '2%'
l 求指定字段的最大值函数:max(字段名)
功能描述:即求出指定字段的最大值。
例子:显示库表spkfk中以“3”开头的记录中lshj最大的记录。
select max(lshj) from spkfk where spbh like '3%'
l 求指定字段的最小值函数:min(字段名)
功能描述:与max()相反。
l 去除右边空格的字符串函数:rtrim(字符串)
功能描述:将字符串中最右边的空格去掉。
例子:现有字符串“一二三 ”,现希望将右边字符串去掉,返回结果“一二三”即可。
Select rtrim(“一二三 ”)
l 去除左边空格的字符串函数:ltrim(字符串)
功能描述:于rtrim()相反。
l 取得当前日期时间函数:getdate()
功能描述:取得当前系统的日期和时间。
例子:显示当前日期和时间
select getdate()
l 类型转换1:CAST(字段/变量 AS 新类型)
功能描述:将指定字段的类型转换为AS后面的新类型。
例子:将库表spkfk中的lshj字段转换为int型,并显示出来。
Select cast(lshj as int) from spkfk
l 类型转换2:CONVERT(新类型,字段/变量,格式)
功能描述:将指定字段的类型转换为AS后面的新类型;格式可以将日期以不同的样式显示出来。
例子:显示当前的日期,格式(YYYY-MM-DD)
select convert(char(10),getdate(),20)
2.系统内部函数(@@函数)
l @@rowcount函数
功能描述:返回受上一个语句影响的记录行数。
例子:显示update语句更新了多少条记录
update spkfk set spbh=’***’ where spbh like ‘7%’
select @@rowcount
l @@error函数
功能描述:返回执行SQL语句后的错误代码。如果执行正常则返回0。
例子:显示运行update语句之后的错误代码。
update spkfk set spbh=’***’ where spbh like ‘7%’
select @@error --如果update正常的话则显示0,否则显示相应的出错代码。
第六篇:其他相关SQL知识点
1.存储过程简介:
说明:运行原理其实就和DOS下的BAT批处理文件一样,把多个SQL语句放在一起运行。
存储过程以return作为结束标志,当遇到return时则会中断存储过程的运行。
存储过程可以嵌套使用。
例子:
Create Procedure sex
@sex as char(10)
as
if @sex=’男’
select ‘性别是男性的’
end
if @sex=’女’
select ‘性别是女性的’
end
return
2.了解什么是“视图”及其作用。
1. 了解什么是“触发器”及其应用。
2. 了解什么是“游标”及其应用。
3. 了解什么是“事务处理”及其应用。
4. 如何设置“计划任务”及对其的灵活应用。
5. “数据导入导出”的应用。