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

一、创建语句

(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.hqwc.cn/news/27010.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言之函数补充defer语句,递归函数,章节练习

defer语句是go语言提供的一种用于注册延迟调用的机制,是go语言中一种很有用的特性。 defer语句注册了一个函数调用,这个调用会延迟到defer语句所在的函数执行完毕后执行,所谓执行完毕是指该函数执行了return语句、函数体已执行完最后一条语句…

基于SpringBoot+vue的校园闲置物品租售系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

h5live 2.0.1 合入测试

直接超过1个G 有消息进来,就是不显示

2023年知识库软件爆火的有哪些?

2023年知识库软件爆火的可能性有很多,以下是一些可能的候选者: 一、Baklib:Baklib是一款新兴的知识库软件,它提供了强大的知识管理和组织功能。它能够帮助用户收集、整理和共享知识,并提供智能搜索和推荐引擎&#xf…

Docker容器常用命令大全:熟练掌握使容器优化更加高效

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

微服务-Nacos环境安装

文章目录 1. 微服务1.1 微服务概括 2. 微服务框架2.1 Spring Cloud2.2 Spring Cloud alibaba/Spring Cloud Netflix2.3微服务框架组件(alibaba) 3 Nacos3.1 Nacos介绍3.3 Naocs工作结构3.3 Nacos功能3.4 环境准备下载安装 1. 微服务 1.1 微服务概括 单体架构有问题,所以做项目…

设计模式之桥接模式

写在前面 本文看下桥接设计模式。 1:介绍 1.1:什么时候桥接设计模式 当一个业务场景由多个变化维度组成,并且这多个变化的维度到底有多少种情况是不确定,比如现在我们要为瑞幸咖啡写一个系统,很自然的,…

云计算的学习(四)

四、云计算中的存储基础知识 1.云计算虚拟化中的存储架构 ①虚拟化存储 在虚拟化存储架构中,最底层为物理磁盘。 底层的硬件组成存储池,存储池分为NAS存储和SAN存储;NAS存储需要文件系统;SAN存储需要对存储池进行逻辑划分产生逻…

Stability AI 把绘画门槛打为 0!

本文由 GPT- 4 所创作,配图由 Stable Doodle 生成。 编者按 Stability AI 上新了! 其收购的 Clipdrop 发布了全新的 Stable Doodle 工具,我在使用后最为直观的感受就是 —— 把绘画门槛打下来了。 在 Stable Doodle 之前,使用各…

动手学深度学习v2 p2 线性神经网络 线性回归

3. 线性神经网络 回归(regression)是能为一个或多个自变量与因变量之间关系建模的一类方法。 在自然科学和社会科学领域,回归经常用来表示输入和输出之间的关系。 在机器学习领域中的大多数任务通常都与预测(prediction&#xf…

node.js 第一天

目录 使用readFile()方法读取文件内容 判断文件是否读取成功 判断文件是否写入成功 案例 考试成绩整理 path path.join() path.basename() 使用readFile()方法读取文件内容 // 1. 导入 fs 模块,来操作文件 const fs require(fs)// 2.…

(ceph)资源池poll管理

资源池 Pool 管理 前面的文章中我们已经完成了 Ceph 集群的部署(ceph部署: 传送门),但是我们如何向 Ceph 中存储数据呢?首先我们需要在 Ceph 中定义一个 Pool 资源池。Pool 是 Ceph 中存储 Object 对象抽象概念。我们可以将其理解…