SQL必修课

第一篇:基础知识

 

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)”,那么此时当数据库达到指定的兆数时,系统将不会再存入数据并会报出错。(注意:要注意FAT32NTFS两种硬盘格式对文件大小的限制。)

l        压缩数据库(Shrink Database

说明:当做数据删除等一些操作时,其实数据库的大小并没有改变,此时可以通过压缩数据库,将这些数据彻底删除,数据库这时才真正的得到缩小。(与清空回收站差不多)

l        备份数据库(Backup Database

注:如何设置数据库自动备份?

l        恢复数据库(Restore Database

注:当企业管理器不能进入时,此时不能备份数据库,那么可以将MDFLDF拷贝出来,然后重装企业管理器,之后通过附加数据库或写语句将数据库文件附加到企业管理器中。

 

6.系统自带主要数据库简介

l        主控数据库:master

说明:管理其他数据库,其它自建的数据库信息均保留在此数据库的表中。

l        模板数据库:model

说明:创建数据库时系统将以此模板复制一份新的数据库。

l        临时数据库:tempdb

说明:做查询或存储过程时用到的临时表、变量、游标等都是存放在此临时数据库中。

 

7.  什么是表的默认值?表的默认值的作用?如何设置某个字段的默认值?

 

8.  什么是临时表?

 

9.  什么是约束?有多少种约束?常用的有哪些?

 

 


第二篇:数据库表的基本操作

 

l        修改字段宽度(小数位)

语法:Alter table 表名 Alter Column 字段名(宽度,小数位)

例子:修改库表spkfkspbh字段的宽度为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中的所有的记录(显示字段spbhspmch

一般书写格式是:select spkfk.spbh,spkfk.spmch from spkfk

使用别名后的书写格式是:select a.spbh,a.spmch from spkfk a

AS:将某个字段名强制以另一字段名显示出来。

例子:将库表spkfkspbh强制以spbh_new显示

select spbh as spbh_new from spkfk

DISTINCT:显示出返回结果集记录的唯一值,即有重复的记录不显示出来。

例子:显示出库表spkfk中所有的spmch(重复的spmch不显示)

select distinct spmch from spkfk

TOP n:显示出返回结果集的前N条记录

例子:显示出商品资料库spkfklshj最大的十条记录

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:条件与,即同时符合两个或两个以上的搜索条件时的记录才被显示。

例子:显示库表spkfkshpgg为“50g”,dw为“包”的记录

select * from spkfk where shpgg='50g' and dw=''

OR:条件或,即搜索条件有两个或两个以上时,只要记录符合其中之一,则这些记录被显示。

例子:显示库表spkfkshpgg为“50g”和“100g”的记录

select * from spkfk where shpgg='50g' or shpgg='100g'

IN:判断是否存在,存在则显示。注:not in则相反。

例子:显示库表spkfkspbh100011000210003的记录。

select * from spkfk where spbh in ('10001','10002','10003')

例子:显示库表spkfkspbh不为100011000210003的记录。

select * from spkfk where spbh not in ('10001','10002','10003')

LIKE:模糊查询。当记录的满足条件时显示,一般需要与通配符“-%”等联用,不用通配符时等同与“=”号。注:not like则相反。

例子:显示库表spkfkspbh以“1”开头的记录。(左匹配查询)

select * from spkfk where spbh like '1%'

例子:显示库表spkfkspmch含有“酒精”的记录。(模糊查询)

select * from spkfk where spmch like '%酒精%'

IS:判断是否为Null值。如果要判断该值或该字段值是否为“null”值,不能直接用“=”号进行判断,而要用“is“来判断。注:is not则相反。

例子:显示库表spkfkshpgg为“null”的记录。

              Select * from spkfk where shpgg is null

 

l        插入语句:insert

功能描述:向数据库表增加新数据

 

语法1insert into 表名(字段列表)  values (值列表)

功能详述:向指定表插入指定字段的值,每次只能插入一条记录,可以同时插入多个值。注意在插入记录时要值列表的属性与字段列表的字段属性保持一致,要不会可能会出错。另外主键一定要有值出现在值列表中,要不插入不会成功。(其他字段的值按默认值自动生成;没有默认值而又不允许为“null”值的字段在insert是一定要为其赋值)

例子:为库表spkfk插入一条记录,spid值为“SPH00009999”,spbh值为“10009”,spmch值为“电脑主板”,jj值为100lshj值为200

insert into spkfk(spid,spbh,spmch,jj,lshj) values('SPH00009999','10009','电脑主板',100,200)

 

语法2insert into 表名(字段列表) select  字段列表  from 表名

功能详述:将select语句的结果插入到insert语句的表名中,具体记录条数由select语句决定,可以是0到无限。注意字段列表要与select语句的字段列表保持一致,数据类型要一致;select语句为标准的select语句语法。select语句可以是insert语句的表,即从自身读数据写入自身。当select的库表结构与insert的库表结构完全一致时可以省略字段列表

例子:将库表spkfk1的所有记录插入到库表spkfk中,

spkfk1中的取值字段为spidspbhspmchjjlshj

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中。(此时stu1stu两表的字段必须一致)

insert into stu select * from stu1

 

l        更新语句:update:

功能描述:更改指定数据库表的字段内容。

 

语法1update 表名 set 字段名=表达式 where 搜索条件

功能详述:将指定库表的指定字段名更新为指定表达式的值。具体更新的记录由where搜索条件决定。建议先用select语句显示出结果来先确定。

例子:要将库表spkfkspbh以“1”开头的记录的lshj提高10个百分点,可用语句如下:

update spkfk set lshj=lshj+lshj*0.1 where spbh like '1%'

 

语法2update 表名 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

注:1from的数据库可以用别名,以提高语句的简洁性。

2.没加搜索条件为更新整个表指定字段的内容,要小心。

 

l        删除语句:delete

功能描述:删除库表中符合指定条件的记录。

 

语法1delete 表名 where 搜索条件

功能详述:根据搜索条件删除符合条件的记录。注意,记录删除后没法恢复,所以在做此操作时一定要小心。建议先用select语句显示出结果来先确定。

例子:要删除库表spkfk中以“9”开头的商品。

delete spkfk where spbh like '9%'

 

语法2delete 表名 from 表名1  where 搜索条件

功能详述:from子句作用与update是一致的。

例子:上面老板创建的boss表的内容为要删除的商品编号spbh,那么用以下语句删除库表spkfk中的这些记录。

delete spkfk from boss a where a.spbh=spkfk.spbh

注:1from的数据库可以用别名,以提高语句的简洁性。

2.没加搜索条件为删除整个表的内容,要小心。

 

 


第四篇:SQL程序设计

 

1.常用数据类型简介:

l        整数型:int

说明:只能存放整数。

l        实数型:decimalnumeric

说明:可以是任何数值,整数小数均可,而且数值可以是非常大,具体长度及小数位数由自己定义。

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后面的语句。该语句可以嵌套使用。

语法1if  条件

                     语句1

else 

         语句2

例子:当成绩@score大于等于60分时显示“合格”,否则显示“不合格”。

declare @score int

set @score=80

if @score>=60

  select '合格'

else

       select ’不合格'

 

语法2if 条件1

          if 条件2

                            语句1

                     else

                            语句2

              else 

if 条件3

                            语句3

                     else

                            语句4

例子:当@score90分时显示“优秀”,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

例子:求110偶数之和    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(字符串,MN)

功能描述:返回字符串的第M个字符起的N个。

例子:有字符串“一二三四五”,现只要求显示“三四”即可。

declare @name char(10),@subname char(10)

set @name='一二三四五'

set @subname=substring(@name,3,2)

select @subname

 

l        统计记录条数函数:count(*)

功能描述:统计返回结果的记录的条数。

例子:显示库表spkfkspbh以“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        类型转换1CAST(字段/变量  AS  新类型)

功能描述:将指定字段的类型转换为AS后面的新类型。

例子:将库表spkfk中的lshj字段转换为int型,并显示出来。

              Select cast(lshj as int) from spkfk

 

l        类型转换2CONVERT(新类型,字段/变量,格式)

功能描述:将指定字段的类型转换为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.  “数据导入导出”的应用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值