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

简介: 原文:工作经常使用的SQL整理,实战篇(一)[原创]工作经常使用的SQL整理,实战篇,地址一览:   工作经常使用的SQL整理,实战篇(一)   工作经常使用的SQL整理,实战篇(二)   工作经常使用的SQL整理,实战篇(三)   目录概览: 1.
原文: 工作经常使用的SQL整理,实战篇(一)[原创]

工作经常使用的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整理,实战篇(二)

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

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

 

 

 

 

 

目录
相关文章
|
2月前
|
SQL 数据库 开发者
MSSQL性能调优实战技巧:索引优化、SQL语句微调与并发控制策略
在Microsoft SQL Server(MSSQL)的管理与优化中,性能调优是一项复杂但至关重要的任务
|
2月前
|
SQL 监控 数据库
MSSQL性能调优实战策略:索引优化、SQL语句重构与并发控制
在Microsoft SQL Server(MSSQL)的管理和优化过程中,性能调优是确保数据库高效运行、满足业务需求的重要环节
|
2月前
|
SQL 运维 监控
MSSQL性能调优实战:索引优化、SQL查询效率提升与并发控制策略
在Microsoft SQL Server(MSSQL)的日常运维与性能优化中,精准的策略与技巧是实现高效数据库管理的关键
|
2月前
|
SQL 存储 数据库
MSSQL性能调优实战:索引优化、SQL语句精调与高效并发处理
在Microsoft SQL Server(MSSQL)的性能调优征途中,索引优化、SQL语句的精细调整以及高效并发处理是三大核心策略
|
2月前
|
SQL 监控 数据库
MSSQL性能调优实战技巧:索引优化策略、SQL查询重构与并发控制详解
在Microsoft SQL Server(MSSQL)的管理与优化过程中,性能调优是确保数据库高效运行的关键环节
|
2月前
|
SQL 监控 数据库
MSSQL性能调优实战指南:精准索引策略、SQL查询优化与高效并发控制
在Microsoft SQL Server(MSSQL)的性能调优过程中,精准索引策略、SQL查询优化以及高效并发控制是三大核心要素
|
15天前
|
SQL 存储 数据处理
"SQL触发器实战大揭秘:一键解锁数据自动化校验与更新魔法,让数据库管理从此告别繁琐,精准高效不再是梦!"
【8月更文挑战第31天】在数据库管理中,确保数据准确性和一致性至关重要。SQL触发器能自动执行数据校验与更新,显著提升工作效率。本文通过一个员工信息表的例子,详细介绍了如何利用触发器自动设定和校验薪资,确保其符合业务规则。提供的示例代码展示了在插入新记录时如何自动检查并调整薪资,以满足最低标准。这不仅减轻了数据库管理员的负担,还提高了数据处理的准确性和效率。触发器虽强大,但也需谨慎使用,以避免复杂性和性能问题。
25 1
|
2月前
|
SQL 安全 数据库
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
【7月更文挑战第26天】在 Python Web 开发中, 安全性至关重要。本文聚焦 SQL 注入、XSS 和 CSRF 这三大安全威胁,提供实战防御策略。SQL 注入可通过参数化查询和 ORM 框架来防范;XSS 则需 HTML 转义用户输入与实施 CSP;CSRF 防御依赖 CSRF 令牌和双重提交 Cookie。掌握这些技巧,能有效加固 Web 应用的安全防线。安全是持续的过程,需贯穿开发始终。
65 1
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
|
12天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
26 0
|
15天前
|
测试技术 Java
全面保障Struts 2应用质量:掌握单元测试与集成测试的关键策略
【8月更文挑战第31天】Struts 2 的测试策略结合了单元测试与集成测试。单元测试聚焦于单个组件(如 Action 类)的功能验证,常用 Mockito 模拟依赖项;集成测试则关注组件间的交互,利用 Cactus 等框架确保框架拦截器和 Action 映射等按预期工作。通过确保高测试覆盖率并定期更新测试用例,可以提升应用的整体稳定性和质量。
29 0