锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. 数据库
  4. SQL Server数据库常用语句

SQL Server数据库常用语句

0
  • 数据库
  • 发布于 2024-08-06
  • 0 次阅读
黄健
黄健

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

目录

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
)
  1. 删库语句

**格式:**drop database 数据库名

例如:

--删库语句
drop database Demo03
  1. 创建数据表

格式:

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='女')
)
  1. 创建视图

格式:

USE 数据库名

GO

CREATE VIEW 视图名

        as select 列名

        from 表名

GO

例如:

-- 创建视图
USE Demo01
GO
CREATE VIEW Demo01_View_student
as
	select * from student
GO
  1. 约束语句

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
)
  1. 增加语句(insert)

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

例如:

delete from student where Sno='s0001' 
delete from student where Sno='s0001' and Sage not in (20,21)
  1. 删除语句(delete)

7.1 删除表数据(一行)

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

例如:

use Demo02
go
alter table student drop constraint CK__student__Sex__108B795B

7.2 删除约束

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

例如:

select Sno as 学号 from student
select Sno 学号 from student
  1. 修改语句(update)

**格式:**UPDATE 表名 SET 列名 1 = 新值 1, 列名 2 = 新值 2 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;
  1. 查询语句(select)

9.1 查询全部

**格式:**SELECT * FROM 表名

例如:

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.2 查询某列

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

例如:

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

9.3 自定义查询

9.3.1 列名的重命名

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

例如:

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

9.3.2 列名的加减乘除

**格式:**SELECT 列名 * 0.5 FROM 表名 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.4 正倒序排列

9.4.1 升序

**格式:**ORDER BY 列名 ASC

例如:

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

9.4.2 降序

**格式:**ORDER BY 列名 DESC

例如:

select max(Sage) 最大值, min(Sage) 最小值 from student
 
 
select TU_student.Sex,MAX(student.Sage) 最大年龄,MIN(student.Sage) 最小年龄 
	from TU_student,student 
		where TU_student.Sno=student.Sno 
			group by TU_student.Sex
			
			
 
select 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.4.3 升序和降序同时存在

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

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

例如:

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

9.4.4 选择某列排序

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

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

9.5 去除重复项

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

例如:

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

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

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

例如:

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

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

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

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

例如:

-- 学号是否为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

9.7 求总行数

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

例如:

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

9.8 求最大值和最小值

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

例如:

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

9.9 求平均值

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

例如:

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'

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
  1. 常用函数

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
  1. 断开数据库

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

例如:

alter database Demo02 set offline with rollback immediate
  1. 分离数据库

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

例如:

exec sp_detach_db @dbname=N'Demo02'
  1. 附加数据库

格式:

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'
标签: #数据库 67
相关文章

深入理解MySQL InnoDB中的B+索引机制 2024-09-30 14:41

目录 一、InnoDB中的B+ 树索引介绍 二、聚簇索引 (一)使用记录主键值的大小进行排序

mysql中B+树的数据存储 2024-09-29 16:36

B+树索引基础分析 B+树 的定义 B+树是一种自平衡的树形数据结构,常用于数据库和操作系统的索引结构。它具有以下特点: 所有数据都存储在叶子节点,非叶子节点仅存储键值和子节点的指针。 叶子节点之间通过指针相互连接,形成一个有序链表,便于范围查询。 每个节点可以拥有多个键值,键值之间是有序的。 B+

MySQl索引事务(B树) 2024-09-29 16:36

目标: 索引 事务 1.索引 1.1概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。 1.2作用 数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系。 索引所起的作用类似书籍

MySQL数据库的备份与恢复 2024-09-26 17:57

MySQL数据库的备份与恢复 在现代信息时代,数据已成为企业和个人的重要资产,数据的安全性和可恢复性直接影响到业务的连续性和稳定性。MySQL作为广泛使用的关系型数据库管理系统,其数据的备份与恢复显得尤为重要。本文将详细探讨MySQL数据库的备份与恢复策略,包括备份的重要性、备份类型、常用备份方法及

MySQL中创建数据库和表 2024-09-26 17:57

在MySQL中创建数据库和表是数据库管理的基础步骤,它们构成了数据存储和操作的基础结构。下面,我将详细介绍如何在MySQL中创建数据库和表,包括创建数据库的基本语法、设计表的考虑因素、表的创建过程、数据类型和约束的使用等,力求内容详尽且不少于2000字。 一、创建数据库 在MySQL中,数据库是一个

MySQL数据库主从搭建(详细图文) 2024-09-28 15:11

MySQL数据库主从搭建(详细图文) 前言 主从原理: MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以"事件"的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.