• 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
  • 相关阅读:
    iOS sqlite数据库使用
    vsts 自动部署到Azure
    中国区的Azure添加到 VSTS 的 Service Endpoint
    修改vs17中的cordova模板
    升级vs17中的cordova-simulate
    cordova 从xcode7迁移到xcode8
    自杀程序&递归删除目录
    如何升级cordova插件
    在ubuntu on windows 上安装jekyll
    gitphp日期乱码解决方案
  • 原文地址:https://www.cnblogs.com/longxinyv/p/16687508.html
Copyright © 2020-2023  润新知