SQL Serever学习10——T-SQL语句
在sqlserver2018中使用的是Transact-SQL语言,简称T-SQL。
数据库的创建和管理
数据定义语言DDL
DDL功能包括数据库,表,索引,视图,存储过程
数据库:CREATE DATABASE , DROP DATABASE
表:CREATE TABLE , DROP TABLE , ALTER TABLE
索引:CREATE INDEX , DROP INDEX
视图:CREATE VIEW , DROP VIEW
数据库创建
创建数据库包括:数据库名,文件位置,大小,事务日志文件位置和大小
数据库定义需要注意:
定义数据库名,sqlserver中,数据库名称最多为128字符,每个系统最多可以管理用户数据库32767个
定义数据文件,数据库文件最小为3MB,文件增长10%,可以定义多个数据文件,默认第一个为主文件
定义日志文件,在LOG ON子句中,日志文件的长度最小值为1MB
创建数据库
数据库名是销售管理,文件位置保存到D盘根目录下的销售数据库文件夹下,文件名为销售管理_data,初始值为16MB,每次增长为6MB,上限为100MB。
日志文件名是销售管理_log,初始值1MB,最大为5MB,每次增长10%
/*创建数据库*/
CREATE DATABASE 销售管理
ON (NAME=销售管理_data,
FILENAME='d:\销售管理数据库\销售管理_data.mdf',
SIZE=16,
MAXSIZE=100,
FILEGROWTH=6)
LOG
ON (NAME=销售管理_log,
FILENAME='d:\销售管理数据库\销售管理_log.ldf',
SIZE=1,
MAXSIZE=5,
FILEGROWTH=10%)
GO

删除数据库
/*删除数据库*/
DROP DATABASE 销售管理
GO
数据表的创建和管理
数据表的创建
每一个数据表有一个名称,叫做表名,或者关系名,表名必须以字母开头,最大长度为30个字符,一张表包括若干字段,字段名唯一。
在销售管理数据库中创建5个表:商品表,买家表,买家级别表,商品类型表,销售表。
/*切换到数据库*/
USE 销售管理
GO
/*创建 商品表*/
CREATE TABLE 商品表
(商品编号 CHAR(3),
商品名称 VARCHAR(50),
品牌 VARCHAR(20),
型号 VARCHAR(20),
类型 CHAR(3),
进价 MONEY,
销售价 MONEY,
库存 INT)
GO
/*创建 买家表*/
CREATE TABLE 买家表
(买家编号 CHAR(3),
买家名称 VARCHAR(50),
电话 VARCHAR(20),
级别 CHAR(3))
GO
/*创建 买家级别表*/
CREATE TABLE 买家级别表
(级别编号 CHAR(3),
级别名称 VARCHAR(50),
享受折扣 FLOAT,
特权 VARCHAR(50))
GO
/*创建 商品类型表*/
CREATE TABLE 商品类型表
(类型编号 CHAR(3),
类型名称 VARCHAR(50),
级别 VARCHAR(20))
GO
/*创建 销售表*/
CREATE TABLE 销售表
(ID INT,
商品编号 CHAR(3),
买家编号 CHAR(3),
实际销售价格 MONEY,
销售日期 DATETIME,
销售数量 INT)
GO
添加约束
在创建表的时候,可以在字段后添加约束,但是一般不这样混用,推荐奖添加约束和创建表的语句分开,首先创建数据表,然后通过修改数据表的结构来添加约束。
常用的约束有5个:
- 主键约束,就是添加主键,要求主键字段唯一并且不为空
- 唯一约束,要求字段唯一
- 检查约束,就是CHECK约束,限制字段格式
- 默认约束,就是DEFAULT约束,给字段默认值
- 外键约束,就是FOREIGN约束,2个表之间的关系
刚才创建了数据表,现在来给数据表添加约束条件
添加主键约束
买家表的买家编号色设置为主键,商品表的商品编号设置为主键
注意:设置为主键的字段需要NOT NULL
/*切换到数据库*/
USE 销售管理
GO
/* 商品表*/
ALTER TABLE 商品表
ADD CONSTRAINT PK_商品编号 PRIMARY KEY(商品编号) /* 买家表*/
ALTER TABLE 买家表
ADD CONSTRAINT PK_买家编号 PRIMARY KEY(买家编号)
添加默认约束
设置商品表的品牌字段默认为A牌
/*切换到数据库*/
USE 销售管理
GO
/* 商品表*/
ALTER TABLE 商品表
ADD CONSTRAINT DF_品牌 DEFAULT('A牌') FOR 品牌
添加条件约束
要求商品表的进价>0,买家表的买家编号为M**格式
/*切换到数据库*/
USE 销售管理
GO
/* 商品表*/
ALTER TABLE 商品表
ADD CONSTRAINT CK_进价 CHECK(进价>0) /* 买家表*/
ALTER TABLE 买家表
ADD CONSTRAINT CK_编号 CHECK(买家编号 like 'M__')
添加外键约束
建立买家表和买家类型表之间的关联,建立商品表和商品类型表的关联
注意:外键表不能有数据,否则报错的!
/*切换到数据库*/
USE 销售管理
GO
/* 商品表*/
ALTER TABLE 商品表
ADD CONSTRAINT FK_sp FOREIGN KEY (类型)
REFERENCES 商品类型表(类型编号)
GO /* 买家表*/
ALTER TABLE 买家表
ADD CONSTRAINT FK_mj FOREIGN KEY (级别)
REFERENCES 买家级别表(级别编号)
GO
数据表的删除
删除买家表
/*切换到数据库*/
USE 销售管理
GO /* 买家表*/
DROP TABLE 买家表
GO
视图的创建和管理
因为公司的很多日常工作是经常性的,如果引入一些视图机制,会大大提高工作效率。
创建视图
创建高价商品视图,显示所有进价在4000元以上的商品名称,品牌和进价
/*切换到数据库*/
USE 销售管理
GO /* 创建视图*/
CREATE VIEW 高价商品_view
AS
SELECT 商品名称,品牌,进价
FROM 商品表
WHERE 进价>4000
GO

