Maison > Article > base de données > 数据库sql
************************************************************************ 创建库 use master go if exists(select * from sysdatabases where name='库名')//检查系统数据库中是否有你要新建的数据库 drop database 库名//如果有则删除数据库 go create
************************************************************************
创建库
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 @xiugai0 (如果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 --调用存储过程