SQL Server数据库常用语句

目录

1. 建库语句

2. 删库语句

3. 创建数据表

4. 创建视图

5. 约束语句

5.1 主键约束(PRIMARY KEY)

5.2 外键约束(FOREIGN KEY)

5.3 非空约束(NOT NULL)

5.4 唯一约束(UNIQUE)

6. 增加语句(insert)

7. 删除语句(delete)

7.1 删除表数据(一行)

7.2 删除约束

8. 修改语句(update)

9. 查询语句(select)

9.1 查询全部

9.2 查询某列

9.3 自定义查询

9.3.1 列名的重命名

9.3.2 列名的加减乘除

9.4 正倒序排列

9.4.1 升序

9.4.2 降序

9.4.3 升序和降序同时存在

9.4.4 选择某列排序

9.5 去除重复项

9.6 把一个表的数据插入另一个表

9.7 求总行数

9.8 求最大值和最小值

9.9 求平均值

9.10 连接查询

9.10.1 第一种连接方式

9.10.2 第二种连接方式

9.11 模糊查询(LIKE)

9.11.1 以特定字符开头的字符串

9.11.2 以特定字符结尾的字符串

9.11.3 匹配包含特定字符的字符串

9.11.4 使用 _ 匹配单个字符

9.11.5 使用多个 _ 匹配多个单个字符

9.12 分组查询(GROUP BY)

10. 常用函数

10.1 判断语句(CASE WHEN)

10.2 日期差(DATEDIFF)

10.3 数据类型转换(CAST)

11. 断开数据库

12. 分离数据库

13. 附加数据库


1. 建库语句

格式:create database 数据库名;

例如:

--创建库
create database Demo01;

格式:创建数据库(自定义初始值)

create database 数据库名

on primary

(

         name='逻辑名称',

        filename='文件存储路径',

)

log on

(

        name='逻辑名称',

        filename='文件存储路径',

)

例如:

--创建数据库(自定义初始值)
create database Demo02
on primary
(name='Demo02',filename='M:\SQLServer_File\Demo02_Data\Demo02.mdf',size=5MB
)
log on
(name='Demo02_Log',filename='M:\SQLServer_File\Demo02_Data\Demo02_Log.ldf',size=2MB
)

或者(数据库名Demo03和路径中的文件Demo03_Data.mdf可以不一致)

--创建数据库(自定义初始值)
create database Demo03
on primary
(name='Demo03',filename='M:\SQLServer_File\Demo03_Data\Demo03_Data.mdf',size=5MB
)
log on
(name='Demo02_Log',filename='M:\SQLServer_File\Demo03_Data\Demo03_Log.ldf',size=2MB
)

2. 删库语句

格式:drop database 数据库名

例如:

--删库语句
drop database Demo03

3. 创建数据表

格式:

use 数据库名

GO

create table 表名

(

        列名 数据类型(长度) 列级束缚

)

例如:

use Demo01
GO
create table student
(Sno char(5) NOT NULL UNIQUE,  -- UNIQUE 唯一值Sname char(8) NOT NULL,Sage smallint default 20,  --default 默认值Sex char(2) check(Sex='男' or Sex='女')
)

4. 创建视图

格式:

USE 数据库名

GO

CREATE VIEW 视图名

        as select 列名

        from 表名

GO

例如:

-- 创建视图
USE Demo01
GO
CREATE VIEW Demo01_View_student
asselect * from student
GO

5. 约束语句

5.1 主键约束(PRIMARY KEY)

格式一:列名 数据类型(长度) PRIMARY KEY

例如:

-- 主键约束
use Demo02
GO
create table student1
(Sno char(5) primary key
)

格式二:CONSTRAINT 约束名 PRIMARY KEY(列名)

例如:

use Demo02
GO
create table student2
(Sno char(5),Sname char(5),constraint c1 PRIMARY KEY(Sno)
)

5.2 外键约束(FOREIGN KEY)

格式:CNOSTRAINT 约束名 FOREIGN KEY(列名) REFERENCES 被引用列的名称(列名)

例如:

