SqlServer数据库【基础-更删改查】

news2025/4/8 2:08:55

一、创建语句

(1)创建数据库

1.检查系统中是否存在这个数据库,存在则删除

格式:

if exists(select * from sysdatabases where name='数据库名')
drop database 数据库名
go

例子:

if exists(select * from sysdatabases where name='musicDB')
drop database musicDB
go

2.创建数据库

格式:

create database 数据库名
go

例子:

create database musicDB
go

(2)创建表格

1. 检查数据库中是否存在这个表,存在则删除

格式:

if exists(select * from sysobjects where name='表名')
drop table 表名

例子:

if exists(select * from sysobjects where name='T_speciality')
drop table T_speciality;

2.创建表

格式:

create table 表名(
列名1 数据类型,
列名2 数据类型
…………
)
go

例子:

create table T_speciality(
specialityid varchar(20) primary key,
specialityname varchar(20)
)
go

二、删除语句

(1)删除数据库

格式:

drop database 数据库名

例子:

drop database mystyle

(2)删除表格

格式:

drop table 表格名称

例子:

drop table tbl_Music

(3)清空数据

格式:

truncate table 表名

例子:

truncate table tbl_Music

(4)删除某行数据

格式:

delete from 表名 where 列名='条件'

例子:

delete from tbl_Music where musicName='菊花台'

注意:当没有where条件时则会清空整张表的数据

(5)删除某列数据

格式:

alter table 表名 drop column 列名

例子:

alter table tbl_Music drop column singer_id

注意:使用该语句则会将该列的所有的数据都删除,包括列名

三、修改语句

(1)修改表格

1.修改表名

格式:

exec sp_rename '旧表名', '新表名';

例子:

exec sp_rename 'tbl_Music', 'musics';

注意:更改对象名的任一部分都可能会破坏脚本和存储过程。所以不赞成修改表名

2.修改表属性

增加一列
格式:

alter table 表名
add 列名 字符类型

例子:

alter table tbl_Music
add score varchar(20)

3.修改列名名字

格式:

exec sp_rename '表名.旧列名','新列名','column'

例子

exec sp_rename 'musics.musicid','id','column'

注意:这样修改同样会破坏储存过程,建议先删除这一列再添加新的列。

4.修改列数据类型

格式:

alter table 表名 alter column 列名 新的数据类型

例子:

alter table musics alter column clicknumber varchar(20)

注意:主键不能修改,字符型的不能转为int型的。

5.修改表格数据

格式:

update  表名 set 列名='修改的值'   
where 条件

例子:

update  musics set clicknumber='200'   
where id=3

注意:主键不能修改

四、查询语句

数据库查询的基本格式为:

  • select ----输出(显示)你要查询出来的值
  • from -----查询的依据,数据来源
  • where -----筛选条件(对依据(数据库中存在的表))
  • group by -----对筛选后的数据 进行分组
  • having ----- 筛选条件(对分组后的结果再次筛选)
  • order by -----将结果进行排序
    基本语法格式顺序不能变,但可以缺省

(1)单表查询

1.查询全部

格式:

select * from 表名
-- “*”代表所有列

例子:

select * from musics

2.查询指定列

格式:

select 列名 as '别名',列名
from 表名
-- 也可以不给列取别名

例子:

select id as '账号',musicname
from musics

(2)多表查询

内连接全连接左连接右连接
Inner joinFull Outer joinLeft joinRight join
  • 内连接:此语句的结果为同时匹配表a和表b的记录集。即内连接取的是两个表的交集。
  • 外连接:(全连接,左右连接)语句的结果为表a与表b的并集,即任意一个表的内容都将被查询出来,如果另一个表无对应的项,则显示为null
  • 三种连接只是表格的对应顺序不一样

1.内连接

格式:

select *
from 表名1 别名1
inner join 表名2 别名2
on 别名1.主键=别名2.外键 

例子:

select *
from [dbo].[tbl_Music] t1
inner join [dbo].[tbl_Menu] t2
on t1.musicId=t2.musicId 

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

2.外连接

格式:

select *
from 表名1 别名1
[full/left/right]join 表名2 别名2
on 别名1.主键=别名2.外键 

例子:

select *
from [dbo].[tbl_Music] t1
full join [dbo].[tbl_Menu] t2
on t1.musicId=t2.musicId 

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

(3)嵌套查询

格式:

select *
from 表名1 别名1
inner join(
子查询语句
) 别名2
on 别名1.共同拥有的键名=别名2. 共同拥有的键名
go

例子:

select t4.userName as '用户名',t4.menuName as'歌单名',t3.musicName as '歌曲名',t3.clickNumber as'点击数量'
from [dbo].[tbl_Music] t3
inner join(
select t1.userId,t1.userName,t2.musicId,t2.menuName
from [dbo].[tbl_User] t1
inner join [dbo].[tbl_Menu] t2
on t1.userId=t2.userId) t4
on t3.musicId=t4.musicId
go

