SQL?Server数据库常用语句总结大全 |
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_FileDemo02_DataDemo02.mdf', size=5MB ) log on ( name='Demo02_Log', filename='M:SQLServer_FileDemo02_DataDemo02_Log.ldf', size=2MB ) 或者(数据库名Demo03和路径中的文件Demo03_Data.mdf可以不一致) --创建数据库(自定义初始值) create database Demo03 on primary ( name='Demo03', filename='M:SQLServer_FileDemo03_DataDemo03_Data.mdf', size=5MB ) log on ( name='Demo02_Log', filename='M:SQLServer_FileDemo03_DataDemo03_Log.ldf', size=2MB ) 2. 删库语句格式:drop database 数据库名 例如: --删库语句 drop database Demo03 3. 创建数据表格式:
例如: 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 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 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'Demo02', @filename1=N'M:SQLServer_FileDemo02_DataDemo02.mdf', @filename2=N'M:SQLServer_FileDemo02_DataDemo02_Log.ldf' 总结到此这篇关于SQL Server数据库常用语句总结的文章就介绍到这了,更多相关SQLServer常用语句内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持! |