SqlSerer数据库【进阶】

news2024/11/26 16:38:24

六、约束

(1)主键约束

1.单一主键

格式:

alter table 表名
add constraint 主键名 primary key (列名)
go

例子:

alter table t_student
add constraint pk_t_student primary key (stud_id)
go

注意:在建表的时候主键不能为空

2.复合主键

复合主键即两个字段可以不唯一,但是两个字段联合起来必须是唯一的,例如一些手机,华为p10,魅族Pro10,iphone pro12,只有商标和型号联合起来才是一个唯一且不重复的值.
格式:

alter table 表名
add primary key(列名1,列名2)
go

例子:

alter table [dbo].[phone]
add primary key(brand,type)
go

注意:
在建表的时候这两个字段必须非空,因为主键非空且唯一.

3.主键标识列

标示列为非空自动增长且 不可自行修改的 主关键字一般用来在一个表中引用来自于另一个表中的特定记录 其为非空 唯一的 其可以有一个以上的列合为主键 相同点就是都不可为空且都是唯一的 能理解这些就够用了 给分吧!
格式:

create table 表名(标识列名 int identity(1,1) primary key not null )

其中(1,1)是表示从1开始,每行自增1
例子:

create table phone(id int identity(1,1) primary key not null )

(2)外键约束

格式:

alter table 表名 add constraint 外键关系名foreign key (外键名) references 
主键表名 (主键)

例子:

alter table t_user add constraint FK_t_user_t_group_id foreign key (groupid) references t_group (id)

(3)唯一约束

格式:

alter table 表名 add constraint 约束关系名unique(列名)

例子:

alter table Users add constraint UQ_Users_Name unique(Name)

(4)检查约束

1.普通检查约束

格式:

alter table Users add constraint 约束关系名 check(约束条件)

例子:

alter table Users add constraint CK_Users_Age check(Age>0 and Age<100)

(5)初建表格多个约束同时进行

例子:

create table Users (
Id int  identity(1,1) primary key ,
Name nvarchar(32) unique,
Phone nvarchar(16) not null,
Email nvarchar(128) default('123456@qq.com'),
Age  int check(Age>0 and Age<100),
Sex  char(2) check(Sex in('男','女')),
createtime datetime default(getdate())
foreign key(pid)references partment(pid)
)

(6) 删除约束

alter table 表名 drop constraint 约束名

七、视图

视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上,视图中并不存放数据,而是存放在视图所引用的原始表(基表)中,同一张原始表,根据不同用户的不同需求,可以创建不同的视图
视图的用途:
  筛选表中的行
  防止未经许可的用户访问敏感数据
  降低数据库的复杂程度
  将多个物理数据库抽象为一个逻辑数据库

(1)创建视图

格式:

 create view 视图名称
 as
sql语句

例子:

-- 4.5编写视图查询借书人的姓名,手机号码和地址;
 create view VW_borrow_student
 as
select c.card_name as '姓名',c.mobile as '电话号码'
from  [dbo].[T_borrow] B
left join [dbo].[T_card] as C
 on b.card_no=c.card_no
 go

(2)删除视图

格式:

drop view  视图名

例子:

drop view  VW_borrow_student

(3)更新视图

视图是一张虚拟表不适合更新,可以先删除再修改.我只遇到过这种情况可以更新.

create view  VW_1
as
select * from [dbo].[musics]
where musicName='菊花台'

update VW_1
set score='100'
where id='3'

select * from VW_1
-- 其中的score被更新至200

在这里插入图片描述

(4)查询视图

格式:

例子:

select * from VW_1

八、存储过程

存储过程(procedure)用来执行管理任务或应用复杂的业务规则,存储过程可以带参数,也可以返回结果。
存储过程可以包含数据操纵语句、变量、逻辑 控制语句等,比如:单个select语句,select语句块,select语句与逻辑控制块。
存储过程优点: 
  执行速度更快
  允许模块化程序设计
  提高系统安全性
  减少网络流通量

(1)创建存储过程

1.不带参数的存储过程

格式:
创建:

create proc 存储过程名
as
sql语句

查询:

exec 存储过程名

例子:

create proc proc_1
as
select * from [dbo].[musics]

exec proc_1

2.带参数的存储过程

格式:
创建:

create proc 存储过程名
 @参数名 参数类型
 as
带有数据的sql语句,其中参数又@参数名代替
go

查询:

exec 存储过程名 参数
例子:
-- 4.6 编写存储过程,查询指定图书名称的借阅次数。 
 create proc book_times
 @num int
 as
 select bookname from [dbo].[T_book] where loan=@num
 -- end
 go
 
exec book_times 30

3.带输入参数,输出参数的存储过程

例1:

