SQL server 建库建表建约束语句(自整理)

一、切换到系统数据库

/*****切换数据库*****/

use master
go -- 批处理

二、先检测数据库中是否已经存在需要创建的表 if exists

/*****指定位置新建文件夹*****/
exec xp_cmdshell 'mkdir E:\222',no_output -- 调用系统已存在的存储过程

/*****检测是否存在****/
-- 检测数据库
if exists (select * from sysdatabases where name = 'SQL')
-- 检测表,视图,存储过程,索引
if exists (select * from sysobjects where name = 'SQL')

/*****删除数据库******/
drop database SQL
go

/*****新建数据库******/

if exists(select * from sysdatabases where name = 'AAA')     -- 查询方法
drop database AAA                                                                 -- 如果返回有数据执行删除数据库
create database AAA                                                              -- 创建数据库
on primary                            
(
    name = 'aa.mdf',                         -- 数据库名称 *.mdf
    filename = 'E:\TTT\aa.mdf',        -- 保存路径
    size = 10mb,                               -- 初始大小
    maxsize = 100mb,                      -- 增长最大值
    filegrowth = 15%                        -- 增长率
)
log on                
(    
    name = 'aa.ldf'                           -- 日志文件名称 *.ldf
    ,filename = 'E:\TTT\aa.ldf'         -- 保存路径,基本同上
    ,size = 1mb
    ,maxsize =10mb
    ,filegrowth = 15%
)
go

三、创建 表 表名

/*****新建表******/

