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'
总结
到此这篇关于sql server数据库常用语句总结的文章就介绍到这了,更多相关sqlserver常用语句内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论