SQLServer的创建,表创建,主键,约束,模糊查询

设置
注意: 设置完成之后 重新启动
创建数据库

注意: 这个目标路径必须要有该文件名的文件夹
-- 指向 master 数据库,告诉它我们要创建一个新的数据库操作了
use master
go-- 创建数据库
create database StudentManageDB
on primary
(-- 以下四个组成部分缺一不可(注意在数据库文件中字符串要用单引号'',没有双引号""):-- 数据库文件的逻辑名(数据库服务内部使用的,外部是看不见的,叫什么名字不重要,只要不重复进行)name='StudentManageDB_data',-- 数据库物理文件名(绝对路径,SQLServe_DB 文件夹需要提前创建好),通常命名:逻辑名.mdffilename='F:\SQLServe_DB\StudentManageDB_data.mdf',-- 数据库文件初始大小(依据企业的具体项目而定)size=10MB,-- 数据文件增常量(当size大小不够用时,以一定的值来扩充,增常量的大小依据size而定)filegrowth=5MB
)
-- 创建日志文件
log on
(-- 理解同上name='StudentManageDB_log',filename='F:\SQLServe_DB\StudentManageDB_log.ldf',,size=5MB,filegrowth=1MB
)
-- 最后需要增加一个 go,代表结束了(不能加在 log on 上面,因为上面是一个整体)
go-- 然后点击 执行 按钮(如果报错,双击错误信息,可以快速定位到错误的地方)
-- 执行正常会提示:命令已成功完成。
删除


-- 指向 master 数据库,告诉它我们要创建一个新的数据库操作了
use master
go-- 判断当前数据库是否存在(在 master 里面有一个 sysdatabases 数据表,存放的是数据库信息)
-- 如果能从 sysdatabases 中找到 StudentManageDB 数据库,会返回一个结果集,那么 exists 发现有结果集的话,就会返回true
-- 在 SQL 文件中,你选中某一段代码,点击执行,可以只执行某一段代码,比如选中:select * from sysdatabases
if exists (select * from sysdatabases where name='StudentManageDB')
-- 删除数据库
drop database StudentManageDB
go
附加

