工作经常使用的SQL整理,实战篇,地址一览:

  工作经常使用的SQL整理,实战篇(一)

  工作经常使用的SQL整理,实战篇(二)

  工作经常使用的SQL整理,实战篇(三)

目录概览:

1.数据库

2.表

3.临时表

4.索引和约束

5.范式

6.增删改查

7.连接

8.分组和排序

9.通配符

10.视图

11.存储过程和事务

12.游标

13.触发器

14.作业

  自己亲手编写的一些常用的SQL,希望对大家有用喔,废话不多说了,直接入正题~

1.数据库

  创建数据库

  use master
  if exists(select * from sysdatabases where name = 'OrderDB')
   drop database OrderDB
  create database OrderDB
  on
  (
   name='OrderDB_data',
   filename = 'D:\DB\OrderDB_data.mdf',
   size=10,
   filegrowth=15%
  )
  log on
  (
   name='OrderDB_log',
   filename='D:\DB\OrderDB_log.ldf',
   size=3,
   filegrowth=10%
  )

  删除数据库

  drop database OrderDB

2.表

创建表

  --用户表  
  if exists (select * from sysobjects where name = 'Tse_User')
   drop table Tse_User
  Create table Tse_User
  (
   ID int identity(1,1),
   UserID int not null,
   UserName varchar(64) not null,
   RealName varchar(64) null,
   PRIMARY KEY (UserID)
  )
  --产品表
  if exists (select * from sysobjects where name = 'Tse_Product')
   drop table Tse_Product
  Create table Tse_Product
  (
   ID INT IDENTITY(1,1),
   ProductID varchar(64) not null,
   ProductName varchar(256) not null,
   Price float not null,
   Storage int not null, --库存
   PRIMARY KEY(ProductID)
  )
  --订单表
  if exists (select * from sysobjects where name = 'Tse_Order')
   drop table Tse_Order
  Create table Tse_Order
  (
   ID int identity(1,1),
   OrderID varchar(64) not null,
   UserID int not null,
   ProductID varchar(64) not null,
   Number int not null, --购买数量
   PostTime datetime not null,
   PRIMARY KEY(OrderID),
   FOREIGN KEY (UserID) REFERENCES Tse_User(UserID),
   FOREIGN KEY (ProductID) REFERENCES Tse_Product(ProductID)
  )

  删除表

  drop table Tse_User

  清空表

truncate table Tse_User    清除表中所有数据,下次插入编号从1开始

delete from Tse_User      清除表中所有数据,但下次插入编号从原有编号+1开始

3.临时表

生成临时表,插入数据,将员工姓名全部打印出来

  use master
  go
  create table #Employee
  (
   ID int identity(1,1),
   Name varchar(64) not null,
   primary key (ID)
  )
  insert into #Employee(Name) values('zhangsan')
  insert into #Employee(Name) values('lisi')
  insert into #Employee(Name) values('wangwu')
  insert into #Employee(Name) values('tony')
  insert into #Employee(Name) values('mike')
  
  declare @i int
  declare @Name varchar(64)
  declare @Count int
  declare @Str nvarchar(4000)
  set @i = 0
  select @Count = COUNT(0) from #Employee
  while(@i < @Count)
  begin
   set @Str = 'select top 1 @Name = Name from #Employee where id not in (select top '+
   STR(@i) +'id from #Employee)'
   exec sp_executesql @Str ,N'@Name varchar(64) output', @Name output
   select @Name, @i
   set @i = @i + 1
  End
 

  查看表结构及表附加属性
  SP_HELP Tse_User

4.索引和约束

聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。

非聚集索引,该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。一个表可以创建多个非聚集索引。

创建聚集索引

CREATE UNIQUE CLUSTERED INDEX [PK_Tse_ID] ON [dbo].[Tse_User]

(  --唯一聚集索引

[ID] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,

ONLINE = OFF,ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

GO

创建非聚集索引

CREATE UNIQUE NONCLUSTERED INDEX [IX_Tse_UserID] ON [dbo].[Tse_User]

(  --唯一非聚集索引

[UserID] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,

ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

GO

约束

alter table Tse_User

add constraint CS_UserName check (len(Username) > 3),

constraint CS_Email check (charindex('@', Email) > 0)

5.范式

  第一范式1NF

  第一范式需满足两个条件:

  1)每个数据行必须包含具有原子性(即不可再分)的值;

  2)每个数据行必须包含一个独一无二的值,即主键。

  举例:假如客户表中存在地址列,如果经常需要按城市归类,那么,应该地址列拆分为省份,城市,县,街道地址等列。

  第二范式2NF

  第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种    数据,不可以把多种数据保存在同一张数据库表中。

  举例:比如常用的选课表中,以学号和课程号为联合主键,不能将课程名,学分等课程相关信息写入选课表,因为他们只与主键的一部分(课程号)相关。

  第三范式3NF

  第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

  举例:订单表中以订单号为主键,用户真实姓名和邮箱等信息与用户有关,与订单没有直接关系,因此,用户真实姓名和邮箱等不能放到订单表中。

  

  由于时间关系,余下的几个问题在下一篇中讨论,谢谢关注~,下一篇地址为:工作经常使用的SQL整理,实战篇(二)

  如果您有什么问题,欢迎在下面评论,我们一起讨论,谢谢~

  如果您觉得还不错,不妨点下右下方的推荐,有您的鼓励我会继续努力的~

