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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/289143.html

(0)
上一篇 2022年9月13日
下一篇 2022年9月13日

相关推荐

发表回复

登录后才能评论