数据库sql_(二)

************************************************************************
创建库
use master
go
if exists(select * from sysdatabases where name='库名')   //检查系统数据库中是否有你要新建的数据库
drop database 库名       //如果有则删除数据库 
go
create database 库名
on primary
(
name=库名_mdf,
filename='路径\库名.mdf',
size=10mb,     //数据库初始值大小
maxsize=unlimited,    //能增长的最大值
filegrowth=15%     //增长百分比
)
log on
(
name=库名_ldf,
filename='路径\库名.ldf',
size=3mb,
maxsize=30,
filegrowth=15%
)

 

USE master  --设置当前数据库为master,以便访问sysdatabases表

************************************************************************
创建表  建标识列   建主键  建外键  建约束

create table 表名
(
 列名 int identity(1,1) not null primary key,     --建立标识列  建立主键
 列名 varchar(50) not null,       
 列名 varchar(18) not null unique check (len(列名)=15 or len(列名)=18),  --建立唯一约束  该字段长度为15 或者 18
 列名 varchar(13) not null check(列名 like '____-________' or len(列名)=11 or 列名 like '___-________'),     --建立约束
 列名 varchar(255) default('地址不详')   --设定默认值
 列名 varchar(20) not null foreign key references 引用主键表(引用字段名)   --建立外键
)


Create table Stu  ---创建表
括号内是定义的字段(
     int           --数据类型
 not null             --该列不允许null值
 identity(1,1)  --标识列
 unique   --唯一约束
 primary key   --建立主键
 primary key (字段名,字段名)    --建立联合主键
 foreign key references 引用主键表(引用字段名)  --建立外键

************************************************************************
为既有的表添加列
Alter table  表名 --修改表结构
Add(列名  int  null --添加新列
)
************************************************************************
修改列定义
Alter table Stu --修改表结构
Alter column stuName nchar(1) null --修改表中具体的字段
Alter table Stu
Alter column stuName varchar(50) not null   --改变列的大小
************************************************************************
删除表中的列
Aleate table 表名 --修改表
Drop column 列名 --删除表中指定要删除的列(包括存储在其中的数据)
************************************************************************
创建联合主键
Create table(
 stuid int not null,
 stuType int not null,
 constraint PK_id --创建约束,名字为PK_id
 primary key(stuId,stuTypeid)     --指定stuId,stuTypeid为组合主键
)
*****************************************************************************************
为既有表添加主键
Alter table Stu
Add constraint PK_id --添加约束
Primary key(stuId)
******************************************************************************************
创建一个有外键引用的表
Create table stu(
 stuId int not null primary key,
 stuName nchar(4),null,
 constraint FK_id --创建表约束 FK_id
 foreign key(stuId) --当前表中的主键列
 references stu1(empid) --要被引用的表名和主键名

)
******************************************************************************************
为既有表增加外键
Alter table stu --修改表结构
Add constraint FK_id --添加约束,名称为FK_id
Foreign key (stuid)  --当前表中的主键列
References stu(stuid) --要被引用的表名和主键名
******************************************************************************************
在创建表的时候使用标实列
Create table stu(
 stuid int not null identity(1,1)  --创建标实列设置种子

)
******************************************************************************************
Check约束用语定义
Check约束用语定义列允许的格式和值。如果check的逻辑表达式计算为TRUE,行就会被插入。如果CHECK约
束的表达式计算为FALSE,行插入就会失败。
列如:
Create table stu(
 stuid int not null,
 check(stuid like
‘%@%’)
)
*************************************************************************************************
为既有表添加check约束
Alter table stu
Add constraint ck_id
Check(stuid like
'%@%')
*************************************************************************************************
T-SQL语句(增.删.改.查)
insert into 表名(字段名,字段名,字段名字段名) values('','','','')   --增加数据
insert into 表名(列名) select (源表字段) from (源表名)     --将源表中的字段复制到表中的列里
select (列名) into (新表名) from (源表名)      --将源表中的列复制到自动建立的新表中   (新表自动建)
select identity(数据类型,标识种子,递增量) as 列名  into (新表名) from (源表名)     --向新表中插入数据时  新表建立标识列
{
insert into 表名(字段名,字段名,字段名字段名) 
select '','','' union   
select '','','' union         --一次插入多行数据   
select '','',''
}
update 表名 set 字段名=更新值 where 更新条件      --修改数据
delete from 表名 where 删除条件        --删除数据(只能删除表中数据)
order by (需要排序的列名) ASC 或 DESC       --升序或降序(默认是升序)
查询空行时候 where 条件采用  is null 或 is not null
查询返回行数    top
group by 分组
***********************************************************************************************
常用函数
getdate  --取得当前系统时间
***********************************************************************************************
事务处理
begin transaction     (开始事务)
declare @xiugai int  (申明一个变量  用来储存错误)
set @xiugai=0     (赋值为0)
update cardInfo set pass=123456 where cardID='1010 3576 1234 5678'
set @xiugai=@xiugai+@@error (获取该段T-SQL语句错误号) 
update cardInfo set pass=123123,IsReportLoss='是' where cardID='1010 3576 1212 1134'
set @xiugai=@xiugai+@@error (获取该段T-SQL语句错误号)
if @xiugai<>0   (如果T-SQL语句有错误 那么事务失败)
begin
print '事务失败,回滚事务'
rollback transaction  (回滚事务)
end
else
begin
print '事务成功,提交事务'
commit transaction  (提交事务)
end
go
print '查看转帐细节'
***********************************************************************************************
创建索引
if exists(select * from sysindexes where name='IX_cardInfo_cardID')  查询系统数据库中是否有该索引  
drop index cardInfo.IX_cardInfo_cardID      删除系统数据库中的该索引
go  
--索引分类
--unique    唯一索引
--nonclustered   非聚集索引(重复索引)
--primary 主键索引
--with fillfactor  填充因子
create nonclustered index IX_transInfo_cardID   --索引名常规格式(IX_表名_字段名)    --创建索引   
on transInfo(cardID)     --表名(创建索引的字段名)
with fillfactor = 70     --填充因子为70%
select * from dbo.transInfo with(index=IX_transInfo_cardID)   --利用索引创建查询T-SQL语句
where cardID='1010 3576 1212 1134'
***********************************************************************************************
创建视图
if exists(select * from sysobjects where name='view_userInfo')      --查询系统数据库中是否有该视图
drop view view_userInfo        --删除系统数据库中的该视图
GO
create view view_userInfo       --创建视图
as
 select * from userInfo
***********************************************************************************************
创建存储过程
if exists(select * from sysobjects where name='proc_takeMoney')   --查询系统数据库中是否有该存储过程
drop proc proc_takeMoney       --删除系统数据库中的存储过程
go
create proc proc_takeMoney       --创建存储过程
 @card varchar(20),@money money,@type varchar(4),@inputPass int  --创建参数
as


EXEC proc_takeMoney         --调用存储过程

 

 

 

 

 

 

 


 

你可能感兴趣的:(数据库,database,Go)