使用视图
查看高价商品的名称
/*切换到数据库*/
USE 销售管理
GO /* 使用视图*/
SELECT 商品名称
FROM 高价商品_view
GO
删除视图
删除高价商品视图
/* 删除视图*/
DROP VIEW 高价商品_view
规则和默认的创建和管理
在某一个字段建立规则,属于列级约束,而表级约束单独存在数据库中,是一个约束文件,将这个约束文件绑定到相应的字段,即可对该字段约束。
创建规则
要求字段的值大于0
/*切换到数据库*/
USE 销售管理
GO
/*创建规则*/
CREATE RULE 数值_rule
AS @SZ>0
GO

绑定规则
使用存储过程sp_bindrule
将数值_rule绑定到商品表的进价和销售价字段上
/*切换到数据库*/
USE 销售管理
GO
/*绑定规则*/
sp_bindrule 数值_rule,'商品表.进价'
GO
sp_bindrule 数值_rule,'商品表.销售价'
GO
执行后的提示

查看字段属性,确认绑定

解除绑定
使用存储过程sp_unbindrule
解除商品表的销售价字段上的绑定
/*切换到数据库*/
USE 销售管理
GO
/*解除绑定规则*/
sp_unbindrule '商品表.销售价'
GO
执行成功会有解除绑定信息提示

删除规则
当需要删除一个规则时,首先需要将规则从绑定的字段上全部解除后方可删除
/*切换到数据库*/
USE 销售管理
GO
/*删除规则*/
DROP RULE 数值_rule
GO
如果没有删除报错

默认对象的管理
默认对象的使用和管理方式和规则相似
默认规则可以在表定义的时候申明,也可以使用命令创建
创建默认对象
/*切换到数据库*/
USE 销售管理
GO
/*默认规则*/
CREATE DEFAULT 男_DF
AS
'男'
GO
绑定默认对象
/*切换到数据库*/
USE 销售管理
GO
/*默认规则*/
sp_bindefault 男_DF,'用户表.性别'
GO
解除绑定
/*切换到数据库*/
USE 销售管理
GO
/*默认规则*/
sp_unbindefault '用户表.性别'
GO