use Demo02
GO
create table student3
(Sno char(5),constraint c2 primary key(Sno)
)
GO
create table student4
(Sno char(5),Cno char(5),constraint c3 primary key(Cno),constraint c4 foreign key(Sno) references student3(Sno))

5.3 非空约束(NOT NULL)

格式:列名 数据类型(长度) NOT NULL

例如:

-- 非空约束
use Demo02
GO
create table student5
(Sno char(5) not null
)

5.4 唯一约束(UNIQUE)

格式:列名 数据类型(长度) UNIQUE

例如:

-- 唯一约束
use Demo02
go
create table student6
(Sno char(5) unique
)

6. 增加语句(insert)

格式:INSERT INTO 表名(列名1,列名2,列名......) VALUES(数据1, 数据2, 数据......);

例如:

insert into student(Sno, Sname) values ('s0001', '张三');

7. 删除语句(delete)

7.1 删除表数据(一行)

格式:DELETE FROM 表名 WHERE 列名='值'

例如:

delete from student where Sno='s0001' 
delete from student where Sno='s0001' and Sage not in (20,21)

7.2 删除约束

格式:ALTER TABLE 表名 DROP CONSTARAINT 约束名

例如:

use Demo02
go
alter table student drop constraint CK__student__Sex__108B795B

8. 修改语句(update)

格式:UPDATE 表名 SET 列名1=新值1, 列名2=新值2 WHERE 过滤条件

例如:

update student set Sno='s001',Sname='李四',Sage=25,Sex='女' where Sname='张三'

9. 查询语句(select)

9.1 查询全部

格式:SELECT * FROM 表名

例如:

select * from student

9.2 查询某列

格式:SELECT 列名 FROM 表名 WHERE 查询条件

例如:

select Sno,Sname from student where Sage=20

9.3 自定义查询

9.3.1 列名的重命名

格式:SELECT 列名 as 重命名 FROM 表名 WHERE 查询条件

例如:

select Sno as 学号 from student
select Sno 学号 from student

9.3.2 列名的加减乘除

格式:SELECT 列名*0.5 FROM 表名 WHERE 查询条件

例如:

select Sno 学号,Sname 姓名,Sage*0.5 年龄 from student where Sage=20;
select Sno 学号,Sname 姓名,Sage+100 年龄 from student where Sage=20;
select Sno 学号,Sname 姓名,Sage/4 年龄 from student where Sage=20;

9.4 正倒序排列

9.4.1 升序

格式:ORDER BY 列名 ASC

例如:

select Sno,Sname,Sage,Sex from student order by Sage asc

9.4.2 降序

格式:ORDER BY 列名 DESC

例如:

select Sno,Sname,Sage,Sex from student order by Sage desc

9.4.3 升序和降序同时存在

格式:ORDER BY 列名1 DESC, 列名2 ASC

首先按照列名1进行降序排序,然后在相同的列名1值的情况下,再按照列名2进行升序排序。

例如:

select Sno,Sname,Sage,Sex from student order by Sage desc, Sno asc
select Sno,Sname,Sage,Sex from student order by Sage desc, Sno desc

9.4.4 选择某列排序

格式:ORDER BY 列数 DESC 或者 ORDER BY 列数 ASC

select Sno,Sname,Sage,Sex from student order by 1 desc
select Sno,Sname,Sage,Sex from student order by 3 asc

9.5 去除重复项

格式:SELECT DISTINCT 列名1, 列名2 FROM 表名 WHERE 查询条件

例如:

-- 学生表年龄不重复
select distinct Sage from student
-- 学生表姓名和年龄不重复
select distinct Sname,Sage from student

9.6 把一个表的数据插入另一个表

格式一:(当要插入的表不存在时)SELECT 列名 INTO 新表名 FROM 表名 WHERE 查询条件

例如:

select * into TU_student from student where Sex='男'

格式二:(当要插入的表本身便存在时)

        INSERT into 表名1(列名1, 列名2)

        select 列名1, 列名2 from 表名2 where 查询条件

例如:

insert into TU_student(Sno,Sname,Sage,Sex)
select * from student where Sex='女'-- 跨数据库插入
insert into Demo02.dbo.student(Sno,Sname,Sage,Sex)
select * from Demo01.dbo.student

9.7 求总行数

