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
as
	select * 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 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.9 求平均值

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

例如:

select AVG(Sage) from student


select 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'

  • 15
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值