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个:

  1. 主键约束,就是添加主键,要求主键字段唯一并且不为空
  2. 唯一约束,要求字段唯一
  3. 检查约束,就是CHECK约束,限制字段格式
  4. 默认约束,就是DEFAULT约束,给字段默认值
  5. 外键约束,就是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

原文地址:https://www.cnblogs.com/1906859953Lucas/p/9535953.html

时间: 2024-10-08 19:47:08

SQL Serever学习10——T-SQL语句的相关文章

【SQL Server 学习系列】-- sql 随机生成中文名字

原文:[SQL Server 学习系列]-- sql 随机生成中文名字 1 DECLARE @fName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20)) -- 姓氏 2 DECLARE @lName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20)) -- 名字 3 4 INSERT @fName VALUES 5 ('赵'),('钱'),('孙'),('李')

SQL Serever学习13——数据库编程语言

编程基础 注释 注释命名来对一些语句进行说明,便于日后维护或者其他用户理解,注释不会执行. 单行注释 SELECT GETDATE() --查询当前日期 多行注释 /* 注释有助于 理解操作的内容 查询当前日期 */ SELECT GETDATE() 变量 在T-SQL执行命令时,可以申明变量临时存储各种数据,申明时被初始化为NULL,只能代替数值,不能代替对象或关键字 局部变量 必须先用DECLARE 语句定义,局部变量在名称前加@ SELECT 赋值语句哟啊保证结果不超过一条数据,否则将会把

SQL Serever学习15——进阶

特别说明:在sqlserver2014中,不区分大小写,也就是说,SQL是大小写不敏感的 数据库模型3类: 层次模型 网状模型 关系模型 关系型数据库语言3种: DDL数据定义语言 CREATE(创建书库或数据库对象) , ALTER, DROP DML数据操作语言 SELECT(检索表或视图) , UPDATE ,  INSERT , DELETE DCL数据控制语言 GRANT(授予权限) , REVOKE(撤销权限) , DENY(拒绝权限,并禁止从其他角色继承许可权限) 系统数据库4个:

SQL Serever学习16——索引,触发器,数据库维护

sqlserver2014数据库应用技术 <清华大学出版社> 索引 这是一个很重要的概念,我们知道数据在计算机中其实是分页存储的,就像是单词存在字典中一样 数据库索引可以帮助我们快速定位数据在哪个存储页区,而不用扫描整个数据库 索引一旦被创建就会数据库自动管理和维护,增删改插座数据库都会对索引做修改 索引分类: 聚集索引 非聚集索引 包含性列索引 索引视图 全文索引 xml索引 聚集索引,就是相当于排序的字典(将表中的数据完全重新排序),一个表只有一个,所占空间相当于表中数据的120%,数据建

SQL Serever学习17——数据库的分析和设计

数据库的分析和设计 设计数据库确定一个合适的数据模型,满足3个要求: 符合用户需求,包含用户所需的所有数据 能被数据库管理系统实现,如sqlserver,oracle,db2 具有比较高质量,容易理解,使用方便,便于维护,效率高 设计步骤分为6步: 需求分析,与用户沟通,达成统一意见 概念结构设计,创建E-R图 逻辑结构设计,从E-R图转为关系模型,1对多,多对多,建立数据模型,数据库三范式 物理结构设计,确定数据类型,是否可空,确定主键,外键,索引 数据库实施 数据库运行维护 数据库的三范式:

SQL Serever学习5——数据库配置

数据库的主要属性 限制访问 用来设置数据允许用户访问的状态,或者说允许多少客户访问,有3个选项: MULTI_USER(多个),大多数数据库正常状态,允许多个用户同时访问该数据库. SINGLE_USER(单个),通常由于维护数据库时,一次只允许一个用户访问,杜绝了其他用户访问正在维修的数据库,减少数据丢失以及错误. RESTRICED_USER(限制),一种特殊状态,一些特殊功能的数据库才会选用,只有特殊身份用户才能访问数据库,这些特殊用户包括:db_owner(数据库拥有者),dbcreat

SQL Serever学习6——数据表

数据表 表的构成 数据库中的基本表由记录(行)和字段(列)构成,SQLServer2008每个表可以有1024个列,每个列可以有8060字节(不包括iamge,ntext,text类型). 记录(Record):表中的行,保存某一个相关属性的一组数据. 字段(Field):表中的列,保存某些事物的某一个属性值. 表的分类 系统表,保存系统信息,只有管理员有权使用 临时表,数据库运行中创建的临时存储数据的表,断开连接被删除 分区表,数据量很大时,可以将其中数据分成多个部分,分别放在数据库的多个文件

SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比

原文:SQL点滴10-使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比 今天偶尔看到sql中也有with关键字,好歹也写了几年的sql语句,居然第一次接触,无知啊.看了一位博主的文章,自己添加了一些内容,做了简单的总结,这个语句还是第一次见到,学习了.我从简单到复杂地写,希望高手们不要见笑.下面的sql语句设计到三个表,表的内容我用txt文件复制进去,这里不妨使用上一个随笔介绍的建立端到端的package的方法将这些表导入到数据库中,具体的就不说了. 从这里下载文件employ

mysql学习之三:sql语句学习

SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统.SQL 语句用于取回和更新数据库中的数据.SQL 可与数据库程序协同工作,比如MySQL. MS Access.DB2.Informix.MS SQL Server.Oracle.Sybase 以及其他数据库系统. 不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT.UPDATE.DELETE.INSERT.WHERE 等等).