格式:SELECT count(*) from 表名 WHERE 查询条件

例如:

select count(*) from student--  性别为男的行数
select count(*) from student where Sex='男'

9.8 求最大值和最小值

格式:SELECT max(列名), min(列名) FROM 表名 WHERE 查询条件

例如:

select max(Sage) 最大值, min(Sage) 最小值 from studentselect TU_student.Sex,MAX(student.Sage) 最大年龄,MIN(student.Sage) 最小年龄 from TU_student,student where TU_student.Sno=student.Sno group by TU_student.Sexselect TU_student.Sname,MAX(student.Sage) 最大年龄,MIN(student.Sage) 最小年龄 from TU_student,student where TU_student.Sno=student.Sno group by TU_student.Sname

9.9 求平均值

格式:SELECT AVG(列名) FROM 表名 WHERE 查询条件

例如:

select AVG(Sage) from studentselect Sex 性别,AVG(Sage) 平均年龄 from student group by Sex

9.10 连接查询

9.10.1 第一种连接方式

格式:SELECT * FROM 表名1, 表名2 WHERE 表名1.列名 = 表名2.列名

例如:

select TU_student.Sno,student.Sname,TU_student.Sage,student.Sex from TU_student,student where TU_student.Sno = student.Sno

9.10.2 第二种连接方式

格式:SELECT 列名 FROM 表名1 JOIN 表名2 ON 表名1.列名 = 表名2.列名

例如:

select TU_student.Sno,student.Sname,TU_student.Sage,student.Sex from student join TU_student on student.Sno = TU_student.Sno

9.11 模糊查询(LIKE)

9.11.1 以特定字符开头的字符串

格式:SELECT 列名 FROM 表名 WHERE 列名 LIKE ’特定字符%‘

例如:

select * from student where Sno like '0%'

9.11.2 以特定字符结尾的字符串

格式:SELECT 列名 FROM 表名 WHERE 列名 LIKE ’%特定字符‘

例如:

select * from student where Sname like '%三'

9.11.3 匹配包含特定字符的字符串

格式:SELECT 列名 FROM 表名 WHERE 列名 LIKE ’%特定字符%‘

例如:

select * from student where Sno like '%0%'

9.11.4 使用 _ 匹配单个字符

格式:SELECT 列名 FROM 表名 WHERE 列名 LIKE ’特殊字符_‘

例如:

select * from student where Sno like '00_'

9.11.5 使用多个 _ 匹配多个单个字符

格式:SELECT 列名 FROM 表名 WHERE 列名 LIKE ’特定字符__‘

例如:

select * from student where Sno like 's___'

9.12 分组查询(GROUP BY)

格式:SELECT 列名 FROM 表名 GROUP BY 分组

例如:

--  男女分别多少人
select Sex, count(*) 人数 from student group by Sex

10. 常用函数

10.1 判断语句(CASE WHEN)

格式:SELECT 列名1, 列名2, 列名... , CASE WHEN 判断条件 then 结果为真的返回值 else 结果为假的返回值 end from 表名

例如:

-- 学号是否为001
select Sno 学号,case  when Sno='001' then 'true' else 'false' end 是否为001 from student-- 性别是否为男
select Sno 学号,Sname 姓名,Sage 年龄, Sex 性别,case  when Sex='男' then 'true' else 'false' end 性别是否为男 from student

10.2 日期差(DATEDIFF)

格式:SELECT DATEDIFF(day,日期1,日期2) AS 列的别名(例如:日期差多少天) FROM 表名 where 逻辑条件

例如:

SELECT DATEDIFF(day,'2024-03-01','2024-04-01') AS 日期差多少天SELECT DATEDIFF(day,day1,day2) AS 日期差多少天 from a_dateTable

10.3 数据类型转换(CAST)

格式:SELECT CAST(列名 as 数据类型) FROM 表名 where 逻辑条件

例如:

-- 吧001学号转为int数据类型
select CAST(Sno as int) from student where Sno='001'
-- 吧年龄转为char数据类型
select CAST(Sage as char) from student

11. 断开数据库

格式:ALTER DATABASE 数据库名 SET OFFLINE WITH ROLLBACK IMMEDIATE