删除默认对象
删除前也应该先解除所有的绑定,否则报错
/*切换到数据库*/
USE 销售管理
GO
/*默认规则*/
DROP DEFAULT 男_DF
GO
SQL Serever学习10——T-SQL语句的更多相关文章
- SQL Serever学习9——基础查询语句
SQL语言概述 SQL是结构化查询语言(Structure Query Language),1974年提出,1979年被IBM实现,SQL语言已经成为关系型数据库的标准语言. 包括: DDL数据定义语 ...
- 【SQL Server学习笔记】Delete 语句、Output 子句、Merge语句
原文:[SQL Server学习笔记]Delete 语句.Output 子句.Merge语句 DELETE语句 --建表 select * into distribution from sys.obj ...
- 【SQL Server 学习系列】-- sql 随机生成中文名字
原文:[SQL Server 学习系列]-- sql 随机生成中文名字 ,) )) -- 姓氏 ,) )) -- 名字 INSERT @fName VALUES ('赵'),('钱'),('孙'),( ...
- SQL Serever学习13——数据库编程语言
编程基础 注释 注释命名来对一些语句进行说明,便于日后维护或者其他用户理解,注释不会执行. 单行注释 SELECT GETDATE() --查询当前日期 多行注释 /* 注释有助于 理解操作的内容 查 ...
- SQL Serever学习16——索引,触发器,数据库维护
sqlserver2014数据库应用技术 <清华大学出版社> 索引 这是一个很重要的概念,我们知道数据在计算机中其实是分页存储的,就像是单词存在字典中一样 数据库索引可以帮助我们快速定位数 ...
- SQL Serever学习15——进阶
特别说明:在sqlserver2014中,不区分大小写,也就是说,SQL是大小写不敏感的 数据库模型3类: 层次模型 网状模型 关系模型 关系型数据库语言3种: DDL数据定义语言 CREATE(创建 ...
- SQL Serever学习14——存储过程和触发器
存储过程 在数据库中很多查询都是大同小异,编写他们费时费力,将他们保存起来,以后执行就很方便了,把SQL语句“封装”起来. 存储过程的概念 存储过程是一组SQL语句集,经过编译存储,可以”一次编译,多 ...
- SQL Serever学习12——数据库的备份和还原
公司的服务器奔溃了,事先没相应的保护措施,使得公司遭到了较大损失,为了以后不再出现类似事件,在系统中引入备份机制,使得数据库被破坏后损失降到最低. 数据的导出和导入 数据转换服务 数据转换服务DTS( ...
- SQL Serever学习4
SQL Server系统中数据库相关概念 在SQLServer数据库系统中分为2大类,系统数据库和用户数据库. SQLServer安装后系统会自动生成4个系统数据库,他们是Master,Model,M ...
随机推荐
- django系列1--介绍与简单原理, wsgiref模块
一.web应用框架 Web应用框架(Web application framework)是一种计算机软件框架,用来支持动态网站.网络应用程序及网络服务的开发.这种框架有助于减轻网页开发时共通性活动的工 ...
- Linux mint 安装踩坑记录
记得之前电脑上的那个Ubuntu是去年寒假的时候安装的,算下来自己用Linux也快一年了.虽然在去年暑假的时候我也曾经想过要把Ubuntu升级到18.04可是当时安装了几次都没有成功,自己也就放弃了. ...
- Usboot V1.68版本
V1.68版本,我的收藏之一 官方的介绍: 市面上现在大多数U盘都支持启动机器的功能,但是要制作启动型U盘,需要进入WIN98,现在很多人机器 上都没有98了吧,呵呵.为了做个启动盘,装一个98,多冤 ...
- samba服务器的安装与配置(之前是因为没有把共享文件权限放开!)(windows7和centOS6)
注:centOS6跟centOS7安装方法不一样哦.以下是centOS6的安装过程. 安装:yum -y install samba 启动:/etc/init.d/smb start 设置开机启动:c ...
- google Agent
一句话:改HOSTS文件 有时候要查看appengine.google.com的后台,但死活上不去,怎么办?还是那个老办法: 1.在cmd下Ping www.google.com.hk,获得IP地址, ...
- Java多线程—阻塞队列和生产者-消费者模式
阻塞队列支持生产者-消费者这种设计模式.该模式将“找出需要完成的工作”与“执行工作”这两个过程分离开来,并把工作项放入一个“待完成“列表中以便在随后处理,而不是找出后立即处理.生产者-消费者模式能简化 ...
- String相关练习
1.用代码演示String类中的以下方法的用法 (1)boolean isEmpty(): 判断字符串是不是空串,如果是空的就返回true (2)char charAt(int index): 返回索 ...
- spark持久化
spark持久化:cache .persist.checkpoint 一.cache持久化 cache实际上是persist的一种简化方式,是一种懒执行的,执行action类算子才会触发,cahce后 ...
- order by中用子查询排序
今天有个需求是对一个列表排序,但是排序字段是在另一个表中,不想用关联查询,就想能否直接在order by中用子查询,后来找到一个还挺好使.记录如下. 排序语句如下: select * from mai ...
- Eigenface与PCA人脸识别算法实验
简单的特征脸识别实验 实现特征脸的过程其实就是主成分分析(Principal Component Analysis,PCA)的一个过程.关于PCA的原理问题,它是一种数学降维的方法.是为了简化问题.在 ...