create proc P_Titles_ByTitleID_SelectPrice2
@title_id varchar(6), --输入参数
@price money output   --输出参数
as
select @price=price from titles where  title_id=@title_id
go

----执行
declare @price2 money               ----1,先声明变量
exec P_Titles_ByTitleID_SelectPrice2    ----2.之后在调用
@title_id='BU1032',
@price=@price2 output               ----3.配参后面要加output标识
select @price2                        ----4.之后在查声明变量

例2:

create proc my_musice
@score varchar(20),
@musicName varchar(40) output
as
select @musicName=musicName 
from [dbo].[musics]
where score=@score
go

declare @musicName2 varchar(40) 
exec my_musice
@score='20',
@musicName=@musicName2 output
select @musicName2

结果展示:
在这里插入图片描述

4.带变量和返回值的存储过程

--创建
use test
go
create proc testReturn
 @deptno char(10),
 @deptname char(10)
 as
 declare @dname char(10)
 select @dname=name from dept where id=@deptno
 if (@dname=@deptname)
  return 1
  else
  return 0
go
--执行
DECLARE @rs char(10)
 exec @rs=testReturn @deptno='1', @deptname='soft'
 select @rs

(2)删除存储过程

格式:

drop proc 存储过程名

例子:

drop proc my_musice

(3)存储过程,视图,聚合查询综合应用

例子:

--将点击数最高的那首歌插入某个歌单。
-- 创建视图查找到点击量最高的歌曲id
create view vw_maxclick
as
select musicid
from [dbo].[tbl_Music]
where clickNumber=(select max(clickNumber) 
-- 利用子查询查到最高点击量,根据点击量查找点击量最高的歌曲
from [dbo].[tbl_Music])
go

-- 创建带参数的存储过程,将查询的结果赋值给参数
create proc inser_music
@menuName varchar(40),
@userid int,
@musicid int
as
insert into [dbo].[tbl_Menu] values
( @menuName,@userid,@musicid
)
go
-- 执行储存过程
declare @menuName varchar(40),@userid int,@musicid int
select @menuName='我喜欢的歌曲',@userid=1, @musicid=(select * from vw_maxclick)
exec inser_music @menuName ,@userid,@musicid 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/765436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于小波哈尔法(WHM)的一维非线性IVP测试问题的求解(Matlab代码实现)

&#x1f4a5;1 概述 小波哈尔法&#xff08;WHM&#xff09;是一种求解一维非线性初值问题&#xff08;IVP&#xff09;的数值方法。它基于小波分析的思想&#xff0c;通过将原始问题转化为小波空间中的线性问题&#xff0c;然后进行求解。以下是一维非线性IVP测试问题的求解…

2023年郑州/杭州/深圳CSPM-3中级国标项目管理认证招生

CSPM-3中级项目管理专业人员认证&#xff0c;是中国标准化协会&#xff08;全国项目管理标准化技术委员会秘书处&#xff09;&#xff0c;面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系&#xff0c;建立健全人才职业能力评价和激励机制的要…