例如:

alter database Demo02 set offline with rollback immediate

12. 分离数据库

格式:EXEC sp_detach_db @dbname=N'数据库名'

例如:

exec sp_detach_db @dbname=N'Demo02'

13. 附加数据库

格式:

EXEC sp_attach_db @dbname=N'数据库名',

        @filename1=N’.mdf文件的存储路径‘, @filename2=N'.ldf文件的存储路径'

例如:

exec sp_attach_db @dbname=N'Demo02', @filename1=N'M:\SQLServer_File\Demo02_Data\Demo02.mdf',@filename2=N'M:\SQLServer_File\Demo02_Data\Demo02_Log.ldf'

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

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

相关文章

【Canvas技法】绘制正三角形、切角正三角形、圆角正三角形

【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>绘制正三角形、切角正三角形、圆角正三角形</title><style …

自己操作逆向案例一——某竞赛网登录密码加密,超级简单,泪目了!

网址&#xff1a;aHR0cHM6Ly9leGFtem9uZS5zYWlrci5jb20vcXVlc3Rpb24vZXhwbG9yZQ 打开开发者工具&#xff0c;点击账号密码登录&#xff0c;进行抓包 先进行搜索&#xff0c;发现一下子就找到了&#xff0c;且看上去很像MD5加密&#xff0c;打上断点&#xff0c;再次点击登录。…

华南理工大学程序设计竞赛 - A-KNN算法 (二分)

二分距离 期末考试在即&#xff0c;紧张预习数据挖掘的 Capps 对如下问题十分感兴趣&#xff1a; 在一维空间中有点集 S S S 包含 n n n 个点&#xff0c;用什么算法能快速回答如下 q q q 次查询&#xff1a; 第 i i i 次查询给出点 p i p_i pi​ 和整数 k i k_i ki​​…

linux 自定义命令/别名

参考资料 Linux(Ubuntu)自定义命令的使用Linux/Ubuntu系统自定义Shell命令Ubuntu/Linux 操作系统 自定义命令 目录 一. 为路径取别名二. 修改.profile文件2.1 .profile简介2.2 需求2.3 修改.profile文件 三. 创建软链接 一. 为路径取别名 ⏹需求&#xff1a;有一个work文件夹…

前端面试问题汇总 - JS篇

1. JS的数据类型&#xff0c;如何判断js的数据类型&#xff1f; 数据类型有&#xff1a;Number&#xff0c;String&#xff0c;Boolean&#xff0c;Undefined&#xff0c;Null&#xff0c;Object&#xff0c;Array 其中&#xff0c;Number&#xff0c;String&#xff0c;Boolea…

NVM的安装与配置

目录 一、简介二、下载2.1、windows环境下载地址2.2、安装 三、配置3.1、查看可安装版本3.2、安装版本3.3、使用和切换版本3.4、模块配置 四、其他4.1、全局安装pnpm4.2、常用nvm命令 一、简介 NVM&#xff0c;全称为Node Version Manager&#xff0c;是一个流行的命令行工具&a…

VScode中C++里CompileDebug(winlinux)

C在vscode中配置 1.编译器环境搭建&#xff0c;c_cpp_properties.json生成 前置&#xff0c;mingw64添加入系统环境变量&#xff0c;编辑快捷键&#xff1a;ctrlshiftp修改选项&#xff1a;编译器路径 C:/mingw64/bin/g.exe IntelliSense 模式&#xff0c;这个应该是再说明一…

ucore 实验物理内存管理篇

实验汲取知识 基于段页式内存地址的转换机制页表的建立和使用方法物理内存的管理方法 首先了解如何发现系统中的物理内存&#xff1b;然后了解如何建立对物理内存的初步管理&#xff0c;即了解连续物理内存管理&#xff1b;最后了解页表相关的操作&#xff0c;即如何建立页表…

算法--目录

algorithm: 十种排序算法 二分法-各种应用 algorithm: 拓扑排序 算法中的背包问题 最长子序列问题 前缀和-解题集合 差分数组-解题

第41篇:有限状态机<四>

