Sql 学习笔记

醉酒当歌 提交于 2020-03-28 04:20:01

一、数据库的基本操作

1.      数据库的创建

If Exists(Select Name from SysDatabases Where Name='Gmis_2009')

Drop DataBase Gmis_2009

Go

Create Database Gmis_2009

On Primary

(

  Name=Gmis_2009_data,

  FileName='C:\program Files\Data\Gmis_2009.mdf',

Size=10MB,    

Filegrowth=1MB

),

Filegroup FileGroup_Gmis_2009_1

(

Name=Gmis_2009_data_1,

  FileName='C:\programFiles\Data\Gmis_2009_data_1.ndf',

  Size=2MB,

  MaxSize=10MB,     

  FileGrowth=1MB

),

(

  Name=Gmis_2009_data_2,

  FileName='C:\program Files\Data\Gmis_2009_data_2.ndf',

  Size=2MB,

  MaxSize=10MB,

  FileGrowth=1MB

),

FileGroup FileGroup_Gmis_2009_2

(

  Name=Gmis_2009_data_3,

  FileName='C:\program Files\Data\Gmis_2009_data_3.ndf'

),

(

  Name=Gmis_2009_data_4,

  FileName='C:\program Files\Data\Gmis_2009_data_4.ndf'

)

Log On

(

  Name=Gmis_2009_log,

  FileName='C:\program files\Data\Gmis_2009.ldf',

  Size=2MB

)

GO

创建数据库说明:

默认后缀为MB,如果主文件没设置那么Size就和model数据库主文件的Size相等,次要文件和日志文件如果没设置那么Size就默认为1MB,其中Name为文件的逻辑名称而FileName为文件的物理名称。FileGrowth自动增长。

 

2.     分离、附加数据库

2.1、分离数据库

Exec sp_detach_db  Gmis_2009

GO

格式: Exec sp_detach_db 要分离的数据库名称

 

       2.2、附加数据库

1>.sp_attach_db方法        

Exec sp_attach_db  Gmis_2009,'C:\program files\Data\Gmis_2009.mdf'      Go

格式:要附加的数据库名称 , 要附加数据库的主文件的路径

 

         2>.Create DataBase方法

            Create DataBase Gmis_2009

On Primary(FileName='C:\program files\Data\Gmis_2009.mdf')

For Attach

Go

格式: Create DataBase 要附加的数据库名称(附加的名称必须一致)  On Primary(FileName=主文件路径) For Attach

 

3.     收缩数据库

3.1收缩数据库

DBCC ShrinkDataBase(Gmis_2009, 是数据库收缩后的数据库文件中所要的剩余可用空间百分比。)

Go

       3.2收缩文件  格式:DBCC ShrinkFile(文件名称,收缩比例)

           DBCC ShrinkFile(Gmis_2009_data,10)

Go

4.     备份、还原数据库

4.1备份   

     4.1.1数据库的完整备份

         BackUp DataBase Gmis_2009 To

Disk=C:\Program Files\\BackUp\Gmis_2009.bak

      4.1.2备份数据库的日志文件

         BackUp Log Gmis_2009 To

Disk=C:\Program Files\ BackUp\Gmis_2009_log.bak

     4.1.3备份数据文件、组

             BackUp DataBase Gmis_2009 File=Gmis_2009_dataTo

Disk=C:\Program Files\BackUp\Gmis_2009_data.bak

 

4.2还原 

4.2.1还原数据库的完整备份

Restore DataBase Gmis_2009 From

Disk=C:\Program Files \BackUp\Gmis_2009.bak’

       4.2.2还原数据库的日志文件

            Restore Log Gmis_2009 From

Disk=C:\Program Files\\BackUp\Gmis_2009_log.bak

       4.2.3还原数据文件、组

            Restore DataBase Gmis_2009 File=Gmis_2009_dataFrom

Disk=C:\Program Files\BackUp\Gmis_2009_data.bak

 

   备份与还原格式:

1>.BackUp DataBase[Log] 数据库名称 

[File=file_name,FileGroup=filegroup_name] To Disk=‘路径’

2>.Restore DataBase[Log] 数据库名称

        [File=file_name,FileGroup=filegroup_name]  From Disk=‘路径

 

5.     脱机、联机数据库

5.1脱机数据库

Alter DataBase Gmis_2009 Set OffLine With Rollback Immediate

5.2联机数据库

Alter DataBase Gmis_2009 Set OnLine   With RollBack Immediate

6.     删除数据库

Drop DataBase Gmis_2009 删除Gmis_2009数据库

Drop DataBase Gmis_2009,Test删除多个数据库

7.     修改数据库

