SQL Server 数据库基础编程详解

目录
  • go批处理语句
  • 使用、切换数据库
  • 创建、删除数据库
    • 方法1、
    • 方法2(设置文件大小)、
  • 基本数据类型
    • 判断表或其他对象及列是否存在
      • 创建、删除表
        • 给表添加字段、修改字段、删除字段
          • 添加、删除约束
            • 插入数据
              • 查询、修改、删除数据
                • 备份数据、表
                  • 利用存储过程查询表信息
                    • 总结

                      go批处理语句

                      用于同时执行多个语句

                      使用、切换数据库

                      use master
                      go

                      创建、删除数据库

                      方法1、

                      --判断是否存在该数据库,存在就删除
                      if (exists (select * from sys.databases where name = 'testhome'))
                          drop database testhome
                      go
                      --创建数据库,设置数据库文件、日志文件保存目录
                      create database testhome
                      on(
                          name = 'testhome',
                          filename = 'c:\data\students.mdf'    
                      )
                      log on(
                          name = 'testhome_log',
                          filename = 'c:\data\testhome_log.ldf'
                      )
                      go

                      方法2(设置文件大小)、

                      if (exists (select * from sys.databases where name = 'testhome'))
                          drop database testhome
                      go
                      create database testhome
                      --默认就属于primary主文件组,可省略
                      on primary (    
                          --数据文件的具体描述
                          name = 'testhome_data',                --主数据文件的逻辑名
                          filename = 'c:\testhome_data.mdf',    --主数据文件的物理名
                          size = 3mb,                        --主数据文件的初始大小
                          maxsize = 50mb,                    --主数据文件增长的最大值
                          filegrowth = 10%                --主数据文件的增长率
                      )
                      --日志文件的具体描述,各参数含义同上
                      log on (
                          name = 'testhome_log',
                          filename = 'c:\testhome_log.ldf',
                          size = 1mb,
                          filegrowth = 1mb
                      )
                      go

                      方法3(设置次数据文件)、

                      if (exists (select * from sys.databases where name = 'testhome'))
                          drop database testhome
                      go
                      create database testhome
                      --默认就属于primary主文件组,可省略
                      on primary (    
                          --数据文件的具体描述
                          name = 'testhome_data',                --主数据文件的逻辑名
                          filename = 'c:\testhome_data.mdf',    --主数据文件的物理名
                          size = 3mb,                        --主数据文件的初始大小
                          maxsize = 50mb,                    --主数据文件增长的最大值
                          filegrowth = 10%                --主数据文件的增长率
                      ),
                      --次数据文件的具体描述
                      (    
                          --数据文件的具体描述
                          name = 'testhome2_data',            --主数据文件的逻辑名
                          filename = 'c:\testhome2_data.mdf',    --主数据文件的物理名
                          size = 2mb,                        --主数据文件的初始大小
                          maxsize = 50mb,                    --主数据文件增长的最大值
                          filegrowth = 10%                --主数据文件的增长率
                      )
                      --日志文件的具体描述,各参数含义同上
                      log on (
                          name = 'testhome_log',
                          filename = 'c:\testhome_log.ldf',
                          size = 1mb,
                          filegrowth = 1mb
                      ),
                      (
                          name = 'testhome2_log',
                          filename = 'c:\testhome2_log.ldf',
                          size = 1mb,
                          filegrowth = 1mb
                      )
                      go

                      基本数据类型

                      精确数字类型

                      类型

                      描述

                      bigint

                      bigint 数据类型用于整数值可能超过 int 数据类型支持范围的情况,范围:-2^63 到 2^63-1,存储空间8字节

                      int

                      整数数据类型,范围在-2^31 到 2^31-1,存储空间4字节

                      smallint

                      整数,范围在-2^15 到 2^15-1,存储空间2字节

                      tinyint

                      范围在0 到 255,存储空间1字节

                      bit

                      可以取值为 1、0 或 null 的整数数据类型,每8个bit占一个字节,16bit就2个字节,24bit就3个字节

                      decimal

                      带固定精度和小数位数的数值数据类型,有效值从 – 10^38 +1 到 10^38 – 1

                      numeric

                      同上

                      money

                      货币或货币值的数据类型,范围在-922,337,203,685,477.5808 到 922,337,203,685,477.5807

                      smallmoney

                      货币类型,-214,748.3648 到 214,748.3647

                      近似数字类型

                      类型

                      描述

                      float

                      表示浮点数值数据的大致数值数据类型。浮点数据为近似值;范围-1.79e + 308 至 -2.23e – 308、0 以及 2.23e – 308 至 1.79e + 308

                      real

                      real 的 sql-92 同义词为 float(24),范围在-3.40e + 38 至 -1.18e – 38、0 以及 1.18e – 38 至 3.40e + 38

                       

                      日期时间类型

                      类型

                      描述

                      datetime

                      表示某天的日期和时间的数据类型,范围在1753 年 1 月 1 日到 9999 年 12 月 31 日

                      smalldatetime

                      范围在1900 年 1 月 1 日到 2079 年 6 月 6 日

                      字符串类型

                      类型

                      描述

                      char

                      固定长度或可变长度的字符数据类型,范围在范围为 1 至 8,000字节

                      text

                      最大长度为 2^31-1

                      varchar

                      固定长度或可变长度的字符数据类型,最大存储大小是 2^31-1 个字节

                      unicode字符串类型

                      类型

                      描述

                      nchar

                      字符数据类型,长度固定,在必须在 1 到 4,000 之间

                      nvarchar

                      可变长度 unicode 字符数据。最大存储大小为 2^31-1 字节

                      ntext

                      长度可变的 unicode 数据,最大长度为 2^30 – 1 (1,073,741,823) 个字符

                       

                      二进制字符串类型

                      二进制字符串类型

                      类型

                      描述

                      binary

                      长度为 n 字节的固定长度二进制数据,范围从 1 到 8,000 的值。存储大小为 n 字节。

                      varbinary

                      可变长度二进制数据。n 可以取从 1 到 8,000 的值。最大的存储大小为 2^31-1 字节

                      image

                      长度可变的二进制数据,从 0 到 2^31-1 (2,147,483,647) 个字节

                      判断表或其他对象及列是否存在

                      --判断某个表或对象是否存在
                      if (exists (select * from sys.objects where name = 'classes'))
                          print '存在';
                      go
                      if (exists (select * from sys.objects where object_id = object_id('student')))
                          print '存在';
                      go
                      if (object_id('student', 'u') is not null)
                          print '存在';
                      go
                       
                      --判断该列名是否存在,如果存在就删除
                      if (exists (select * from sys.columns where object_id = object_id('student') and name = 'idcard'))
                          alter table student drop column idcard
                      go
                      if (exists (select * from information_schema.columns where table_name = 'student' and column_name = 'tel'))
                          alter table student drop column tel
                      go

                      创建、删除表

                      --判断是否存在当前table
                      if (exists (select * from sys.objects where name = 'classes'))
                          drop table classes
                      go
                      create table classes(
                          id int primary key identity(1, 2),
                          name varchar(22) not null,
                          createdate datetime default getdate()
                      )
                      go
                      if (exists (select * from sys.objects where object_id = object_id('student')))
                          drop table student
                      go
                      --创建table
                      create table student(
                          id int identity(1, 1) not null,
                          name varchar(20),
                          age int,
                          sex bit,
                          cid int
                      )
                      go

                      给表添加字段、修改字段、删除字段

                      --添加字段
                      alter table student add address varchar(50) not null;
                      --修改字段
                      alter table student alter column address varchar(20);
                      --删除字段
                      alter table student drop column number;
                       
                      --添加多个字段
                      alter table student 
                      add address varchar(22),
                          tel varchar(11),
                          idcard varchar(3);
                       
                      --判断该列名是否存在,如果存在就删除
                      if (exists (select * from sys.columns where object_id = object_id('student') and name = 'idcard'))
                          alter table student drop column idcard
                      go
                      if (exists (select * from information_schema.columns where table_name = 'student' and column_name = 'tel'))
                          alter table student drop column tel
                      go

                      添加、删除约束

                      --添加新列、约束
                      alter table student 
                          add number varchar(20) null constraint no_uk unique;  
                      --增加主键
                      alter table student  
                          add constraint pk_id primary key(id);  
                      --添加外键约束
                      alter table student
                          add constraint fk_cid foreign key (cid) references classes(id)
                      go
                      --添加唯一约束
                      alter table student
                          add constraint name_uk unique(name);
                      --添加check约束
                      alter table student with nocheck   
                          add constraint check_age check (age > 1);
                      alter table student
                          add constraint ck_age check (age >= 15 and age <= 50)
                      --添加默认约束
                      alter table student
                          add constraint sex_def default 1 for sex;
                      --添加一个包含默认值可以为空的列
                      alter table student 
                          add createdate smalldatetime null
                          constraint createdate_def default getdate() with values;
                       
                      ----- 多个列、约束一起创建--------
                      alter table student add   
                          /*添加id主键、自增*/  
                          id int identity constraint id primary key,   
                          /* 添加外键约束*/   
                          number int null    
                          constraint unumber references classes(number),  
                          /*默认约束*/  
                          createdate decimal(3, 3)  
                          constraint createdate default 2010-6-1  
                      go 
                       
                      --删除约束
                      alter table student  drop constraint no_uk;

                      插入数据

                      insert into classes(name) values('1班');
                      insert into classes values('2班', '2011-06-15');
                      insert into classes(name) values('3班');
                      insert into classes values('4班', default);
                       
                      insert into student values('zhangsan', 22, 1, 1);
                      insert into student values('lisi', 25, 0, 1);
                      insert into student values('wangwu', 24, 1, 3);
                      insert into student values('zhaoliu', 23, 0, 3);
                      insert into student values('mazi', 21, 1, 5);
                      insert into student values('wangmazi', 28, 0, 5);
                      insert into student values('jason', null, 0, 5);
                      insert into student values(null, null, 0, 5);
                       
                      insert into student 
                      select 'bulise' name, age, sex, cid 
                      from student 
                      where name = 'tony';
                          
                      --多条记录同时插入
                      insert into student
                          select 'jack', 23, 1, 5 union
                          select 'tom', 24, 0, 3 union
                          select 'wendy', 25, 1, 3 union
                          select 'tony', 26, 0, 5;

                      查询、修改、删除数据

                      --查询数据
                      select * from classes;
                      select * from student;
                      select id, 'bulise' name, age, sex, cid from student 
                      where name = 'tony';
                      select *, (select max(age) from student) from student 
                      where name = 'tony';
                       
                      --修改数据
                      update student set name = 'hoho', sex = 1 where id = 1;
                       
                      --删除数据(from可省略)
                      delete from student where id = 1;

                      备份数据、表

                      --备份、复制student表到stu
                      select * into stu from student;
                      select * into stu1 from (select * from stu) t;
                      select * from stu;
                      select * from stu1;--备份、复制student表到stu
                      select * into stu from student;
                      select * into stu1 from (select * from stu) t;
                      select * from stu;
                      select * from stu1;

                      利用存储过程查询表信息

                      --查询student相关信息
                      exec sp_help student;
                      exec sp_help classes;

                      总结

                      本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注www.887551.com的更多内容!

                      (0)
                      上一篇 2022年3月21日
                      下一篇 2022年3月21日

                      相关推荐