Q&#xff1a;本期我们介绍有限状态机的应用之二&#xff1a;米里状态机“1101”序列检测器。 A&#xff1a;摩尔状态机1101序列检测器有5个状态&#xff0c;而米里状态机只有4个状态。当状态为s_3且输入为1时&#xff0c;状态机输出1。这里输出与输入一起被标志在状态转移箭头…

vue3 动态class和style

1、需求&#xff1a;一个删除的弹窗&#xff0c;点击会提示“是否需要删除XXXXX&#xff08;name&#xff09;”&#xff0c;但是name不固定&#xff0c;所以删除弹窗的width不能写死。&#xff08;如果不设置width&#xff0c;本项目的弹窗会自适应变得特别长&#xff09;

mybatis自制插件+注解实现数据脱敏

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 mybatis自制插件注解实现数据脱敏 前言数据脱敏的实现方式构思从哪个地方进行脱敏&#xff1f;它怎么知道我什么数据需要脱敏 项目实现拦截器实现注解实现枚举实现效果图展示 前言 在数字时代&#x…

Java哈希查找(含面试大厂题和源码)

哈希查找&#xff08;Hash Search&#xff09;是一种基于哈希表&#xff08;Hash Table&#xff09;的数据查找方法。哈希表通过使用哈希函数将键&#xff08;Key&#xff09;映射到表中的位置来存储数据&#xff0c;从而实现快速的数据访问。哈希查找的效率通常取决于哈希函数…

hive了解系列一

“ 随着智能手机的普及&#xff0c;互联网时代红利的爆发&#xff0c;用户数量和产生的数据也越发庞大。为了解决这个问题&#xff0c;提高数据的使用价值。 Hadoop生态系统就被广泛得到应用。 在早期&#xff0c;Hadoop生态系统就是为处理如此大数据集而产生的一个合乎成本效益…

力扣第20题有效的括号

typedef char STDataType; //动态栈 #define allocator_may_return_null 1typedef struct ST {STDataType* _a;int _top;//栈顶元素int _capacity;//最大容量 }Stack; //初始化栈 void StackInit(Stack *pst);//入栈 void StackPush(Stack* pst, STDataType x);//出栈 void Sta…

英语写作中“大量的”“重大的”“显著的”substantial、considerable、significant的用法

一般“大量的”“重大的”会用a great number of 、a great amount of 、a plenty of 、great等&#xff0c;这些表达都过于trivial &#xff0c;用好substantial、considerable、significant 会对写作增色不少。 一、对于可数事物&#xff0c;用a considerable/substantial n…

小程序变更主体需要多久?

小程序迁移变更主体有什么作用&#xff1f;小程序迁移变更主体的好处有很多哦&#xff01;比如可以获得更多权限功能、公司变更或注销时可以保证账号的正常使用、收购账号后可以改变归属权或使用权等等。小程序迁移变更主体的条件有哪些&#xff1f;1、新主体必须是企业主体&am…

每日OJ题_BFS解决最短路①_力扣1926. 迷宫中离入口最近的出口

目录 力扣1926. 迷宫中离入口最近的出口 解析代码 力扣1926. 迷宫中离入口最近的出口 1926. 迷宫中离入口最近的出口 难度 中等 给你一个 m x n 的迷宫矩阵 maze &#xff08;下标从 0 开始&#xff09;&#xff0c;矩阵中有空格子&#xff08;用 . 表示&#xff09;和墙&…

Hibernate入门经典与注解式开发大全

本博文主要讲解介绍Hibernate框架&#xff0c;ORM的概念和Hibernate入门&#xff0c;相信你们看了就会使用Hibernate了! 什么是Hibernate框架&#xff1f; Hibernate是一种ORM框架&#xff0c;全称为 Object_Relative DateBase-Mapping&#xff0c;在Java对象与关系数据库之间建…

【uniapp踩坑记】使用z-paging组件,微信小程序端加载不出来问题解决

使用z-paging组件&#xff0c;h5端加载正常&#xff0c;微信小程序端显示空白 今天做分页列表&#xff0c;在插件市场找到了z-paging&#xff0c;照着示例代码写了进去&#xff0c;在h5端能正常使用&#xff0c;在小程序端一直显示空白 尝试过以下无效操作&#xff1a; 1.清除所…