create table aaa
(
 -- 列名 类型 非空 主键 标识列(开始数,增长率)
    bb int not null primary key identity(1,1) ,  
    cc varchar(20) not null ,
    dd varchar(50) not null check (len(dd)>9),      -- 添加 检查约束 (值 = '' or and '值')
    ee nvarchar(20) not null default ('默认'),         -- 添加 默认约束    ('默认值')
    rr bit not null unique(rr),                                  -- 添加 唯一约束 (列名)
                                                                           -- 外键(列名)    来自哪个表的哪个(列名)
    oo int not null foreign key(oo) references aaa(bb) -- 添加 外键约束

go

select * from sql                 -- 查看表
insert into sql  values ('')    -- 插入数据 

/*****删除表***/
drop table sql
go

/*****创建视图******/
drop view vw_sql                    -- 删除试图
go

create view vw_sql                -- 创建视图
as                            -- 必须带as 结尾必须带go
                                -- T-SQL语句(各种子查询嵌套)            
    select sqll,sqql from sql
go

select * from vw_sql            -- 查看视图

/******创建索引******/
drop index sql.ix_sql            -- 删除索引

create clustered index ix_sql        -- 创建时指定是否聚集索引 clustered|noclustered 
on sql(ssql)                                   -- 创建表的时候指定了主键,则该列默认为聚集索引
with fillfactor = 20                         -- 聚集索引 速度比 非聚集索引快,比自动创建的快上一点点
go                                                 -- with 填充因子 0~100 基本不超过80

select * from sql         -- 利用索引查看信息
with(index = ix_sql)    -- with(index = 索引名) 查看后面可跟着条件 where

/******创建存储过程*******/
drop proc proc_sql     -- 删除存储过程
go

create proc proc_sql -- 创建存储过程
as
     -- T-SQL语句
    select * from sql
go

exec proc_sql         -- 查看存储过程


-- 无参的存储过程
create proc proc_sql1
as
    select * from sql
go
exec proc_sql -- 使用

-- 有参的存储过程
create proc proc_sql1
@error int = null                                        -- 输入参数
as
    declare @rro int                                    -- 定义变量
    select @rro = '查询得到的值' from sql where sqll = @error    -- 利用传进来的值作为条件筛选得到值再进行赋值 
    print cast(@rro as nvarchar(20))                    -- 打印输出,需要转换类型
go

exec proc_sql @error = '需要传进去的值' -- 使用

-- 有输出参数的存储过程
@err int output                                            -- 作为输出参数必须带有output关键字才正宗!
@error int = null                                          -- 输入参数
as
    select @err = '查询得到的值' from sql where sqll = @error   -- 输出参数接收查询得到的值,同时输入参数也需要在使用的时候赋值
go

declare @i int                                            -- 作为有性格的输出参数,必须先创建一个小弟来接收
exec proc_sql @error = '需要传进去的值',@err = @i output -- 使用
print @i                                                      -- 同时打印出输出参数


/********事务**********/
begin transaction    -- 开始事务
commit transaction    -- 提交事务
rollback transaction-- 回滚事务

/********定义变量*******/
declare @error int    -- 定义变量 declare @变量 类型 全局变量能自定义!一般情况下不需要!
print @error        -- 局部变量
print @@error        -- 全局变量

/********输出**********/
print ''            -- 以文本形式输出
select ''            -- 以表哥形式输出

/********赋值**********/
set                    -- 一般用于接收自定义的值
select                -- 用于接收查询出来后的值

/*****数据类型的转换****/
CAST(@error as nvarchar(10)) -- 都是用于转换类型
convert(int,@error)        -- 与sast区别在于时间类型,浮点类型 可以通过第三个参数指定转换后的样式例:convert(datetime,@error,120)

/*****if结构|while循环|case多分支*************/
if        -- 条件1 
else if    -- 条件2
else    -- 条件1,2不通过时进入

while -- 条件
break -- 直接跳出循环
continue -- 结束本次循环进入下一次循环

case 
    when -- 条件 
    then -- 条件成立时输出
    else -- 不成立的输出
end
-- 例:case when @error > 0 then '正确' else '错误' end
-- 可做为条件使用例:
-- (case when @error > 0 then 1 else 0 end = 0) or ~  若@error>0成立 输出1跟条件=0不相等则表示整个条件为假

/******子查询********/
--  我大子查询无处不在,能够配合增删改查一起使用
--  一般来说表连接都可以用子查询代替,但反过来却不一定

-- 子查询可以出现在select,from,group by,order by,having,update,insert,dalate中
-- select (子查询) 别名* from sql where sqll = (子查询) 以上的sql中都可以出现子查询

-- 当子查询得到返回的值不只一个的时候 = 可以替换成为 in(范围) 同样 not in 的意思表示不在范围里
-- select * from sql where sqll in (select 得到多个值 from sql where 条件)

-- exists 检测是否存在 not exists 取反的意思
--if exists (子查询)
--begin                -- 当子查询数据是存在的执行sql语句1,否则执行else
    -- SQL语句1
--end
--else
--begin
    -- SQL语句2
--end 


/*********其他*********/
begin -- 相当于括号的存在!()
end

go      -- 批处理 当写好一段T-SQL语句后带上这个可怜的娃。

as -- 或 空格 别名 一般列起别名 ‘列 as’ 表的话 就是 ‘表名 别名’ 中间间隔着一个空格

union -- 合并,把两个表的数据进行合并显示

raiserror -- 自定义错误信息 例:raiserror('错误信息显示',16,1),第二个参数表示级别0~18自定义19~25系统定义,状态分成1~255种

 

-- 两种方法输出信息
select '' 
print ''


-- 插入数据
insert into aaa(cc,dd)  -- 插入数据 表名(列名)
values ('','')            --              ('值')

-- 更新修改数据
update aaa                -- 更改数据 表名
set cc = ''                -- set 列名 = '值'
where rr = ''            -- where(条件)

-- 删除数据库信息
delete from aaa                -- 删除 表
where rr = ''            -- where (条件)
-- 删除数据库
use master
go
drop database aaa       -- 删除

-- like 模糊查询 _一个字符 % 多个字符 [1-9] 有范围的查找 [^1-9]不在范围里 
-- 多列合并 select 列 + '.' + 列 from 表
-- between 值 and 值  在--之间 加入not表示取反的意思
-- in(值1,值2,值3) 可能取得值 有点类似or

-- 约束方法
-- check (len() 控制长度 and 与(两个真) or 或(一个真) not 非(全是假) < 小于 > 大于 <> != 都表示不等于) 

-- 排序
-- order by (需要排序的列名) asc 顺序 desc 倒序 如果都不加入就等于是顺序排序
-- 分组
-- group by select count(*) from 表 group by sex 返回男女各有多少人--当看到题目要求‘每’的都需要分组查询
-- 先分组后排序
-- 分组筛选 having 条件  -- 先分组后筛选
-- 顺序为 where 分组 筛选  

-- 查询空值条件为 where is null

-- 限制返回的行数:select top 行数 列名 from 表名 
-- 限制返回提取20%值:select top 20 percent 列名 from 表名

-- 部分常用函数
-- 获取长度len() 
-- 更成大写upper() 
-- 清除空格ltrim()左边 pirim()右边 trim()左右 
-- 替换字符:replace('段落','段落中的值','更替的值')
-- 返回右边指定数目 pight('段落',数值)
-- 获取指定字符的起始位置 charindex('某字符','段落') 返回下标数 

-- 日期函数 dd日 mm月 yy年
-- 获取当前系统时间 getdate()
-- 日期的增加 dateadd(mm,4,'01/01/2009') 返回05/01/2009
-- 日期之间的相减 datediff(mm,'01/01/2009','05/01/2009')返回4
-- 得到日期的某一部分datepart(dd,getdate())返回当前天数
-- 得到某一天的日期用字符串表示 select dateame(DW,getdate()) 返回星期*

-- 数学函数
-- 随机数值 select right(rand(),4)  right右查询 left左查询
-- 绝对值 abs(-23) 取相反数 返回23
-- 次方 power(5,2) 返回值 25
-- 平方根 sqrt(9) 返回值3

-- 系统函数
-- 转换数据类型 convert(类型,值)
--                cast(值 as 类型)
-- sum() 函数 求和 select sum(列) from 表 返回某列的值相加后的结果
-- avg() 函数 平均值 同上类似,返回列的平均值
-- count() 函数 统计 同上类似,返回列的记录数
-- max() min() 最大值最小值

-- 内链接
-- inner join 表名 on 条件
-- 外链接
-- left join 表名 on 条件 左查询左边的表数据会全部查询显示
-- right join 表名 on 条件 同上左变右


 

转载于:https://my.oschina.net/Shilu/blog/781159

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server建库有两种方法,一种是使用SQL Server Management Studio图形化的管理工具,另一种是使用SQL语句的CREATE DATABASE来创数据库。 方法一:使用SQL Server Management Studio图形化的管理工具 1. 打开SQL Server Management Studio,并连接到SQL Server实例。 2. 在"对象资源管理器"中,右键点击"数据库"文件夹,择"新数据库"。 3. 在弹出的对话框中,输入数据库的名称、相应的设置和项,然后点击"确定"。 方法二:使用SQL语句的CREATE DATABASE语句 1. 打开SQL Server Management Studio,并连接到SQL Server实例。 2. 在"新查询"窗口中,输入以下SQL语句: CREATE DATABASE [数据库名称] 3. 点击"执行"按钮,即可创数据库。 需要注意的是,如果要在创数据库之前判断数据库是否存在并进行相应的处理,可以使用IF EXISTS语句进行判断,如果数据库存在则执行相应的删除操作,然后再创数据库。 引用资料: : <<引用:下面给大家分享下sql server建库建表约束技巧,下文介绍有文字有代码。 –创School数据库之前:首先判断数据库是否存在,若存在则删除后再创,若不存在则创– –exists关键字:括号里边能查询到数据则...。>> : <<引用:创数据的方式有两种: 使用SQL Server Management Studio图形化的管理工具,初学者常用。使用sql语句的CREATE DATABASE来创数据库。>> : <<引用: 创方法二 【语句】 并不是所有的情况都可以通过管理工具操作来创数据库,有时需要还需要执行sql语句来创数据库,这时就涉及到一些sql语句的知识。>>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值