[置顶][SQL SERVER系列]工作经常使用的SQL整理,实战篇(一)[原创]
来源:互联网 发布:怎么加入摄影协会 知乎 编辑:程序博客网 时间:2024/04/30 05:34
工作经常使用的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整理,实战篇(一)[原创]
- [置顶][SQL SERVER系列]工作经常使用的SQL整理,实战篇(二)[原创]
- [SQL SERVER系列]工作经常使用的SQL整理,实战篇(三)[原创]
- [置顶]SQL SERVER发布与订阅 [原创]
- SQL Server数据库优化实战(一)
- 使用SQL Server时经常用到的几个设置选项
- sql 经常使用的语句(个人)
- SQL SERVER系列(一):神秘的TornBits
- SQL Server 管理系列(一)
- 整理了一下SQL Server里面可能经常会用到的日期格式转换方法.
- 【Vegas原创】SQL Server游标的经典使用
- 【Vegas原创】SQL Server游标的经典使用
- SQL Server 表分区实战系列(文章索引)
- (原创)处理Sql server在不同环境下排序规则不一致的问题(一)
- [置顶]SQL SERVER定时任务执行跟踪--供远程查看 [原创]
- [置顶]SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现) [原创]
- SQL SERVER 的SQL语句整理
- SQL Server 2000 (SP4)笔记整理(一):数据库
- 如何买笔记本电脑,从那几个方面看
- [SQL SERVER系列]之常用函数和开窗函数介绍及实例
- mysql日志详细解析 [转]
- BLOB或TEXT字段使用散列值和前缀索引优化提高查询速度
- 使用OPTIMIZE TABLE命令来整理表碎片实践
- [置顶][SQL SERVER系列]工作经常使用的SQL整理,实战篇(一)[原创]
- poj 1016 Numbers That Count
- [置顶][SQL SERVER系列]工作经常使用的SQL整理,实战篇(二)[原创]
- [置顶]MYSQL系列1_MySQL的安装,可视化工具的使用,以及建库建表等
- JdbcTemplate详解
- [置顶]SQL 优化原则
- nginx反向代理部署nodejs
- [置顶]MySQL学习系列2--MySQL执行计划分析EXPLAIN [原创]
- lifeary 6.2 js 向后台不能正常传值