zoukankan      html  css  js  c++  java
  • T-SQL

    .数据库的创建在开发中的步骤

    1.1收集信息

    1.2概念设计(E-R图)

    1.3详细设计(数据库模型图)

    1.4审核数据库(三大范式)

    2.1 E-R

    矩形:实体

    椭圆:属性

    菱形:关系

    3.1 映射关系

    一对一,一对多,多对一,多对多

    4.1 三大范式

    第一范式:每一列都要保证原子性,分的不能再分了

    第二范式:在满足1NF基础上,每一张表只能表述一件事(有主键)

    第三范式:在满足2NF基础上 ,确保除主键之外的列都必须和主键有直接的关系,而不是间接地关系

    .建库建表建约束

    2.1 建库

    建库:create database myschool;

    三种文件格式:主文件.mdf,次要文件 .ndf,日志文件.ldf

    create database myschool

    --主文件

    on [primary]

    (

    name='', --逻辑名称

    filename=‘。mdf,-- 文件路径

    size=10,--初始大小

    maxsize=100 ,--最大大小

    filegrowth=10 增长率 不能加百分号

    ),

    --次要文件

    (

    name='', --逻辑名称

    filename=.ndf,-- 文件路径

    size=10,--初始大小

    maxsize=100 ,--最大大小

    filegrowth=10 增长率 不能加百分号

    )

    on log

    (

    name='', --逻辑名称

    filename=.ldf,-- 文件路径

    size=10,--初始大小

    maxsize=100 ,--最大大小

    filegrowth=10 增长率 不能加百分号

    )

    给数据库添加文件

    alter database myschool

    add file

    --次要文件

    (

    name='', --逻辑名称

    filename=.ndf,-- 文件路径

    size=10,--初始大小

    maxsize=100 ,--最大大小

    filegrowth=10 增长率 不能加百分号

    )

    2.2 建表

    Create table 表名

    (

    数据类型 数据特性(null or not null

    )

    自动增长列 identity(1,1)

    比如

    Create table student

    ( id int identity(1,1)  not null

    )

    删除表 drop table 表名

    删除数据 delete 表名,truncate 表名

    2.3 键约束

    2.3.1 主键约束

    Alter table 表名

    Add constraint  pk_约束名  primary key  (列名)

    2.3.2 唯一约束

    Alter table 表名

    Add constraint  uq_约束名 unique (列名)

    2,3.3 检查约束

    Alter table 表名

    Add constraint ck_约束名 check (列名<=100

    2.3.4 默认约束

    Alter table 表名

    Add constraint df_约束名 default(‘默认值’) for 列名

    2.3.5 外键约束

    Alter table 外键表

    Add constraint fk_约束名 foreign key  列名 references 主键表(列名)

    2.3.6 删除约束

    Alter table 表名

    Drop constraint 约束名

    2.4建视图

    2.4.1 创建

    If exists (select * from sys.objects  where  name=’视图名’)

    Drop view 视图名

    Create view 视图名 as sql语句

    注意: 视图中不能单独的使用order by 必须与top 同时出现

    2.4.2  修改

    Alter view 视图名

    三.sql编程

    3.1 定义变量

    局部变量Declare @变量名 数据类型=

    全部变量 @@error 错误号,@@identity 获取最近一次的值 @@version版本号

    3.2 赋值

    3.2.1 set

    set @变量名=or(set @变量名=(子查询)) ,一次只能给一个变量赋值

    3,2,2 select

    Select @变量名 =值  ,select @变量名=字段,@变量名=字段  from 表,可以给多个变量赋值;当返回多个数据的时候取最后一个

     

    3.3 转换数据类型

    3.3.1 convert

    Convert (数据类型,变量)

    特殊的可以对datetime 类型的字段转换 比如convert(字段,102)

    3.3.2 Cast

    Cast(变量名 as 数据类型)

    3.4 if else

    If (条件)

    Begin

    ---sql

    End

    Else

    Begin

    --sql

    end

    3.5 while

    While(条件)

    Begin

    End

    3.6Case

    Case  when 条件 then 结果

    When 条件 then 结果

    Else

    End

    3.7 GO

    批处理,把多条sql打个包一起发送服务器执行,执行速度加快

    四:子查询

    select * from ( 子查询 )别名

    4.1 in

    Select * from 表名 where 列名 in(子查询)

    Select * from 表名 where 列名 in(‘’,’’,’’)

    4,2 not in

    Select * from 表名 where 列名 not in(子查询)

    Select * from 表名 where 列名 not in(‘’,’’,’’)

    4.3 exists and not exists

    exists 用法1

    if exists (select * from table ===) 判断是否能查出数据,如果能则返回true,否则返回false

    exists 用法2

    select * from student where exists(select * from grade where grade.gradeid=student.gradeid)

    注意:exists 用法2in 用法2效率高

    .存储过程

    5.1 创建一个无参的存储过程

    Create  proc 存储过程名称

    As

    Sql 语句

    Go

    5.2 创建一个有输入参数的存储过程

    Creta proc 存储过程名称

    @变量名 数据类型

    As

    Sql 语句

    Go

    5.3 创建一个有默认值的存储过程

    Creta proc 存储过程名称

    @变量名 数据类型=’默认值’

    As

    Sql 语句

    Go

    5.4 创建一个有输入有输出的存储过程

    Create proc 存储过程名

    @输入变量 数据类型,

    @输出变量 数据类型 output

    As

    Sql语句

    Go

    5.5 调用存储过程

    Exec 存储过程名称

    Execute 存储过程名称

    经验:当遇到go的时候 exec 可以省略

    5.6 事务

    开启事务 begin transaction

    提交事务 commit transaction

    事务回滚 rollback transaction

    .索引

    6.1 唯一索引

    不能有相同的两行数据,当创建一个唯一约束的时候系统自动分配一个唯一索引

    6.2 主键索引

    特殊的唯一索引,当创建一个主键约束的时候,系统自动分配一个聚集的主键索引

    注意:如果不想让主键占用聚集索引,可以在创建的时候,把非聚集表现出来

    6.3 聚集索引

    根据系统算法排列的,一张表只能有一个聚集索引(类似与拼音查字典)

    6.4 非聚集索引

    根据数据逻辑排列,一张表可以有多个非聚集索引(类似与偏旁部首和笔画)

    6.5 全文索引

    针对于大型的数据文本类型比如(long,text,key查询;

    其它索引都是匹配查询

    6.6 复合索引

    说明:可以给多列创建一个索引

    6.7 创建索引

    Create [unique][nonclustered][clustered]

    Index ix_索引名称 on table (列名,列名..)

    With fillfactor=20 (不能加百分号)

    6.9 删除索引

    Drop index table.索引名称

    6.10 指定索引查询

    Select * from table with(index=索引名称) where

  • 相关阅读:
    年末反思
    Flink运行时架构
    Phoenix 启动报错:Error: ERROR 726 (43M10): Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.
    Clickhouse学习
    Flink简单认识
    IDEA无法pull代码到本地,Can't Update No tracked branch configured for branch master or the branch doesn't exist.
    第1章 计算机系统漫游
    简单的 Shell 脚本入门教程
    开源≠免费 常见开源协议介绍
    MySQL 视图
  • 原文地址:https://www.cnblogs.com/Sora-L/p/6915100.html
Copyright © 2011-2022 走看看