SQL数据库基础操作语法总结

SQL数据库基础操作语法总结

 

说明:

{ }表示括号里的内容是必写的,用[ ]表示括号里的内容可写可不写;用<>表示在实际编写语句时可以用相应的内容代替;用A|B表示AB的意思(只能选一个);用[,...n]表示重复前面的内容。

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

一、对数据库操作

1.创建数据库

基本语法格式:

CREATE DATABASE 数据库名

[ON

{[PRIMARY ]

(NAME=逻辑文件名,

FILENAME=’操作系统下的文件名和路径

[,SIZE=文件初始容量]

[,MAXSIZE={文件最大容量|UNLIMITED}]

[,FILEGROWTH=文件的增量])

}[ ,...n ]

]

[LOG ON

{(NAME=逻辑文件名,

FILENAME=’操作系统下的文件名和路径

[,SIZE=文件初始容量]

[,MAXSIZE={文件最大容量|UNLIMITED}]

[,FILEGROWTH=文件的增量])

}[ ,...n ]

]

示例:

create database StuInfo

on primary

(

name = StuInfo,filename='E:/作业练习/SQL Server/2/StuInfo.mdf',

size =3MB,

maxsize =10MB,

filegrowth=1MB

)

 

log on

(

name = StuInfo_Log,

filename = 'E:/作业练习/SQL Server/2/StuInfo_Log.Ldf',

size = 1MB,

maxsize = 5MB,

filegrowth=1MB

)

Go

2.显示数据库信息

基本语法格式:

SP_HELPDB 数据库名

3.扩充数据库容量

基本语法格式:

ALTER DATABASE 数据库名

    MODIFY FILE

(NAME=逻辑文件名,

[,SIZE=文件初始容量]

[,MAXSIZE={文件最大容量|UNLIMITED} ]

[,FILEGROWTH=文件增长幅度]

)

示例:

ALTER DATABASE NewSales

MODIFY FILE

(NAME=’NewSales’,SIZE=8MB)

GO

4.重命名数据库

语法格式:

SP_RENAMEDB ‘数据库原名’,’数据库新名

5.删除数据库

语法格式:

    DROP DATABASE 数据库名{,...n}

6.分离数据库

语法格式:

    SP_DETACH_DB ‘数据库名’[,[@skipchecks=]’skipchecks’]

示例:

EXEC SP_DETACH_DB ‘NewSales’,’true’

 

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

 

二、对数据表操作

1.创建表

语法格式:

CREATE TABLE[[数据库名.]表所有者.]表名

    (列名  列的属性[,...n])

示例:

USE Sales

CREATE TABLE Sell

(

销售编号 int not null primary key IDENTITY(1,2),--主键,自动增长,1开始2增量

商品编号 int not null references Goods(商品编号),--设外键(方法一)

数量 int not null check( 数量>0 and 数量<0 ),--核查约束

售出时间 DateTime not null Default(getdate()),--默认时间

售货员工编号 char(6) not null,

--设外键(方法二)

    Constraint FK_Sell_Employees FOREIGN KEY (售货员工编号) REFERENCES Employees(编号)

)

GO

2.()用约束

/启用约束语法格式:

ALTER TABLE 表名

CHECK/NOCHECK CONSTRAINT 约束名

 

3.查看表属性

语法格式:

EXECUTE SP_HELP 表名

4.添加列:

示例:

alter table employees

add 邮箱 varchar(30)

5.修改列:

示例:

alter table employees

alter column 邮箱 varchar(20)

6.删除列:

示例:

alter table employees

drop column 邮箱

7.重新命名表

语法格式:

EXECUTE SP_RENAME ‘旧表名’,’新表名

8.删除表

语法格式:

    DROP TABLE employees

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

9.插入数据

语法格式:

INSERT [INTO] 目标表名

    [(字段列表)]

        {VALUES({DEFAULT | NULL | 表达式} [,...n] ) | 执行语句}

示例:

insert into employees (编号,姓名,性别)  --当只插入部分字段的值时,像这样标明字段标识出来.

values ('1304','李明',1)                --假如编号为自动增加,则应省去输入'1304',

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

--或者这样插入全部字段数据.假如还缺一个字段"销售部"

insert into employees values ('1304','李明',1,'销售部')

10.修改数据

语法格式:

UPDATE 目标表名

    SET{列名={表达式 | DEFAULT | NULL }[,...n] }

    { [FROM]{<源表名>}[,...n]}

    [WHERE <搜索条件> ]

