C# SQLserver 学习

博客围绕数据库操作展开,介绍了使用视图工具操作数据库,包括标识列、各类约束设置;还阐述了脚本操作,如创建、删除数据库和表,修改表字段、插入数据等;同时讲解了查询语句,涵盖模糊查询、条件查询、聚合函数及多种关联查询方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

试图工具操作数据库

标识列(自增长)

在这里插入图片描述

约束

在这里插入图片描述

  • 主键约束

在这里插入图片描述

  • 外键约束

    设置主键 外键 关联表结构

  • 用户表
    在这里插入图片描述
    在这里插入图片描述

  • 部门表
    在这里插入图片描述
    在这里插入图片描述

  • 开始
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 设置成功

在这里插入图片描述

  • Unipue约束唯一约束

将UserName设置为唯一不能重复
在这里插入图片描述
在这里插入图片描述

  • Check约束

设置用户年龄必须大于等于18小于等于45
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • Default约束 (默认值)

设置CreateTime字段默认的创建时间
在这里插入图片描述

脚本操作数据库

脚本创建数据库

use master --选择要操作的数据库
go --批处理命令

--开始创建数据库
create database TestNewBase --数据库的名称
on primary --主文件组
(
	name = 'TestNewBase', --数据主要数据文件的逻辑名
	filename = 'D:\Microsoft SQL Server\TestNewBase.mdf', --主要文件的路径(绝对路径)
	size = 5MB, --数据库主要文件的初始大小
	filegrowth = 1MB --文件的增量
)
log on --创建日志文件
(
	name = 'TestNewBase_Log', --数据日志文件的逻辑名
	filename = 'D:\Microsoft SQL Server\TestNewBase_Log.mdf', --主要文件的路径(绝对路径)
	size = 1MB, --数据库日志文件的初始大小
	filegrowth = 10% --文件的增量
)
go

脚本删除数据库

drop database TestNewBase	
go

脚本创建表

use TestNewBase
go
create table Productinfos --创建商品表
(
           -- identity(1,1) 表示字段初始重1开始每次自增1
	Id int identity(1,1) primary key not null, -- 自增 主键 不能为空 的id字段
	ProNo varchar(50) not null,
	ProName nvarchar(50) not null,
	TypeId int not null,
	--decimal(2,1),此时,插入数据“12.3”、“12”等会出现“数据溢出错误”的异常;插入“1.23”或“1.2345...”会自动四舍五入成“1.2”;插入“2”会自动补成“2.0”,以确保2位的有效长度,其中包含1位小数。
	Price decimal(18,2) default (0.00) null,
	ProCount int  default (0) null --商品数量 默认为0 可以为空
)
go
create table ProductType
(
	TypeId int identity(1,1) primary key not null,
	TypeName nvarchar(20) not null
)
go

脚本删除表

drop table Productinfos 
go

脚本修改表 字段

-- 给表添加一列
alter table Productinfos add ProRemark nvarchar(50) null

-- 删除一列
alter table  Productinfos drop column ProRemark

-- 修改一列
alter table Productinfos alter column ProNo  nvarchar(50) null

-- 修改字段名 (慎重使用 修改后有关联的对应名称都得修改)
exec sp_rename 'Productinfos.ProCount','Count','column' 

脚本插入数据及克隆表数据

use TestNewBase
go
-- 单条插入
insert into Productinfos(ProNo,ProName,TypeId,Price,Count) values (1,'测试',1,2.8,8)

-- 多条插入
-- insert into 表面(字段名)
-- values('值1'),('值2')...
insert into ProductType(TypeName)
values('工具类1'),('工具类2'),('工具类3')
go


-- 克隆表数据
-- 1 目标表在数据库以存在
insert into Test(Names) --目标表
select TypeName  from ProductType --原表
go
--2 目标表没有在数据库中 执行后字段创建目标表
select TypeName  into Test1 --目标表
From ProductType
go

脚本修改约束

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查询语句

模糊查询

-- 模糊查询
--1、只要含有d的都查出来 (效率不高)
select * from Userinfos  where UserName like '%d%'
-- 以a开头的
select * from Userinfos  where UserName like 'a%'
-- 以3结尾的
select * from Userinfos  where UserName like '%3'


-- 2、_匹配单个字符 限制长度
select * from Userinfos where UserName like 'a______3' -- 以a开头并且以3结尾的 并且中间长度是6

select * from Userinfos where UserName like '___' --查询长度为3的


--3、[]匹配范围 匹配【】中所有字符中的任意一个
select * from Userinfos where UserName like 'ad[a,b,m,d]in'
select * from Userinfos where UserName like 'ad[a-z]in'-- 匹配a到z中所有字符中的任意一个

--3 [^] 不在[]中的所有字符之内的单个字符
select * from Userinfos where UserName like 'ad[^asd]in' --排除第三个字符为a s d 的

条件查询

select * from Userinfos  UserName --查询所有

select  top 3 * from  Userinfos   --查询前3条

select top 100 percent * from Userinfos -- 按百分比 查询百分之百

select * from Userinfos where UserAge not in(23,22) --排除年龄等于 23,22的

-- 子查询
select * From Userinfos  -- 先查询出所有用户表
where DeptId in
(  -- 在查询出 对应部门表中 DetpId 大于1的
 select DeptId  from Detpinfos where DeptId >1
)

select * from Userinfos where UserAge between 21 and 33 -- 查询 大于大于21 小于大于33 

聚合函数

use StudydDB
go
-- 聚合函数
select 1 from Userinfos

select count(1)	num from Userinfos -- 统计记录数

-- sum求和
select sum(UserAge) from Userinfos; -- 年龄总合

--avg 平均值
select avg(UserAge) from Userinfos;

--max 平均值
select max(UserAge) from Userinfos;

--min 最小值
select min(UserAge) from Userinfos;

删除 更新


update Userinfos set UserName = '新名字' where UserId = 4  -- 更新

-- 删除 
delete from Userinfos where UserId = 4;

-- 清除表(还原表最初始状态)
truncate table 表名 -- 不会记录到日志 不激发触发器 比delete from Userinfos效率高

关联查询

  • 表结构
    用户表 Userinfos
    在这里插入图片描述
    部门表 Detpinfos
    在这里插入图片描述

inner join on 关联查询


select UserId,UserName,UserAge,u.DeptId,d.DetpName
from Userinfos u
inner join Detpinfos d on d.DetpId = u.DeptId


在这里插入图片描述

隐实连接

select UserId,UserName,UserAge,u.DeptId,d.DetpName
from Userinfos u,Detpinfos d
where d.DetpId = u.DeptId 

在这里插入图片描述

左连接


select  * from Userinfos u  --结果:左表显示所有行  右表行数根据左表 没有匹配上的显示为null
left join Detpinfos d
on u.DeptId = d.DetpId 

在这里插入图片描述

右连接

select  * from Userinfos u 
right join Detpinfos d
on u.DeptId = d.DetpId 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值