注意:
子查询语句中不能使用select *,应为使用select * 查询了所有的内容,就会由两个相同的列,并且在查询中必须把与主查询相同的键给查询出来,否则无法进行连接查询。

(4)聚合查询

1.聚合函数

聚合函数如下所示:

  • min —最小
  • max —最大
  • sum —和
  • avg —平均
  • count —统计(个数)
    聚合函数一般和分组group by一起使用
    例:
select avg(age)from student group by sex

2.聚合查询

SELECT 所有查询的内容
FROM 表
GROUP BY 分组条件

例子:

- • 统计每个客户经理所经手的质押业务数
SELECT t1.agency_id AS '客户经理编号',COUNT(*)AS '客户数量'
FROM
t_agency_info t1
RIGHT JOIN
t_impawn_info t2
ON t1.agency_id=t2.agency_id
GROUP BY t2.agency_id

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

注意:
一旦使用min ,max ,sum,avg ,count 只能查询相对应的聚合数,和分组条件,其他的都不能再查询了。

(5)排序

排序分为降序和升序。
升序:

select *  from emp order by id asc

降序:

select * from emp order by id desc

按多列排序:

select * from emp order by id asc,name asc

限制固定行数显示:

select top 2 id,name from emp where deptno=2

返回百分之多少行:

select top 20 percent id,name from emp where deptno=2

(6)常用的系统函数

在这里插入图片描述
日期参数及缩写如下表所示:

日期部分缩写
yearyy, yyyy
monthmm, m
daydd, d
weekwk, ww
weekdaydw
hourhh
minutemi, n

例子:

-- 获取当前年份
 select datename(yy,GETDATE());
 select datename(yyyy,GETDATE());
 select datename(year,GETDATE());

五、插入语句

(1)给表格添加新的列

格式:

alter table 表名
add 列名 数据类型
go

例子:

alter table tbl_Music
add score varchar(20)
go

(2)添加表格数据

方法一:安照列名依次给出数据值,不能交换顺序,数据类型不能出错

insert into demo values
 ('zhang',25,1),
('li',28,2)

方法二:安照指定顺序给出数据值

insert into demo (nname,age,sex) values ('san',18,0)

方法三:交换顺序,数值按照列名给就行

insert into demo (nname,sex,age) values ('san',1,22)

方法四:没给数值的列显示null

insert into demo (nname) values ('li')

2.复制表中数据到另一个表中:

insert into demo1(nname,nage,asex) select nname,age,sex from demo

注意事项

  • 1:每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验;
    * 2:每个数据值的数据类型、精度和小数位数必须与相应的列匹配;
  • 3:不能为标识列指定值,因为它的数字是自动增长的;
  • 4:如果在设计表的时候就指定了某列不允许为空,则必须插入数据;
  • 5:插入的数据项,要求符合检查约束的要求
  • 6:具有缺省值的列,可以使用default(缺省)关键字来代替插入的数值

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

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

相关文章

Redis事务(4)

⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容:个人博客系统 ⭐我的文档网站:http://xyhwh-nav.cn/ 文章目录 Redis事务1、Redis事务概念2、应用1、MULTI开启事务2、事务失败…

【数据库】数据库索引结构分析,MySQL单表最多能存放多少数据

经常听到MySQL单表最多能存放2千万数据,多了就要考虑分表,依据是什么呢? 本文以MySQL为例,默认数据页大小是16KB。 索引内容结构 非叶子节点 主键页号 假如: 主键是bigint,8bit;页号是4bit&…

Vue中v-html用法以及指令汇总

操作数组的方法 : push:数组最后位置新增元素 pop: 删除最后一个元素 shift: 删除第一个元素 unshift:往前面加一个元素 splice:在数组的指定位置插入、删除、替换一个元素 sort: 数组排序…

力扣算法数学类—Excel表列名称

目录 Excel表列名称 题解: 代码: Excel表列名称 168. Excel表列名称 - 力扣(LeetCode) 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。 例如: A -> 1 B -> 2 C -> 3 ... Z -…

CENTOS安装 graylog5.0

我们直接开始 基础环境和java sudo yum install epel-release 并安装带有 sudo yum install pwgenyum install java-1.8.0-openjdk-headless.x86_64 MONGODB 安装数据库 6.0 [mongodb-org-6.0] nameMongoDB Repository baseurlhttps://repo.mongodb.org/yum/redhat/$relea…

ensp静态路由

要求: 1.全网可达 2.拓朴中所需地址全部基于192.168.0.0/24 3.静态路由(不许使用其他动态) 4.R2环回需要汇总 拓朴图: 将192.168.0.0/24划分为5个子网, 得: 192.168.0.0/27 192.168.0.32/27 192.168.0.64/…

