SQL简略教程.docx

上传人:b****8 文档编号:10081647 上传时间:2023-05-23 格式:DOCX 页数:18 大小:23.31KB
下载 相关 举报
SQL简略教程.docx_第1页
第1页 / 共18页
SQL简略教程.docx_第2页
第2页 / 共18页
SQL简略教程.docx_第3页
第3页 / 共18页
SQL简略教程.docx_第4页
第4页 / 共18页
SQL简略教程.docx_第5页
第5页 / 共18页
SQL简略教程.docx_第6页
第6页 / 共18页
SQL简略教程.docx_第7页
第7页 / 共18页
SQL简略教程.docx_第8页
第8页 / 共18页
SQL简略教程.docx_第9页
第9页 / 共18页
SQL简略教程.docx_第10页
第10页 / 共18页
SQL简略教程.docx_第11页
第11页 / 共18页
SQL简略教程.docx_第12页
第12页 / 共18页
SQL简略教程.docx_第13页
第13页 / 共18页
SQL简略教程.docx_第14页
第14页 / 共18页
SQL简略教程.docx_第15页
第15页 / 共18页
SQL简略教程.docx_第16页
第16页 / 共18页
SQL简略教程.docx_第17页
第17页 / 共18页
SQL简略教程.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

SQL简略教程.docx

《SQL简略教程.docx》由会员分享,可在线阅读,更多相关《SQL简略教程.docx(18页珍藏版)》请在冰点文库上搜索。

SQL简略教程.docx

SQL简略教程

1.创建数据库

createdatabasebvtc_db      --数据库名

onprimary   --在主文件组中指定文件.默认为第一个文件

name='bvtc_db_data',      --指定主数据文件名称(逻辑名)

filename='F:

\bvtc_db_data.mdf',--指定主文件的操作系统文件名称和路径.必须为安装SQL服务器的计算机上的文件夹.(物理文件名)

size=5MB,    --初始容量大小

maxsize=20MB,--最大容量

filegrowth=20%  --文件增长量(默认时为10%,不能超过maxsize)

logon   --指定建立数据库的事务日志文件,文件扩展名为:

ldf