示例1:

UPDATE Employees

SET 电话='07713836386'

WHERE 编号='1304'

示例2:

UPDATE Goods

    SET Goods.零售价=Goods.零售价*0.95

    FROM Goods,Employees

    WHERE Goods.进货时间=’2005-5-20’AND Employees.姓名=’李明
    AND Employees .
编号=Goods.进货员工编号

11.删除数据

语法格式:

DELETE [FROM] 目标表名

    [FROM 源表名]

         [WHERE {搜索条件}]

示例:

DELETE FROM 电话 where 编号='1304'

 

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

 

三、设置表约束

//当需要添加多个约束时,只需要一个add关键字就可以了.

--添加主键约束

use sale

go

alter table goods

add constraint PK_GoodsNo primary key (商品编号)

 

--添加外键约束

use 数据库名

go

alter table 表名

add constraint 外键约束名 foreign key (列名)

references 被关联的表名(列名)

 

--设置唯一值.

use sale

alter table employees

add constraint IX_EmployeesName2 unique (姓名)

 

--设置核查约束.

use sale

alter table employees

add constraint CK_EmployeesDep check (部门='财务部'or 部门='库存部'or 部门='销售部'or 部门='采购部')

 

--设置默认值约束,使表格自动记录下输入数据时的时间.

use sale

alter table goods

add constraint DF_GoodsDate Default (getdate ()) for 进货时间

 

--自动编号的方法(1是始量,2是增量)???

use sale

alter table goods

alter column 商品编号 char(8) not null identity(1,2)

 

--查看约束(sp_helpconstraint 不是随意设置的)

use sale

go

exec sp_helpconstraint employees

go

 

 

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

 

三、数据库的查询

1.Select 语句基本格式:

    Select [ All | Distinct ]

           [ Top n [Percent] [ With Ties ] ]

           列名

    <列名>::=

        {  *

           | { 表名 | 视图名 | 表的别名 }.*

           | { 列名 | 表达式 | Identitycol | Rowguidcol }

           | 别名 = 表达式

}

[,...n]

2.使用通配符“*”,返回所有列值

  示例:

    Select  *  From employees

3.使用Distinct关键字消除重复记录

  示例:

    Select Distinct 生产厂商 From goods

4.使用Top n( Percent )指定返回查询结果的前n(个百分比)记录

  示例1

    Select Top 4 商品名称,进货价,数量 From goods

  示例2:

    Select Top 30 Percent商品名称,进货价,数量 From goods

5.使用列别名改变查询结果中的的列名(三种方法)

  示例:

Select 编号 AS number, name=姓名, 电话 telephone From employees

6.使用表达式

  示例:

    Select 商品名称,进货价*数量 AS 总金额 From goods

7.Like关键字

  示例:

    Select * From employees Where 姓名 Like ‘%’

  说明:

    _ 代表任意一个字符(有些数据库使用*)

    % 代表任意长度的字符串

[ ] 代表某个字符的取值范围,:[a-e]指集合[abcde]内的任何一个字符

[^] 取非,与上相反.

8.Between关键字

  示例:

    Select 商品名称,零售价 From goods Where 零售价 Between 2000 And 3000

9.In 关键字

  示例:

    Select 商品名称,零售价 From goods Where 商品名称 In(‘打印机’,’摄像机’,’照相机’)

10.Null 关键字

  示例:

    Select * Form employees Where 电话 Is Not Null

11.Order By 子句

  语法格式:

    Order By 列名列表 [ Asc | DESC ]

  示例:

    Select 商品名称,进货价 From goods Order By 进货价 Desc

  说明:Order By 后什么都不写的时候,默认选择Asc

12.Into 子句

  语法格式:

    Into 新表名

  示例:

    Select Top 15 Percent 商品名称,进货价*数量 AS 总金额 Into 金额表

13.聚合函数

    (暂略)

14.多表联接查询

    (暂略)

 

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

 

四、视图

1.语法格式:

    Create View [<数据库名>.][<所有者>.] 视图名 [ (列名 [,...n]) ]

        [ With { Encryption | Schemabinding | Veiw_Metadata } ]

    AS

    Select 查询语句

    [ With Check Option ]

  说明:

    (暂略)