7.1、修改数据库名称

Alter DataBase Gmis_2009 Modify Name=Gcms_2009      

        7.2、 修改文件组名称

Alter DataBase Gmis_2009

Modify FileGroup FileGroup_Gmis_2009_2 Name=FileGroup_Gmis_2009_3

         7.3、修改文件逻辑名称(逻辑名称Name,物理名称FileName) 

Alter DataBase Gmis_2009

Modify File(Name='Gmis_2009_data',NewName='Gcms_2009_data')

         7.4、修改数据库文件配置

Alter DataBase Gmis_2009 Modify File(Name='Gmis_2009_data',Size=11MB)

          7.5、删除数据库中的文件、组      

            Alter DataBase Gmis_2009 Remove File Gmis_2009_data_4

修改数据库删除文件|组格式:

Alter DataBase Gmis_2009

Remove File file_name(逻辑文件名)[FileGroup=filegroup_name]

               

二、数据库中的数据表与字段

1.    创建数据表

If Exists(Select * From SysObjects Where Name='Gmis_Test' And Xtype='U')

Drop Table Gmis_Test

Go

Create Table Gmis_Test

(  MoCode Int Identity(1,1) PriMary Key,

Test_1_1 VarChar(200),

   Test_1_2 DateTime

)

 

2.    修改数据表

  2.1、添加带有约束条件的字段

    Alter Table Gmis_Test Add Test_1_3 Int Not Null  Default 0 Check(Test_1_5>0)

 

  2.2、当表中有数据时,添加带有默认值的字段

    Alter Table Gmis_Test Add Test_1_5 DateTime Null Default GetDate() With Values

 

2.3、修改字段

   Alter Table Gmis_Test  Add Test_1_4 VarChar(200) Null(添加字段方便修改演示)

 

   Alter Table Gmis_Test Alter Column Test_1_4 Int Not Null(修改字段类型时,如果有值那么值的类型要能转换成要改变之后的数据类型,且不能有默认值)

 

2.4、删除字段

    Alter Table Gmis_Test Drop Column Test_1_3

3.    删除数据表

3.1、删除当前数据库中的表

     Drop Table Gmis_Test

3.2、删除另外数据库中的表

      Drop Table Gmis_2009..dbo.Gmis_Test

      Drop Table Gmis_2009..guast.Gmis_Mo_10

三、视图

1.     创建视图并且视图的列的列名按括号中的名称显示

If Exists(Select * From Sysobjects Where Name=’userViewState’And Xtype=’V’)

Drop View userViewState

Go

Create View userViewState(用户编号,用户名,密码,状态)

[With Encryption]        加密,在用sp_helptext查看视图文本的时,加密了看不到文本

As

Select MoCode,fld_11_1,fld_11_2,(Select fld_12_1 From Gmis_Mo_12 Where Mocode=fld_11_3) as fld_11_3 From Gmis_Mo_11

Go

Select * From userViewState

2.     修改视图

Alter View userViewState

……

3.     删除视图

Drop View userViewState

……

4.     查看视图

Exec sp_helptext 视图名称        查看视图文本

四、存储过程

    存储过程的使用数据

        If Exists(Select * From SysObjects Where Name='Gmis_Mo_13' And Xtype='U')

    Drop Table Gmis_Mo_13

    Go

    Create Table Gmis_Mo_13

    ( 

  MoCode Int Identity Primary Key,

    fld_13_1 VarChar(200),

    fld_13_2 float,

    fld_13_3 int

    )

    Go

    Insert Into Gmis_Mo_13 Values('长江七号',20,1)

    Insert Into Gmis_Mo_13 Values('蜡笔小新',17,2)

    Insert Into Gmis_Mo_13 Values('笔记本电脑',5000,3)

    Insert Into Gmis_Mo_13 Values('手机',2000,3)

    Insert Into Gmis_Mo_13 Values('溜溜球',10,1)

    Insert Into Gmis_Mo_13 Values('名侦探柯南',30,1)

    Insert Into Gmis_Mo_13 Values('老虎',210000,4)

    Insert Into Gmis_Mo_13 Values('熊猫',2000000,4)

    Select * From Gmis_Mo_13

    Go

1.     创建存储过程

If Exists(Select * From SysObjects Where Name='up_Table_Select' And Xtype='P')

Drop Procedure up_Table_Select

Go

Create Procedure up_Table_Select

@Mocode VarChar(4) ='%'

as

Begin

   If(@mocode='%')

     Begin

     Select * From Gmis_Mo_13 Where Cast(MoCode as VarChar(20)) like '%'

End

   Else