[SQL SERVER系列]工作经常使用的SQL整理,实战篇(一)[原创]的更多相关文章

  1. [SQL SERVER系列]工作经常使用的SQL整理,实战篇(三)[原创]

    工作经常使用的SQL整理,实战篇,地址一览: 工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实战篇(三) 接着本系列前面两篇继续讨论. 有时 ...

  2. [SQL SERVER系列]工作经常使用的SQL整理,实战篇(二)[原创]

    工作经常使用的SQL整理,实战篇,地址一览: 工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实战篇(三) 接着上一篇“工作经常使用的SQL整 ...

  3. Sql Server系列:数据库组成及系统数据库

    1. 数据库组成 数据库的存储结构分为逻辑存储结构和物理存储结构. ◊ 逻辑存储结构:说明数据库是由哪些性质的信息所组成.SQL Server的数据库不仅仅只是数据的存储,所有与数据处理操作相关的信息 ...

  4. SQL Server 系列文章快速导航(SWF版)

    一.前言 在博客园写博客不自不觉已经有5个年头了,一开始只是为了记录工作中遇到的问题和解决办法,后来写的文章不自不觉的侧重在SQL Server方面的技术文章,在2014年1月终于鼓起勇气申请了微软S ...

  5. SQL Server系列文章目录

    SQL Server系列文章目录SQL Server系列文章目录SQL Server系列文章目录SQL Server系列文章目录

  6. SQL Server代理(5/12):理解SQL代理错误日志

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的前几篇文章所见,SQL ...

  7. SQL Server中存储过程比直接运行SQL语句慢的原因

    原文:SQL Server中存储过程比直接运行SQL语句慢的原因 在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1.       存储过程只在创造时进行编译即可,以 ...

  8. SQL Server on Ubuntu——Ubuntu上的SQL Server(全截图)

    本文从零开始一步一步介绍如何在Ubuntu上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一.   创建Ubuntu系统(Create U ...

  9. SQL Server中一些有用的日期sql语句

    SQL Server中一些有用的日期sql语句 1.一个月第一天的 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 2.本周的星期一 SELECT DA ...

随机推荐

  1. JavaScript学习笔记——2.数据类型与类型转换

    数据类型 JS中一共分成六种数据类型 1- String 字符串 2- Number 数值 3- Boolean 布尔值 4- Null 空值 5- Undefined 未定义 6- Object 对 ...

  2. System.Security.Cryptography.CryptographicException

    在调用System.Security.Cryptography.ProtectedData.Protect方法来保护私密信息时,IIS可能会报以下错误:CryptographicException: ...

  3. Jquery each ajax 赋值

    <script type="text/javascript"> $(document).ready(function () { $("#mylist li s ...

  4. Application received signal SIGABRT

    Application received signal SIGABRT (null) (( 0 CoreFoundation 0x0000000182bbadc8 <redacted> + ...

  5. state-表单

    /*** 需求: 定义一个组件,可以将用户在输入框内输入的内容 进行实时显示** 分析:组件与用户交互过程中,存在状态的变化,即输入框的值** */var Input = React.createCl ...

  6. Java 实现邮件的发送

                                             Java 实现邮件的发送 开发邮箱发送功能必须看邮箱方面的资料 改一些东西  (我的是qq 邮箱哟   开通 POP3 ...

  7. JavaWeb学习笔记(十)—— JavaBean总结【转】

    一.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法 ...

  8. Python web前端 09 jQuery

    Python web前端 09 jQuery 一.三个重要网址 http://jquery.cuishifeng.cn/ #中文查询网站 http://www.bootcdn.cn/ #引入jq ht ...

  9. java代码将excel文件中的内容列表转换成JS文件输出

    思路分析 我们想要把excel文件中的内容转为其他形式的文件输出,肯定需要分两步走: 1.把excel文件中的内容读出来: 2.将内容写到新的文件中. 举例 一张excel表中有一个表格: 我们需要将 ...

  10. UI组件化介绍

    组件化相关概念 怎么理解组件化开发 https://www.cnblogs.com/zs-note/p/7093323.html 前端组件化框架之路 https://blog.csdn.net/hap ...