ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQLServer第一章:数据库和表的创建

2022-09-13 00:30:08  阅读:207  来源: 互联网

标签:删除 -- 创建 数据库 SQLServer 和表 约束 外键


select查询 这里指查询数据库版本信息。作为验证数据库是否安装完成。
select @@VERSION  --查询表的版本信息,--是单行注释  /*这种是多行注释*/

T-SQL:微软在遵守SQL标准的基础之上,对sqlserver数据库做的扩展(例如 IF 和 WHILE)

1、sys.databases:数据库
2、sys.objects:表,视图,存储过程
3、sys.indexes:索引
索引数据库名称需要用master.dbo.sysdatabases

后面在讲索引是什么意思,这里就理解为查找就可以了。

一、创建数据库

在创建数据库之前先判断数据库是否存在,如果已经存在是无法创建的,需要删除在创建。

exists【存在】 查询到表  用dbo.sysobjects来索引数据库

if exists(select * from sys.databases where name='NetBarDB')--也可以用dbid=db_ID('NetBarDB')一样的只是不好记,习惯用name='NetBarDB'
    begin  --开始相当于{
        use master                    --使用 系统master数据库
        alter database NetBarDB            --更改alter 数据库database 数据库名称NetBarDB
        set single_user                --设置数据库为SINGLE_USER【单个用户】模式,减少锁定时间 
        --一般很快, 但有时数据库可能有人在链接,就会很慢;可以加上一个with rollback immediate, 将未提交的修改立刻回滚 
        with rollback immediate        --立即断开所有连接;with【跟,和...一起】rollback 【回滚,恢复到初始状态】immediate【立刻,马上】
        drop database NetBarDB  --删除数据库drop database 数据库名,为了避免数据库还在使用状态无法删除,所以要加上上面的代码
    end       --结束相当于}        --drop【使降落,减少】语句将表所占用的空间全部释放,达到删除空间的效果

create database NetBarDB    --创建数据库create database 数据库名
go    --批处理(数据库无法自动运行下一句代码,需要加go来继续代码的运行)
use NetBarDB                --打开数据库
go

重新创建一个数据库到这里结束,其实不需要判断,可直接use数据库名打开数据库也可以避免删除会丢失数据,在原有的数据库做数据更改,视情况而定。

二、创建表

创建表也是一样有同名的表,需要删除才能创建,可是有点表添加了外键约束无法删除,所以删除表时有时候需要,查询当前表外键约束来源。需要删除外键约束才能删除表。

什么是约束?后面在细说,比如主键有个递增效果,这个就是主键约束。外键约束就可以将两个表连接起来的关键字段。
查询表的外键信息,比如说可以查询到当前表【PCInfo】被哪些表加了约束(约束名,ID,表名)都查出来。

select FK.name,FK.object_id,object_name(FK.parent_object_id) as referenceTableName --查询三个字段外键的键名,id ,约束表名:指被哪个表设置了外键约束。
from sys.foreign_keys as FK 
join sys.objects as O on FK.referenced_object_id=O.object_id
where O.name = 'PCInfo'  --PCInfo是取的表名,指需要查询的表名

创建表

alter table 约束的表名 drop constraint 约束名;  ----可以用来删除掉相应表的约束,表名(referenceTebleName查到的信息),约束名(name得到的信息,每次查都会发生变化,这个是随机改变的)。

if exists(select * from sys.objects where name='PCInfo')
    begin
        alter table recordInfo drop constraint FK__recordInfo__PCId__619B8048; --这里删除约束是因为存在外链约束,FK__recordInfo__PCId__619B8048约束的键名上面查询到的,随机改变需要查复制粘贴过来。
        drop table PCInfo    --删除表:drop table 表名
    end
--创建表:create table 表名
create table PCInfo              
(
    PCId int primary key identity,    -- primary key 主键 identity(1,1) 自增不写括号数字默认1,1;意思是1开始后面的每个加1;
    PCUse int not null default 0,   -- int整数类型;not null不为空;default 设定默认值为0;
    pcsex char(10) ,                    --这种是可以为空不用传值也不报错
    PCNote varchar(50) not null default '这个是默认值',
    PCScore int not null default 60   --得分 默认60分及格,最后一个字段不需要加英文逗号
)

创建一个外键约束表做演示

if exists(select * from sys.objects where name='recordInfo')
    begin
        drop table recordInfo --这里没有创建外键约束,可以直接删除。
    end
create table recordInfo
(
    recordId int primary key identity,
    PCId int references PCInfo(PCId) not null, --设置外键约束
    beginTime datetime default getDate(),
    endTime datetime,
    free int check(free>0)
)
--语句最后一句代码结束可以不用加逗号;表结束不需要加go也可以自动执行下面代码
select *from PCInfo
select *from recordInfo

标签:删除,--,创建,数据库,SQLServer,和表,约束,外键
来源: https://www.cnblogs.com/longxinyv/p/16687508.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有