Begin

     If Exists(Select * From Gmis_Mo_13 Where MoCode=@Mocode)   

         Begin

             Select * From Gmis_Mo_13 Where MoCode=@Mocode

         End

                Else

         Begin

             print '不存在此数据'

         End

End

End 

Go      

2.     修改存储过程

Alter Procedure up_Table_Select

……

3.     删除存储过程

Drop Procedure up_Table_Select

4.     执行存储过程

4.1执行带参数但不传值的存储过程(参数就一定要带有默认值)

         Exec(Execute)  up_Table_Select 

    4.2、执行带参数的成熟过程

        Exec(Execute)  up_Table_Select 8 

 

5.     查看存储过程的文本       格式:sp_helptext  存储过程名

Exec sp_helpText up_Table_Select

6.     动态Sql(重点)

……

 

五、数据库用户的管理(重点)

1.     创建与删除用户登录  

1.1、创建用户       

     Exec sp_addlogin Gmis,Gmis,Gm is_2009       创建一个新的用户Gmis登录,密码为Gmis默认登录数据库为Gmis_2009

格式:sp_addlogin登录名称,登录密码,登录默认数据库(没写就默认为Master数据库)

 

1.2、删除用户       

     Exec sp_droplogin Gmis   删除用户,阻止使用此登录名称访问Sql Server 

格式:sp_droplogin  登录用户名称

 

2.     创建与删除用户帐户

2.1、创建用户帐户         

     Exec sp_adduser Gmis,Gcms       为当前数据库中的用户添加帐户

格式:sp_adduser  登录名称  【帐户名称[,角色名称]

 

2.2、删除用户帐户   

     Exec sp_dropuser Gcms          从当前数据库用户中删除帐户

格式:sp_dropuser       帐户名称

 

3.     创建与删除固定服务器角色

3.1、创建固定服务器角色

     Exec sp_addsrvrolemember  Gmis,sysadmin

格式:sp_addsrvrolemember添加到固定服务器的登录名称,固定服务器的角色名称   

3.2、删除固定服务器角色

     Exec sp_dropsrvrolemember  Gmis,sysadmin        Gmis中固定服务器角色成员中删除

格式: 要从固定服务器角色删除的登录的名称,固定服务器的角色名称

 

4.     创建与删除数据库角色

4.1、创建数据库角色   

     Exec sp_addrole  gust,Gmis  在当前数据库中创建新的Sql Server角色

格式:sp_addrole  新角色名称,新角色的所有者(默认值为dbo,值必须为当前数据库的用户或某个角色)

 

4.2、删除数据库角色

        Exec sp_droprole gust        在当前数据库中删除Sql Server角色

    格式:sp_droprole  要删除的当前数据库的角色名称

 

5.     创建与删除数据库中的Sql Server角色中的安全帐户

5.1、创建(将安全帐户作为当前数据库中现有Sql  Server数据库角色的成员进行添加.)

Exec sp_addrolemember gust,Gcms  将安全帐户作为当前数据库中现有Sql Server数据库角色的成员进行添加。

格式:sp_addrolemember  角色名称,添加到角色的安全账户名称

 

5.2、删除(从当前数据库中的Sql  Server角色中删除安全帐户)        

Exec sp_droprolemember gust,Gcms     从当前数据库中的Sql  Server角色中删除安全帐户

格式:sp_droprolemember 角色名称,从角色中删除的安全账户名称

 

六、针对用户的权限进行分配

1.     授予权限(当前数据库中的用户得以处理当前数据库中的数据或执行特定的Sql 语句)

   格式:grant 权限|[on [|视图…]] to 安全帐户(角色|用户)

grant select on score to gust      --授予角色对表中数据的某些权限(对固定的表(sorce)只能查、增、删、改的权限)

grant select on Gmis_Mo_11 to gust

grant create table to gust,Gcms    --授予角色创建表的权限同时就赋予了角色对这个表进行操作(增、删、改、查)的权限

grant create procedure to Gcms,gust --授予角色创建存储过程同时也赋予了角色对存储过程进行操作的权限

 

 

2.     禁止权限(拒绝给当前数据库内的安全帐户授予权限并防止安全帐户通过其组或角色成员资格继承权限) 

    格式:deny 权限 to 安全帐户(角色|用户)

deny all to Gcms   拒绝所有适用的权限.

 

3.     撤销权限(删除以前在当前数据库内的用户上授予或拒绝的权限)   

   格式:revoke 权限  on   to/from 被撤销权限的安全帐户(角色|用户)

revoke create table, create view from Gcms, Gcms1撤销授予多个用户的多个权限

revoke create procedure to Gcms,gust  

revoke create table to Gcms   

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!