基于时空RBF神经网络的混沌时间序列预测(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

TCP的三次握手过程

TCP 是面向连接的协议&#xff0c;所以使用 TCP 前必须先建立连接&#xff0c;而建立连接是通过三次握手来进行的。三次握手的过程如下图&#xff1a; 刚开始客户端处于 closed 的状态&#xff0c;服务端处于 listen 状态。 第一次握手&#xff1a;客户端给服务端发一个 SYN 报…

python_day10_复写,类型注解

复写&#xff1a;重写父类属性 class Phone:IMEI Noneproducer "XM"def call_by_5g(self):print("5g网络")# 复写 class myPhone(Phone):producer "HUAWEI"def call_by_5g(self):print("复写")# 调用父类成员:方式1# print(f"…

Notepad++ 安装 compare 插件比较文本

1、打卡Notepad软件&#xff0c;找到插件选项&#xff0c;若是英文版的&#xff0c;则对应选择Plugins->Plugins admin&#xff1a; 2、搜索compare插件&#xff0c;点击安装&#xff1a; 3、此时会弹出一个下载插件页面&#xff1a; 4、很可惜&#xff0c;我网络原因&#…

[游戏开发][Unity] TPS射击游戏相机实现

技术难点&#xff1a;由于是第三人称射击游戏&#xff0c;角色和相机之间有夹角&#xff0c;所以枪口点和准星是有误差的&#xff0c;下面是和平精英手游截图&#xff0c;我用AK射击zhuzi using System.Collections; using System.Collections.Generic; using UnityEngine;publ…

MyBatis 系列2 -- 增加、删除、修改操作

1. 前言 上一系列介绍了MyBatis的背景,以及为什么我们使用MyBatis进行操作数据库,还实现了使用MyBatis进行查询数据库的,接下来我们继续将使用MyBatis操作数据库的其他三种基本操作进行总结. 目录 1. 前言 2. 增加用户操作 3. 修改用户操作 4. 删除用户操作 5. 多表查询操…

unity背景缓动动效

这算是一个很常见的小功能&#xff0c;比如我们在玩横版游戏的时候&#xff0c;背景动画会以一定的频率运动&#xff0c;其实现方式也有很多种。 比如&#xff0c;使用UGUI的imageanimtion动画的方式&#xff0c;自己k桢实现。 还可以使用材质球本身的功能来实现&#xff0c;关…

datatables.editor 2.2 for PHP/JS/NodeJS Crack

使用数据表编辑器在几分钟内创建自定义、完全可编辑的表 编辑器添加了三种编辑模式&#xff0c;以适应任何类型的应用程序 新增功能 编辑 删除 搜索&#xff1a; 名字位置办公室开始日期工资名字位置办公室开始日期工资佐藤爱里会计东京2008-11-28$162&#xff0c;700安吉莉卡拉…

linux服务器中安装java JDK1.8版本

我们远程连接自己的linux服务器 然后 我们先执行 sudo yum update更新一下软件包 然后 有个需要选择的地方 按y 然后 我们可以直接用 yum 来安装Java 1.8版本 执行 sudo yum install java-1.8.0-openjdk然后 问你是否选择按 y即可 搞完之后 我们检查一下 输入 java -vers…

Elasticsearch:什么是矢量搜索以及它如何改进搜索结果

释放矢量搜索的力量&#xff1a;提高搜索结果效率 想象一下这样一个世界&#xff1a;搜索引擎不仅能理解你输入的单词&#xff0c;还能理解它们背后的上下文和含义。 这就是矢量搜索发挥作用的地方&#xff0c;它彻底改变了我们查找信息的方式并改善了用户的搜索体验。 在本文…

Erdas专题图制作

1.导入需要做图的数据 2.在新建一个地图view 3.绘制图框 出现以下对话框&#xff0c;在已打开的Viewer中图象上任意位置点一下 框选需要绘制的区域 框选完成后&#xff0c;回到窗口&#xff0c;再次确定输出地图所包含的实际区域&#xff0c;点击ok即可完成框选 得到如下图像框…

【Python】数据可视化利器PyCharts在测试工作中的应用

点击跳转原文&#xff1a;【Python】数据可视化利器PyCharts在测试工作中的应用 实际应用&#xff1a;常态化性能压测数据统计 import random from pyecharts.charts import Line, Bar, Grid, Pie, Page from pyecharts import options as opts # 查询过去 8 次数据 time_rang…

序列模型学习

1、序列模型的应用场景&#xff08;RNN&#xff09; &#xff08;1&#xff09;、在进行语音识别时&#xff0c;给定了一个输入音频片段 &#x1d465;&#xff0c;并要求输出对应的文字记录 &#x1d466;。这个 例子里输入和输出数据都是序列模型&#xff0c;因为 &#x1…

动态规划——买卖股票的最佳时机含手续费

题目链接 leetcode在线oj题——买卖股票的最佳时机含手续费 题目描述 给定一个整数数组 prices&#xff0c;其中 prices[i]表示第 i 天的股票价格 &#xff1b;整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易&#xff0c;但是你每笔交易都需要付手续费。如果…

美的代工厂雪祺电气过会:拟募资6亿元,产能利用率下滑仍要扩产

撰稿|行星 来源|贝多财经 近日&#xff0c;深圳证券交易所主板披露的信息显示&#xff0c;合肥雪祺电气股份有限公司&#xff08;以下简称“雪祺电气”&#xff09;获得上市委会议通过。据贝多财经了解&#xff0c;雪祺电气的上市申请材料于2023年2月28日获得受理。 天眼查信…

Ceph 块存储系统 RBD 接口

-创建 Ceph 块存储系统 RBD 接口- 1、创建一个名为 rbd-demo 的专门用于 RBD 的存储池 ceph osd pool create rbd-demo 64 642、将存储池转换为 RBD 模式 ceph osd pool application enable rbd-demo rbd3、初始化存储池 rbd pool init -p rbd-demo # -p 等同于 --pool4、…

前端多行文本省略号

.title {height: 4rem;line-height: 2rem;// 多行文本省略号overflow: hidden;font-size: 1.4rem;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;}

Rancher 系列文章-Rancher 升级

概述 之前在 天翼云上用 4 台机器安装了一个 1 master&#xff08;及 etcd) 3 node 的 K3S 集群&#xff0c;并在其上使用 Helm 安装了 Rancher 2.6.3 版本。 前几天发现 Rancher 官方推荐的最新版为&#xff1a;v2.6.4 所以决定先后对 Rancher 和 K3S 集群进行升级。 根据…