示例1:

    Create View v_sales1

    As

    Select 销售编号,sell.商品编号,sell.数量,商品名称,编号,姓名

    From sell,goods,employees

    Where goods.商品编号=sell.商品编号

    And   goods.进货员工编号=employees.编号

    And   goods.姓名=’赵飞燕

 

 

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

 

 

五、存储过程

1.语法格式:

    Create Proc[edure] [所有者.] 存储过程名 [;整数]

        [ {@参数 数据类型} [Varying] [=默认值] [Output] ][,...n]

        [ With { Recompile | encryption | Recompile,Encryption | Execute_As_Clause } ]

            [For Replication]

        As

        { SQL语句[,...n] | External Name assembly_name.class_name.method_name }

  说明:

    (暂略)

示例1:

Sales数据库中建立一个名为proc_find的存储过程,如果查询到指定的商品,则用RETURN语句返回1,否则返回0

--创建存储过程

create proc proc_find

@spmc char(20)

as

if exists (select * from goods

where 商品名称=@spmc)

  return 1

 else

  return 0

--执行存储过程

declare @i int

exec @i=proc_find '打印机'

select @i as 返回值

示例2:

Sales数据库中建立一个名为date_to_date_sales的存储过程,该存储过程将返回在两个指定日期之间的所有销售记录。

create proc date_to_date_sales

@d1 datetime ,@d2 datetime

as

select * from sell

where 售出时间 between @d1 and @d2

 

exec date_to_date_sales '2004-1-1','2005-1-1'

 

 

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

 

 

六、触发器

1.语法格式:

    Create Trigger 触发器名称

    On { All Server | Database }

    [ With Encryption | Execute As Clause [,...n] ]

    { For | After } { 事件名称 | 事件分组名称 } [,...n]

    As { SQL语句 [ ; ] [,...n] | External Name assembly_name.class_name.method_name [ ; ] }

示例1:

Sales数据库中,创建触发器tri_ReportGoods,当商品库存低于5件时发出库存量少请求进货的提示信息。

create trigger tri_ReportGoods

on sell

for insert

as

declare @sbh char(6),@smc char(20),@sysl int

select @sbh=inserted.商品编号,@smc=商品名称

  from inserted join goods on inserted.商品编号=goods.商品编号

Select @sysl=goods.数量-isnull(sum(sell.数量),0)

  from goods left join sell on goods.商品编号= sell.商品编号

  where goods.商品编号=@sbh

  GROUP BY goods.商品编号,goods.数量

if @sysl<5

  print @smc+'的库存少于5件,请及时进货'

 

--测试触发器

insert into sell

values('2',2,'2009-12-1','1301')

 

示例2:

Sales数据库中,创建触发器tri_GoodsCount,当商品销售之后,相应的库存要有所变化。

create trigger tri_GoodsCount

on sell

for insert

as

declare @sbh char(6),@sl int

select @sbh=inserted.商品编号,@sl=inserted.数量

  from inserted join sell on inserted.商品编号=sell.商品编号

update goods

set 数量=数量-@sl

where goods.商品编号=@sbh

 

--测试触发器

insert into sell

values('2',2,'2009-12-2','1301')

select * from goods

示例3:

更改tri_ReportGoods触发器,当商品库存低于10件时才发出库存量少请求进货的提示信息,并对触发器定义文本进行加密。

alter trigger tri_ReportGoods

on sell

WITH ENCRYPTION

for insert

as

declare @sbh char(6),@smc char(20),@sysl int

select @sbh=inserted.商品编号,@smc=商品名称

  from inserted join goods on inserted.商品编号=goods.商品编号

Select @sysl=goods.数量-isnull(sum(sell.数量),0)

  from goods left join sell on goods.商品编号= sell.商品编号

  where goods.商品编号=@sbh

  GROUP BY goods.商品编号,goods.数量

if @sysl<10

  print @smc+'的库存少于10件,请及时进货'

示例4:

Sales数据库中,创建一个DDL触发器,以防止表的删除。

create trigger tri_ddl

on database

for drop_table

as

  print '不能删除该数据库中的表。'

  rollback

--测试触发器

drop table dbo.aa

示例5:

创建一个DDL触发器,保护当前服务器中的所有数据库不能被修改。

create trigger tri_alter_database

on all server

for alter_database

as

  print '不能修改该数据库。'

  rollback


以上代码未经过有效测试,详情可到我的CSDN下载中心下载相关文档及测试项目压缩包。

 

其他下载链接:http://dl.dbank.com/c0s6okw36p

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值