在Windows Server2016上搭建Active Directory域控服务

搭建服务端 使用Windows2016数据中心版完成 1. 配置服务器角色 2. 选择服务器角色 3. 选择当前服务器4. 选择Active Directory和DNS角色5. 确认安装 6. 提升为Domain Controller域控服务器 7. 设置根域 8. 配置保护密码 9. DNS 10. NetBIOS配置 11. 指定数据文件位置 12. 确…

Flink AggregateFunction窗口函数,merge何时执行

1.前言 在我们使用Flink DataStream API编写业务代码时,aggregate()算子和AggregateFunction无疑是非常常用的。编写一个AggregateFunction需要实现4个方法: /** Licensed to the Apache Software Foundation (ASF) under one* or more contributor li…

瀚高企业版数据库V6单机安装指导手册(Linux)

目录 瀚高企业版数据库V6单机安装指导手册(Linux) 1. 环境准备 1.1 防火墙设置 1.1.1 开放数据库使用端口 1.1.2 关闭防火墙 1.2 检查时区和时间 1.3 创建highgo用户 1.4 检验安装包 2. 软件安装 2.1 图形化安装 3. 设置highgo用户环境变量 4.…

RocketMQ无损扩容实战

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党 背景 假设目前我们的线上部署的RocketMQ部署的是一主一从,现在随着业务的发展,或者是我们需要做一些促销活动,会有突发流量高…

【unity细节】为什么发射炮弹实例化出来了却无法移动

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏:unity细节和bug ⭐为什么发射炮弹实例化出来了却无法移动⭐ 文章目录 ⭐为什么发射炮弹实例化出来…

JS高级进阶

JavaScript 进阶 - 第1节 学习作用域、变量提升、闭包等语言特征,加深对 JavaScript 的理解,掌握变量赋值、函数声明的简洁语法,降低代码的冗余度。 理解作用域对程序执行的影响能够分析程序执行的作用域范围理解闭包本质,利用闭包…

java mybatis

1.框架介绍 为什么使用框架? (1)框架效率高,成本低 (2)框架是别人写好的构建,我们只需学会如何使用它【可维护性高】 (3)框架是基于MVC的思想【web层独有的思想】的拓展而开发的…

DeepC 实用教程(四)分析

目 录 一、前言二、DeepC分析三、新建分析 / New Analysis四、Response Storage五、Static Analysis Options六、Dynamic Analysis Options七、Multiple Analysis八、提交分析/执行分析九、参考文献 一、前言 SESAM (Super Element Structure Analysis Module&#…

【动手学深度学习】GPU初步认识与使用

【动手学深度学习】GPU初步认识与使用 查看显卡 使用nvidia-smi命令来查看显卡信息 pytorch中每一个数组都有一个设备,将其称之为环境,那么默认情况下都是在CPU上,有时候环境是GPU 计算设备 默认情况下,张量是在内存中创建的&a…

Codeforces Round 885 (Div. 2) A题

原题div.2A 很容易看不懂样例4,就是我们以为此题只能走一分钟,但是事实上不是的,这个人可以走无限分钟,我们借助样例2来推演出来ps:可能不是正解,正解可以去看官方题解或者别的题解,但是也大差不差 #inclu…

应用在电磁炉中的常用IGBT管 IHW20N135R5 优势及其特性

应用在电磁炉中的常用IGBT管 IHW20N135R5深力科 在TO-247封装中具有单片集成反向导通二极管的反向导通R5 1350 V,20 A RC-H5 IGBT已针对感应烹饪应用的苛刻要求进行了优化。1350 V RC-H5 IGBT采用单片集成二极管,非常适合软开关应用,如感应烹…

时序预测 | MATLAB实现LSTM时间序列未来多步预测

基本介绍 实际工程中,未来预测是值得研究的课题之一,大部分深度模型在短期预测上表现不错,在中长 期预测上往往欠佳。 本文依然借助LSTM专栏的一些基础预测,探讨未来预测的简单实现方式。 程序设计 直接多步预测 直接多步预测的本…

【分布式应用】Ceph的实战应用

目录 一、创建 CephFS 文件系统 MDS 接口1.1服务端操作1)在管理节点创建 mds 服务2)查看各个节点的 mds 服务3)创建存储池,启用 ceph 文件系统4)查看mds状态,一个up,其余两个待命,目…

【深度学习】张量的广播专题

一、说明 张量广播(tensor broadcasting)是一种将低维张量自动转化为高维张量的技术,使得张量之间可以进行基于元素的运算(如加、减、乘等)。在进行张量广播时,会将维度数较少的张量沿着长度为1的轴进行复制…