(name='bvtc_db_log',--指定事务日志文件逻辑名称

filename='F:

\bvtc_db_log.ldf',--指定物理文件名

size=10MB,  --初始容量大小

filegrowth=2MB  --文件增长量

collateChinese_PRC_CI_AS  --指定默认排序方法

GO

2.查看数据库信息

除了直接查看数据库属性外,我们以用系统存储过程式sp_helpdb:

execsp_helpdb'bvtc_db'   --exec为执行语句,bvtc_db为数据库名

3.管理数据库

   

(1)打开或切换数据库:

usebvtc_db

   

(2)修改数据库容量:

可以直接在数据库属性里改,也可以用如下语句:

   usebvtc_db

      go

      alterdatabasebvtc_db

       modifyfile

      (

        name=bvtc_db_data,--同样也可以是事务日志文件(bvtc_db_log)

        size=20MB

       )

    (3)缩减数据库容量:

       方法1:

右击数据库名-所有任务-收缩数据库

       方法2:

             dbccshrinkdatabase(database_name[,new_size,[,'masteroverride']])

         实例:

               usebvtc_db

               go

               execsp_dboption'bvtc_db','singleuser',TRUE--在缩减数据库前要将其设为单用户模式.

               go

               dbccshrinkdatabase('bvtc_db')     --此处将数据库缩减到最小容量.

               go

               execsp_dboption'bvtc_db','singleuser',FALSE

               go   

    (4).设定修改数据库选项:

        方法1:

数据库属性,选项

        方法2:

              

(1)查看数据库选项:

execsp_dboption'database_name'

              

(2)修改数据库选项:

execsp_dboption[database_name,option_name,{true|false}]

                 实例:

更改数据库bvtc_db为只读状态:

                 execsp_dboption'bvtc_db','readonly',true

                 go

    (5)更改数据库名称:

execsp_renamedboldname,newname      --权限仅限于sa

       实例:

将数据库bvtc_db改名为bvtc1_db

            execsp_dboption'bvtc_db','readonly',false

            go

            execsp_renamedb'bvtc_db','bvtc_db1',

            go

    (6)删除数据库:

       dropdatabasedatabase_name1[,database_name2...]

    或:

execsp_dbremovedatabase_name      --这是利用系统存储过程.

       实例:

将bvtc_db数据库删除:

            Usemaster

            dropdatabasebvtc_db

            go

4.数据库表的操作

(1)创建表:

在数据库student创建"学生表"

  usestudent

  go

  createtable学生

  (学号  char(12)constraintpk_xhprimarykey,  --设定学号为该表的主键.

   姓名  char(8)notnull,--不充许为空.

   性别  char

(2),

   出生日期datetime,

   入学时间datetime,

   班级代码char(9)constraintfk_bjdmreferences班级(班级代码),  --将班级代码设为此表的外键.

   专业代码char

(2),

   系部代码char

(2)

   )

   onstugroup1--将学生表创建在stugroup1文件组上.

   go

(2)修改表:

使用altertable语句可以对表的结构和约束进行修改.

   实例:

<1>在"学生"表中增加"家庭住址"一列,数据类型为varchar(30),不允许为空.

           usestudent

           go

           altertable学生

              add家庭住址varchar(30)notNULL--add为增加列或约束的子句.

           go

        <2>在"学生"表中修改"家庭住址"一列为varchar(50),允许为空.

           usestudent

           go

           altertable学生

            altercolumn家庭住址varchar(50)NULL  --altercolumn为修改表列属性的子句.

           go

        <3>删除字段

           usestudent

           go

           altertable学生

             dropcolumn家庭住址

           go

(3)删除表:

           usestudent

           go

           droptable学生

           go

(4)数据的添加与表的查看.

         <1>向表中添加数据:

insert[into]tablename(字段1,字段2,...)values(value1,value2,...)

            usestudent

            go

            insert学生          --表名

            (学号,姓名,家庭住址)    --所要插入的列名

            values('001','种子张','我家')    --所插入的值

            如果是按顺序逐个列插入数据,则可以省略列名.         

            还可以将select查询结果插入到表中:

insert[into]tablename1(字段1,字段2,...)select字段1,字段2...fromtablename2

            例:

insertinto系部1

               (系部代码,系部名称,系部主任)

               select系部代码,系部名称,系部主任

               from系部

               go

(5)数据的修改:

update

updatetable_namesetColumn_Name=**whereID=***

    实例:

根据"教学计划"表中的课程号,专业代码和专业学级修改教师任课表中的"起始周","结束周"列的值.

    usestudent

    go

    update教师任课

       set教师任课.起始周=教学计划.起始周,教师任课.结束周=教学计划.结束周

    from教学计划

    where教学计划.课程号=教师任课.课程号

        and教学计划.专业代码=教师任课.专业代码

        and教学计划.专业学级=教师任课.专业学级

(6)数据的删除:

    <1>delete语句,Deletetable_name删除"表格记录"会把操作记录在日志中,可以通过事务回滚来恢复删除的数据

deletefromtable_namewhere条件

    实例:

删除"课程注册"表中姓名为"种子张"的课程号为"001"的选课信息.

         usestudent

         go

         delete课程注册

         from学生

         where学生.姓名='王丽'and课程注册.专业代码='001'

         go

    <2>truncatetabletablename清空表格,删除"表格记录"不可恢复.

5.简单查询.

  

(1)select语句的主要格式.

     selectselect_list

     [intonew_table_name]           --指定使用结果集来创建一个新的数据表,表名为:

new_table_name

      fromtable_list

     [wheresearch_conditions]

     [Groupbygroup_by_list]         --将结果集按照group_by_list列分组.

     [havingsearch_conditions]

     [orderbyorder_list[asc|desc]     --asc为升序(默认),desc为倒序.

  

(2)实例:

     <1>查询"学生"表中全体学生的记录*

        usestudent

        go

        select*from学生

        go

     <2>为结果集指定别名   as

        usestudent

        go

        select姓名,year(getdate()-year(出生日期)as年龄from学生    --注意是用as,年龄即为别名.

        go     

     <3>选择表中不重复的记录distinct

        usestudent

        go

        selectdistinct姓名

        from学生表

        go

     <4>限制返回行数top

       限制返回行数

       选取第一条记录:

selecttop1*fromtable_name

       选取前N条记录:

selecttopN*fromtable_name

       选取最后一条记录:

selecttop1*fromtable_nameorderbycolumn_namedesc

       选取最后N条记录:

selecttopN*fromtable_nameorderbycolumn_namedesc

       选取任意一条记录(随机):

selecttop1*fromtable_nameorderbynewid()     

   (3)查询满足条件的元组(常与where联用)

      <1>查询条件:

比  较:

=,<,>,>=,!

=,<>,!

>,!

<;not+上述运算符

                  确定范围:

betweenand,notbetweenand判断是否在范围内

                  确定集合:

in,notin判断是否为列表中的值

                  字符匹配:

like,notlike判断是否与指定的字符通配格式相符

                  空   值:

isnull,notisnull判断是否为空

                  多重条件:

and,or,not用于多重判断

         实例:

1.查询学生表中出生日期在1980-01-01和1982-01-01之间的学生姓名

                select姓名from学生where出生日期between'1980-01-01'and'1982-01-01'

       <2>.字符匹配.

                [not]like'<匹配串>'[escape'<换码字符>']

                其中,匹配串可以是一个完整的字符串,也可以是与通配符组成的字符串.

通配符有:

%,_,[],[^]四种.%表示任意个字符如a%b表示以a开头,b结尾的任意个字符.,_表示任意一个字符,

                []表示方括号里的任意一个字符如a[bcde]表示以a头,bcde中任一个结尾的字符串.[^]表示不取方括号里的值.

         实例:

查询"学生"表中姓王的同学的所有信息.

              select*from学生where姓名like'王%'

         如果要查询的字符本身就含有%,_等就要使用escape'<换码字符>'短语对通配答进行转义了.

         例:

要查询delphi_2.9

            where课程名like'delphi/_2.9'escape'/'表示匹配字符串中紧跟在/之后的字符"_"不再是通配符.

       <3>涉及空值的查询.notisnull

         实例:

查询"班级"表中备注为空的班级信息.

              select*from班级where备注isnull        --is不能用"="代替.

       <4>对查询结果进行排序  asc升序(默认),desc降序.

          实例:

查询选修了课程号为001的课程的学生学号.按成绩降序排列.

          select学号,成绩from课程注册where课程号='001'orderby学号asc,成绩desc  --有多个排序,先排前面的,相同则排后面的.

4)对数据进行统计.

      集合函数:

count([distinct|all]*)统计记录个数.

              count([distinct|all]<列名>)统计一列中值的个数.

              sum([distinct|all]<列名>计算一列值的总和(必须为数据类型).

              avg,max,min分别求一列值中的平均数,最大值,最小值.

      实例:

<1>返回学生表中学生总人数.

              selectcount(*)as学生人数from学生

           <2>返回一列的平均数

              selectavg(成绩)as平均分from课程注册

           <3>对结果进行分组.

              groupby列名[having筛选条件表达式]

           <4>使用compute子句

              格式如下:

compute集合函数[by列名]        --分类汇总.它显示详细记录,groupby不显示。

              其中,集合函数:

sum(),avg(),count()等.

              select*from课程注册orderby学号computesum(成绩)by学号

   (5)用查询结果生成新表selectinto

      select*into课程注册副表from课程注册

      创建空副表:

select*into学生副表from学生表where1=2

   (6)合并结果集union

      将多个查询结果集合并为一个结果集

    select语句

      {unionselect语句},[,...n]

      各个结果集列数必须相同,对应数据类型也要相同.最后结果集返回第一个select语句.

      实例:

查看“课程注册”表中选修了001课程或者选修了002课程的学生,也就是选择两者的并并集.

      select*from课程注册 where课程号='001'

      union

      select*form课程注册where课程号='002'

   (7)连接查询  crossjoin  (并集)

      select列名列表 fromtable_name1crossjointable_name2

      实例:

select*from产品crossjoin 产品销售

   (8)等值与非等值连接查询

    连接条件:

[表名1].<列名><比较运算符>[表名2].<列名> 其中比较运算符有=,>=,<=,!

=,>,<.

      格式:

select 列名列表fromtable_name1[inner]table_name2ontable_name1.列名=table_name2.列名    --inner指定为内连接,可以省.

      (on主键=外键)

实例:

select*from产品innerjoin产品销售on产品.产品编号=产品销售.产品编号               --innerjoin为交集,不同于crossjoin    

       自然连接:

在等值连接中,把目标列中重复的属性列去掉则为自然连接.

   (9)自身连接查询

      实例:

查询选修了两门或两门以上课程的学生学号和课程号

          selecta.学号,a.课程号from课程注册asajoin课程注册 asb

          ona.学号=b.学号anda.课程号=b.课程号

  (10)外连接查询(分为左外连接,右外连接和全外连接)

      <1>.左外连接(table_name1在左边)

          Select*fromtable_name1leftouterjointable_name2ontable_name1.column_name=table_name2.column_name

      <2>.右外连接(把left改为right就行了)

      <3>.全外连接(触类旁通,left改为full)将左表所有记录分别与右表的每一条记录进行连接组合,结果集中不满足连接条件的以null显示出来.

   (11)复合连接条件查询.

      实例:

查询成绩在75分以上的学生的学号,姓名,选修课的课程号,课程名,专业代码,成绩,任课老师的教师编号,姓名.

selectb.课程号,c.教师编号,c.姓名,a.学号,b.专业代码,b.专业学级,b.学期,b.成绩

       from学生asajoin课程注册asbona.学号=b.学号andb.成绩>75join教师asc

   (12)子查询(查询块的嵌套)

select* from产品 

       where产品编号in(select产品编号 from产品销售)  --()内为子查询,其中in可以改为比较运算符.

   (13)带有any或all运算符的子查询.

       实例:

查询比"1"班中所有学生年龄都要小的其它班上的学生学号与姓名

       select学号,姓名

            from学生

            where出生日期>all

            (select出生日期from学生where班级代码='1')

            and班级代码<>'1'

   (14)带有exists,notexists运算符的子查询.不返回任何数据,只产生逻辑true,false.

       实例:

查询所有选修了'1'课程的学生姓名

       select学号,姓名

       from学生

            where exists

                    (select*from课程注册

                     where学号=学生.学号and课程号='1'

                     )   

触发器入门

创建一个简单的触发器

------------

触发器是一种特殊的存储过程,类似于事件函数,SQLServer"允许为INSERT、UPDATE、DELETE创建触发器,即当在表中插入、更新、删除记录时,触发一个或一系列T-SQL语句。

触发器可以在查询分析器里创建,也可

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2