sql server 的T-SQL 学习笔记(一)

USE master
GO


IF EXISTS (SELECT * FROM sys.databases WHERE name ='jhdx') DROP DATABASE jhdx
go


CREATE DATABASE [jhdx] ON  PRIMARY 
( NAME = N'jhdx', FILENAME = N'G:\sqlServer\DATA\jhdx.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'jhdx_log', FILENAME = N'G:\sqlServer\DATA\jhdx_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO



/*************2017718日 上午*********************
一、数据类型:(数字类型 字符数据类型 二进制数据类型 时间数据类型)
    -数字类型
       -整数类型 bigint int smallint bit tinyint 
       -小数类型 decimal numeric
       -货币类型 money smallmoney
    -字符数据类型
       -字符类型 char(定长字符串) nchar nvarchar  varchar(可变长字符串) text(文本2^31-1)
    -时间类型
       -时间datetime(2017-07-18 12:32:35.620) smalldatetime(2017-07-18 12:33:00) date(2017-07-18)

二、数据完整性
    -数据完整性 (精确性 可靠性)
    -实体完整性  (主键约束primary key,自增长identity(1,2) 唯一性约束unique-不可重复但可为null) 
    -域完整性 (检查约束 check , 外键约束foreign key, 默认值default,非空not null)
    -引用完整性
    -用户自定义完整性

三、关键字(判断数据库、表是否存在)
    -查看数据库中是否存在数据库 存在则删除 否则直接创建
      if exists (select * from sys.databases where name ='jhdx') drop database jhdx go
      这里的删除数据库使用drop,并且后面需要使用go关键字执行
    -同理创建表时候需要判断表是否存在于数据库当中,存在则删除,否则直接创建
      if exists (select * from sys.objects where name = 'jhdx_class') drop table jhdx_class go
      同理需要带上关键字go

四、 char nchar varchar nvarchar 区别(存储汉字需要字节)
     char:     固定长度,存储ANSI字符,不足的补英文半角空格。    --两个字节
     nchar:    固定长度,存储Unicode字符,不足的补英文半角空格   --一个字节
     varchar:  可变长度,存储ANSI字符,根据数据长度自动变化。    -- 两个字节
     nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化。 -- 一个字节

五、删除 修改表
    -drop table table_name  删除表名为table_name的表
    - alter table add constraint pk_testId primary key (testId)

六、数据库文件
    -数据库文件包括
    数据文件(主数据文件有且只有一个.mdf)
    次要数据文件(0到多个.ndf)
    日志文件 (一个或多个.ldf)

七、创建数据库(首先要判断是否存在)
    -create database database_name
    -create database database_name 
        on (
            - name 名称 
            - filename 物理名称(路径)
            - maxsize 最大值
            - size 初始值
            - filegrowth 增长方式
        )
        log on(
            - name 
            - filename
            - maxsize 
            - size 
            - filegrowth
        )
八、常见约束
    - 主键 primary key
    - 外键 foreign key / references
    - 唯一性 unique  
    - 检查 check    / check(age>=0 and age<= 100)
    - 默认 default
    - 自增长 identity(1,2) 初始值,步长
    - 非空  not null 
    **************************
    -增加约束 alter table add constraint 约束名称(eg:unique , check) (属性值) or for(字段)
    -详细语法见testTable中的添加约束方法 p156-p162
*/


USE jhdx
go 

-- 建表
IF EXISTS (
    SELECT
        *
    FROM
        sys.objects
    WHERE
        name = 'jhdx_class'
) DROP TABLE jhdx_class
go


CREATE TABLE jhdx_class(
    classId INT PRIMARY KEY IDENTITY,
    className VARCHAR(20) NOT NULL,
    createTime DATE NOT NULL DEFAULT getdate() ,
    updateTime smalldatetime NOT NULL DEFAULT getdate(),
    testTime datetime NOT NULL DEFAULT getdate()
)


-- 创建数据库student
IF EXISTS (SELECT * FROM sys.objects WHERE name ='jhdx_student') DROP TABLE jhdx_student 
go
CREATE TABLE jhdx_student(
    id INT PRIMARY KEY IDENTITY(1,2),  -- identity(1,2) 起步为1 步长为2
    studentName nvarchar(20) UNIQUE,  -- unique 唯一性约束 可为空 但不可重复
    studentAge INT CHECK(studentAge >= 0 AND studentAge <= 100) , --check 约束,属性满足范围,(在这里studentAge 0 ~ 100)
    studentSex nvarchar(1) CHECK(studentSex = '男' OR studentSex = '女'),  -- check约束 studentSex 只能有男或女
    createTime smalldatetime NOT NULL DEFAULT getdate(),
    classId int  foreign key references jhdx_class(classId)   --添加外键 外键为jhdx_class表中的classId
)

-- ************************** test ********************************
-- 已存在的表 进行修改
if exists (select * from sys.objects where name ='test') drop table test 
go
create table test(
    testId int not null,
    testName nvarchar(20) not null
)
-- 对test表的testId增加主键约束
-- 首先进行判断主键是否存在 存在删除 否则添加
if exists (select * from sys.objects where name = 'pk_testId') 
alter table test drop constraint pk_testId
go 
alter table test 
add constraint pk_testId primary key (testId),
    constraint uk_testName unique (testName)


--************************ testTable ***************************************
-- 对已经存在的表 修改 增加多个约束
if exists (select * from sys.objects where name ='testTable') drop table testTable 
go 
create table testTable (
    id int not null,
    name nvarchar(20) not null,
    age int not null,
    sex nchar(1),
    testAddress nvarchar(200) not null,
    testId int not null
)
-- 添加约束
alter table testTable 
add constraint pk_testTableId primary key (id),
    constraint uk_testTableName unique (name),
    constraint ck_testAge check(age >= 0 and age <= 100),
    constraint ck_testSex check(sex = '男' or sex ='女'),
    constraint dk_testAddress default ('湖北省武汉市') for testAddress,
    constraint pk_testForeignId foreign key (testId) references test(testId)
go  


-- ************************* 删除表*************************************
-- drop table table_name 首先要判断表是否存在外键 如果存在则先删除外键表


-- 查询该表中数据
SELECT * FROM jhdx_class

你可能感兴趣的:(SQL-Server)