SQLServer数据类型
文本类型
文本类型:字符数据包含任意字母、符号或数字字符的组合
-
char:固定长度的非 Unicode 字符数据,最大长度为8000个字符
-
比说说定义性别 Gender char(2),一个汉字占2个字符,所以定义 char(2)就行避免造成空间浪费(当然定义成 nchar(1)也行)
-
-
varchar:可变长度的非 Unicode 数据,最大长度为8000个字符
-
比说说定义姓名 Name varchar(20),因为姓名的长度不固定,可能2个汉字也可能4个汉字甚至更多,所以我们定义为可变长度。占的空间少了,可以节约出来一部分空间,占多了顶多也就20个字符了(这里名字最多10个汉字)。
-
-
text:存储长文本信息,最大长度为2^31-1 (2147483647)个字符
-
存储的字符范围就比较多了。如果定义的字符超过 char的8000个字符,那么就需要定义为 text 长文本类型的了。
-
-
nchar:固定长度的 Unicode 数据,最大长度为4000个字符
-
nvarchar:可变长度的 Unicode 数据,最大长度为4000个字符
-
ntext:存储可变长度的长文本,2^30-1 (1073741823)个字符
Unicode:是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案 注意:带n的数据类型长度是不带n的两倍。比如nchar(1)和char(2)长度相同(1个字节 nchar 等于 声明2个字节的char,所以带 n 的最大长度就降低了)
整数类型
整数类型:
-
bigint:占用8个字节,可表示范围:-2^63 ~ 2^63-1之间的整数
-
int:占用4个字节,可表示范围:-2^31 ~ 2^31-1之间的整数
-
smallint:占用2个字节,可表示范围:-2^15 ~ 2^15-1之间的整数
-
tinyint:占用1个字节,可表示范围:0 ~ 255之间的整数
精确数字类型
精确数字类型:
-
decimal:-10^38 ~ 10^38-1之间的固定精度和小数位的数字
-
numeric:功能等同于decimal
-
写法:decimal(整数,小数)和numeric(整数,小数)
-
默认:如果不指定位数,默认18位整数,0位小数,比如身份证号:numeric(18,0),当然身份证号一般不用 numeric,而是用 char,因为身份证号有的还含有 X 字符
近似数字(浮点)类型
近似数字(浮点)类型:
-
float[(n)]:表示范围:-1.79E+308 ~ 1.79E+308 (1.79乘以10的308次幂)
-
n表示精度,在1-53之间取值,当n在1-24之间时,精度为7位有效数字,占用4个字节;当n在25-53之间时,精度为15位有效数字,占用8个字节
-
real:表示范围: -3.40E+38 ~ 3.40E+38占用4个字节存储空间,相当于float(24)
日期类型
日期类型:
-
datetime:允许的范围1753-1-1至9999-1-1
-
smalldatetime:允许的范围1900-1-1至2079-6-6
-
时间精度不同:datetime精确到3/100秒;smalldatetime精确到1分钟
-
格式说明:
-
分隔符数字方式:2023-04-24或04/24/2023
-
纯数字方式:04242023
-
英文数字方式:Apr 24,2023
-
-
注意问题:日期在使用的时候需要使用单引号''括起来
货币类型
货币类型:
-
money:货币数值介于 -2^63 ~ 2^63-1之间,精确到货币单位的千分之一。
-
smallmoney:货币数据介于 -214748.3648 ~ -214748.3648之间,精确到货币单位的千分之十。
位类型
位类型:
-
bit:表示“是/否”类型的数据。(0、1 / true、false)
二进制类型
二进制类型:
-
binary:固定长度的二进制数据,最大长度为8000个字节。
-
vbinary:可变长度的二进制数据,其最大长度为8000个字节。
-
image:可变长度的二进制数据,其最大长度为2^31个字节。应用场合:可存储图片。
数据表的创建
列的特征包含的内容
- 是否为空(NULL):在输入数据时,数据库的列允许为空时,可以不输入数据,否则必须输入。列是否为空要根据数据库设计的具体要求决定,对于关键列必须禁止为空。
- 是否是标识列(自动编号)
- 是否有默认值:如果数据表的某列在用户不输入数据的时候,希望提供一个默认的内容,比如:用户如果不输入学员地址,则默认:'地址不详'。
- 是否为主键:identity(开始位,增量)主键是实体的唯一标识,保证实体不被重复。一个数据表必须有主键才有意义,否则更新和删除实体都可能会出现异常。
新建查询创建数据表
-- 创建学员信息数据表-- 不能再使用 use master 否则创建的数据表就会出现在 master 数据库中了(会出现有些学生创建完数据表,找不到了的情况)
-- 需要指向 StudentManageDB 数据库,执行完就会发现左上角的下拉框“可用数据库”发生改变了
use StudentManageDB
go-- 判断数据表是否存在
-- 数据表在某个数据库中的信息存在 sysobjects 这个数据表中
-- 选中小括号中的代码执行,可查看 sysobjects 表中的信息,其中 sys 开头的都是系统表
if exists(select * from sysobjects where name='Students')
drop table Students
go-- 创建表
create table Students
(-- 学号-- 假设学号是5位的,我们从10000开始,每次递增1StudentId int identity(10000,1),-- 姓名StudentName varchar(20) not null,-- 性别Gender char(2) not null,-- 出生日期Birthday datetime not null,-- 身份证号StudentIdNo numeric(18,0) not null,-- 年龄-- 后期可通过出生日期动态推算出来,这里只作为练习Age int not null,-- 电话号码PhoneNumber varchar(50),-- 地址StudentAddress varchar(500),-- 所属班级(外键)ClassId int not null
)
go
主键约束与唯一约束
主键(primary key)约束:如 pk_StudentId
唯一(unique)约束:如 uq_StudentIdNo
新建查询
use StudentManageDB
go-- 添加相关约束:
-- 创建主键约束(单独选中执行可查看括号中 select 的结果)
if exists (select * from sysobjects where name='pk_StudentId')
alter table Students drop constraint pk_StudentId
alter table Students add constraint pk_StudentId primary key(StudentId)
go
-- 添加完成后,刷新,打开 Students 表的列,可以看到 StudentId 是主键(钥匙了)
-- 创建唯一约束
if exists (select * from sysobjects where name='uq_StudentIdNo')
alter table Students drop constraint uq_StudentIdNo
alter table Students add constraint uq_StudentIdNo unique(StudentIdNo)
go
-- 添加完成后,也可以通过表右键 -> 设计 -> 右键:索引/键 -> 找到添加约束
检查约束与默认约束
检查(check)约束:如 ck_Age
默认(default key)约束:如 df_StudentAddress
use StudentManageDB
go-- 创建检查约束
if exists (select * from sysobjects where name='ck_Age')
alter table Students drop constraint ck_Age
alter table Students add constraint ck_Age check(Age between 18 and 30)
go
if exists (select * from sysobjects where name='ck_PhoneNumber')
alter table Students drop constraint ck_PhoneNumber
-- 范围约束:len(PhoneNumber) >= 6 and len(PhoneNumber) <= 11、len(PhoneNumber) between 6 and 11
alter table Students add constraint ck_PhoneNumber check(len(PhoneNumber) = 11)
go
-- 添加失败,与现有的数据发生冲突(通常是创建完数据表立马添加约束)
-- 如果有非法数据,要么清空,要么修改成符合要求的数据
-- select * from Students
-- go-- 创建默认约束
if exists (select * from sysobjects where name='df_StudentAddress')
alter table Students drop constraint df_StudentAddress
alter table Students add constraint df_StudentAddress default('地址不详') for StudentAddress
go-- insert into Students (StudentName,Gender,Birthday,Age,StudentIdNo,PhoneNumber,StudentAddress,ClassId) values ('测试','男','1998-05-22',25,941548445145,'19552145822',default,1)
-- 或者
-- insert into Students (StudentName,Gender,Birthday,Age,StudentIdNo,PhoneNumber,ClassId) values ('沈月','女','1998-05-22',25,941548445161,'19552145874',1)
-- go
-- select * from Students
手动操作
模糊查询
Like , between, in
`select StudentName, StudentAddress from Students where StudentAddress like '河南%'``select StudentName, StudentAddress from Students where StudentName like '%浩%'``select StudentName, Age, StudentAddress from Students where Age between 24 and 26``select StudentName, Birthday from Students where Birthday between '1999-01-01' and '2001-05-05'``select StudentName, Age, StudentAddress from Students where Age in (20,26)``select StudentName, Age, StudentAddress from Students where StudentName in ('王可','沈月')`
相关文章:
SQLServer的创建,表创建,主键,约束,模糊查询
设置 注意: 设置完成之后 重新启动 创建数据库 注意: 这个目标路径必须要有该文件名的文件夹 -- 指向 master 数据库,告诉它我们要创建一个新的数据库操作了 use master go-- 创建数据库 create database StudentManageDB on primary (-- 以下四个组成部分缺一不可…...
DeepSeek深度思考:客户端(Android/iOS)架构设计指南
目标读者:中高级开发者、架构师 适用场景:大型复杂应用开发、跨团队协作、长期维护迭代 一、架构设计核心原则 1.模块化(Modularization) 横向拆分:按功能边界划分(如登录、支付、消息模块)纵向…...
亚远景-精通ASPICE:专业咨询助力汽车软件开发高效合规
在竞争日益激烈的汽车行业,软件开发已成为决定成败的关键因素。ASPICE(汽车软件过程改进和能力确定) 作为行业公认的软件开发框架,为汽车制造商和供应商提供了实现高效、合规开发的路线图。 然而,ASPICE 的实施并非易…...
OpenCV 相机标定流程指南
OpenCV 相机标定流程指南 前置准备标定流程结果输出与验证建议源代码 OpenCV 相机标定流程指南 https://docs.opencv.org/4.x/dc/dbb/tutorial_py_calibration.html https://learnopencv.com/camera-calibration-using-opencv/ 前置准备 制作标定板:生成高精度棋…...
项目场景拷打
补偿事务解决超卖 通过补偿事务避免超卖问题,可以通过以下几种方式实现: 1. 使用数据库事务与锁机制 事务管理:将库存扣减和订单生成操作放在同一个数据库事务中,确保操作的原子性。如果事务中任何一个步骤失败,则整…...
Vue2生命周期面试题
在 Vue 2 中,this.$el 和 this.$data 都是 Vue 实例的属性,代表不同的内容。 1. this.$el this.$el 是 Vue 实例的根 DOM 元素,它指向 Vue 实例所控制的根节点元素。在 Vue 中,el 是在 Vue 实例创建时,指定的根元素&…...
【每日一题 | 2025】2.3 ~ 2.9
个人主页:GUIQU. 归属专栏:每日一题 文章目录 1. 【2.3】P8784 [蓝桥杯 2022 省 B] 积木画2. 【2.4】P8656 [蓝桥杯 2017 国 B] 对局匹配3. 【2.5】[ABC365D] AtCoder Janken 34. 【2.6】P8703 [蓝桥杯 2019 国 B] 最优包含5. 【2.7】P8624 [蓝桥杯 2015…...
使用OpenGL自己定义一个button,响应鼠标消息:掠过、点击、拖动
button需要有一个外观 外观 大小跟随窗口改变,采用纯色背景、纯色文字 文字 大小跟随窗口改变 button需要获得鼠标消息 掠过 鼠标掠过时 button 出现阴影,鼠标掠过后 button 阴影消失 点击 点击后进入相应事件 拖动 改变图标所在位置 需要在g…...
C# 上位机--变量
C# 上位机--变量 在 C# 上位机开发领域,变量是构建程序逻辑的基础元素之一。它就像是一个容器,用于存储各种类型的数据,从简单的数值到复杂的对象。正确理解和使用变量,对于开发出高效、稳定且易于维护的上位机程序至关重要。本文…...
网络安全检查漏洞内容回复 网络安全的漏洞
的核心目标是保障业务系统的可持续性和数据的安全性,而这两点的主要威胁来自于蠕虫的暴发、黑客的攻击、拒绝服务攻击、木马。蠕虫、黑客攻击问题都和漏洞紧密联系在一起,一旦有重大安全漏洞出现,整个互联网就会面临一次重大挑战。虽然传统木…...
【GIS】本地部署nominatim地理编码服务
参考:https://www.cnblogs.com/nonkicat/p/17222677.html docker 部署命令 4.5 版本 docker 用不了,需要用 4.0 版本 docker run -it -e PBF_PATH/data/你的osm文件.osm.pbf -e FREEZEtrue -e POSTGRES_MAX_CONNECTIONS100 -p 6666:8080 --…...
HTML之JavaScript对象声明
HTML之JavaScript对象声明 常用:方式1:new Object() 创建一个空对象方式2:{属性名:属性值,属性名:属性值,...函数名:function(){}} 创建一个对象<!DOCTYPE html> <html lang"en"> <head><meta charset&quo…...
PyCharm结合DeepSeek-R1
PyCharm结合DeepSeek-R1,打造专属 AI 编程助手 在程序员的日常工作中,提高编程效率、快速解决代码问题是重中之重。今天给大家分享一个强强联合的组合 ——PyCharm 插件 Continue 与 DeepSeek-R1,它们能帮你打造出强大的个人 AI 编程助手。 …...
innovus如何分步长func和dft时钟
在Innovus工具中,分步处理功能时钟(func clock)和DFT时钟(如扫描测试时钟)需要结合设计模式(Function Mode和DFT Mode)进行约束定义、时钟树综合(CTS)和时序分析。跟随分…...
1.1 单元测试核心原则
单元测试核心原则 单元测试是软件质量保障的第一道防线,其核心目标是通过最小粒度的测试验证代码逻辑的正确性。以下是编写高质量单元测试必须遵循的六大原则,结合Mockito的应用场景进行解析: 1. 快速反馈(Fast) 原则…...
前端智能识别解析粘贴板内容
原理分析 说白了就是解析特定格式的文字,并将处理好的内容回填到需要的表单中。 为了程序的健壮性,我们解析时需要考虑多种情况。 1、文字行数 单行和多行的解析可以分开 单行的情况如下面这种, 姓名: 七七 电话:788 邮箱&…...
AI工具发展全景分析与战略展望
AI工具发展全景分析与战略展望 本文基于本人最近整理并开发的AI工具推荐平台软件及相关的资料信息整理。 一、产业现状深度解析 (一)市场格局三维透视 #mermaid-svg-YLeCfJwoWDOd32wZ {font-family:"trebuchet ms",verdana,arial,sans-seri…...
(定时器,绘制事件,qt简单服务器的搭建)2025.2.11
作业 笔记(复习补充) 1> 制作一个闹钟软件 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> //按钮类 #include <QTimer> //定时器类 #include <QTime> //…...
C++17十大常用特性
玩转cpp小项目星球3周年了! 今天分享两个知识点: C17我常用的十大特性。git am与git apply对patch处理的不同。...
【机器学习】超参数的选择,以kNN算法为例
分类准确度 一、摘要二、超参数的概念三、调参的方法四、实验搜索超参数五、扩展搜索范围六、考虑距离权重的kNN算法七、距离的计算方法及代码实现八、明可夫斯基距离的应用九、网格搜索超参数 一、摘要 本博文讲解了机器学习中的超参数问题,以K近邻算法为例&#…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...





