工作经常使用的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. LAMP课程(3)

    LAMP课程(3) 一.bash的使用 1.1.输出重定向 >:覆盖输出(写入内容) 具体实例1:将内容写入到文件中   >>:追加输出 具体实例2:   1.2 && ...

  2. vSphere 安装操作系统

    0.找到 vSphere Client 安装文件并安装 1.创建完成EXSI.Openfiler - 磁盘创建 * - 网卡设置 2.openfiler LVM 3.EXSI of ISCSI 4.s ...

  3. 2B - Amy

    数据范围是18位,把每一位加起来的和最多9*18 = 162 所以只需考虑n-162 - n的数即可,暴力解决 #include <iostream> using namespace st ...

  4. x-boot

    https://github.com/Exrick/x-boot-front https://gitee.com/Exrick/x-boot

  5. PHP编程入门与应用

    基础语法.流程控制语句.数组的应用.字符串的应用————3天 PHP函数————3天 面向对象————3天 文件处理————2天 获取页面数据.会话处理————3天 数据库————5天 XML和JSO ...

  6. 使用 v-model 实现 双向绑定.(子组件和父组件.)

    vue 自定义组件 v-model双向绑定. 父子组件同步通信   父子组件通信,都是单项的,很多时候需要双向通信.方法如下: 1.父组件使用:msg.sync="aa"  子组件 ...

  7. O(1)乘法与快速乘O(log)

    //O(1)快速乘 inline LL quick_mul(LL x,LL y,LL MOD){ x=x%MOD,y=y%MOD; return ((x*y-(LL)(((long double)x* ...

  8. Oracle "set define off" 关闭替代变量功能

    set define off关闭替代变量功能 在SQL*Plus中默认的"&"表示替代变量,也就是说,只要在命令中出现该符号,SQL*Plus就会要你输入替代值.这就意味着 ...

  9. postgresql数据库primary key约束/not null约束/unique约束及default值的添加与删除、列的新增/删除/重命名/数据类型的更改

    如果在建表时没有加primary key约束.not null约束.unique约束.default值,而是创建完表之后在某个字段添加的话 1.primary key约束的添加与删除 给red_pac ...

  10. sql语句中开窗函数的使用

    开窗函数主要分为2类: 1.排序开窗函数: rank() over(partition by xxx order by yyy) //各分区按照yyy字段排序,如果yyy字段值一样,则rank值一样, ...