前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL Server常用Sql语句

SQL Server常用Sql语句

作者头像
Sindsun
发布2019-12-06 17:45:09
5.2K0
发布2019-12-06 17:45:09
举报
文章被收录于专栏:狂码一生狂码一生

1.创建数据库:

代码语言:javascript
复制
Create database student
On primary
(name=student,
Filename=’student.mdf’,
Size=10mb,
Maxsize=unlimited,
Filegrowth=2mb)
Log on
(name=student_log,
Filename=’student_log.ldf’,
Size=4mb,
Maxsize=unlimited,
Filegrowth=10%)

2.打开指定的数据库

代码语言:javascript
复制
Use database_name
Database_name:student

3.查看数据库信息

代码语言:javascript
复制
Execute sp_helpdb student

4.重命名数据库名

代码语言:javascript
复制
Alter database student
Modify name=新的数据库名

5.删除数据库

代码语言:javascript
复制
Drop database student

6.创建表,为表添加约束

代码语言:javascript
复制
Create table student
(name varchar(20) not null primary key,--这里添加了一个主键
    Age int not null ,
    Star varchar(20) not null ,
    Idcard varchar(20) not null
    --这里也可以一次添加多个主键
    例如:primary key(列1,列2)
)
	添加约束(直接添加在定义完的列后面):
	标识列:IDENTITY(初始值,步长)
	主键:	Constraint frimary key(列名)
	唯一键:constraint unique key(列名)
	外键:constraint foreigh key(外键列) references 引用表名(应用列)
	检查约束:constraint check(检查表达式)
	默认值: constraint default 默认值

7.查看表结构信息

代码语言:javascript
复制
Execute sp_help 表名

8.向表中添加列

代码语言:javascript
复制
alter table 表名 
Add 列名 数据类型(长度) null/not null

9.修改列已有属性

代码语言:javascript
复制
Alter table 表名
Alter column 列名数据类型(长度) null/not null

10.删除列

代码语言:javascript
复制
Alter table 表名
Drop column 列名

11.删除数据表

代码语言:javascript
复制
Drop table 表名1,表名2...

12.向表中添加数据

代码语言:javascript
复制
Insert into 表名(列名1,列名2,列名2...)
Values(值1,值2,值3...)

13.修改表中的数据

代码语言:javascript
复制
Update 表名
Set 列名1=‘字段名称’,列名2=‘字段名称’......
    (如果有约束:from 相关表名1,相关表名2......)
Where 条件表达式
    例:update student
Set 星座=’白羊座’
Where 姓名=‘sindsun’

14.删除表中一行或多行数据

代码语言:javascript
复制
Delete from 表名 (或者:truncate table 表名)--这里删除表中所有数据
Where 条件表达式

15.主键约束

代码语言:javascript
复制
语法格式1:
Create table 数据表名
列名 数据类型 nul/not nulll constraint 约束名 primary key

语法格式2:
Create table 数据表名
Constraint 约束名 primary key(列名1,列名2,列名3......)

向已有表中添加主键约束:
Alter table 表名
Add constraint 约束名 primary key(列名1,列名2......)

删除主键约束:
Alter table 表名
Drop constraint 约束名

16.唯一键约束

代码语言:javascript
复制
语法格式1:
Create table 数据表名 
列名 数据类型 null/not null  constraint 约束名 unique

语法格式2:
Create table 数据表名
Constraint 约束名 unique(列名1,列名2......)

向已有表中添加唯一约束:
Alter table
Add constraint 约束名 unique(列名1,列名2......)

删除唯一约束:
Alter table 表名
Drop constraint 约束名

17.检查约束

代码语言:javascript
复制
语法格式:
Create table 数据表名
列名 数据类型 null/not null constraint 约束名 check(逻辑表达式)

向已有表中添加检查约束:
Alter table 表名
(with nocheck) --这里存在时,不检查现有约束
Add constraint 约束名 check(逻辑表达式)
注意:多表达式之间用or 连接
例:check(电话like o-9 0-9 0-9)--电话号码由每一位都由0-9组成

删除检查约束:
Alter table 表名
Drop constraint 约束名

通过check 和nocheck 设置为无效或重新有效:
Alter table 表名
Nocheck constraint 约束名 / check constraint 约束名

18.默认值约束

代码语言:javascript
复制
语法格式1:
Create table 数据表名
列名 数据类型 null/not null constraint 约束名 default 默认值

语法格式2:
Create table 数据表名
Constraint 约束名 default 默认值 for 列

向已有表中添加默认约束:
Alter table 表名
Add constraint 约束名 默认值 for 列

删除默认约束:
Alter table 表名
Drop constraint 约束名

19.外键约束

代码语言:javascript
复制
语法格式1:
Create table 数据表名
列名 数据类型 null/not null constraint 约束名 foreign key
References 参照主见表(参照列)
On delete cascade –表示级联删除
On update cascade –表示级联更行

语法格式2:
Create table 数据表名 
Constraint 约束名 foreign key(列名)
References 参照主键表(参照列)
On delete cascade –表示级联删除
On update cascade –表示级联更行

向已有表中添加外键约束:
Alter table 表名
Add constraint 约束名 foreign key(列名) 
References 参照主键表(参照列)
On delete cascade –表示级联删除
On update cascade –表示级联更行


删除外键约束:
Alter table 表名
Drop constraint 约束名

20.默认值

代码语言:javascript
复制
创建默认值:
Create default 默认值名称 as 常量表达式
例如:create default df_学时数 as 60

绑定默认值:
Execute sp_bindefault ‘默认值名称’,’表名.字段名/用户自定义的数据类型
解绑默认值:
Execute sp_unbindefault ’表名.字段名/用户自定义的数据类型

删除默认值:
Drop default 默认值名称

21.规则

代码语言:javascript
复制
创建规则:
Create rule 规则名称 as 条件表达式
例如:create rule 总学分 as  @score>0 and @score<50

绑定规则:
Execute  sp_binrule  ‘规则名称’,’表名.字段名/用户自定义的数据类型
解绑规则:
Execute  sp_unbinrule  ’表名.字段名/用户自定义的数据类型

删除规则:
Drop rule 规则名称

22.标识列

代码语言:javascript
复制
	创建标识列:
	Create table 数据表名
	列名 数据类型 identity(种子,增量)

23.自定义数据类型

代码语言:javascript
复制
	创建自定义数据类型
	Execute sp_addtype 自定义数据类型,系统数据类型名称 null/not null
	例如:execute sp_addtype type_电话 ,’varchar(8)’,”null”

	删除用户自定义数据类型:
	Execute sp_droptype 自定义数据类型

24.基本的select 语句

代码语言:javascript
复制
方法1:
  Select 字段列表 from 表名列表 where 查询条件
    	
  设置字段别名:
列表达式 as 别名
或
列名=列表达式

查询经过计算的值:
计算字段名=表达式
例如:select 学号,姓名,年龄=datediff(YY,出生时间,getdate())

过滤重复字段:
例如:select distinct 专业 from 表名

返回前面若干条记录:
Select top n/top n percent 列名1/* from 表名
例如:select top 5 * from student –查询表中前五条记录
		Select top 10 percent * from student –查询表中前10%的记录

25.条件查询语句

代码语言:javascript
复制
Select 字段列表 Into 新表名 from 表名列表 
where 查询条件
注释:新表是不存在的,新表的列和行是基于查询结果的,
---使用该语句必须在目的数据据中必须具 有create table 权限,如果表名称的是以#开头,则生成的是临时表。

26.应用WHERE子句定义搜索条件

代码语言:javascript
复制
Select 列名1,列名2...  From 表名 where 条件表达式

查询条件中常用 的运算符
运算符	用途
=,<>,>,>=,<,<=,!=	比较大小
And,or,not	设置多重条件
Between...and...	确定范围
In,notin,any|some,all	确定集合
like	字符匹配,用于模糊查询
Is[not]null	测试空值

* 比较表达式作为查询条件:
例:select 姓名,性别,年龄=datediff(YEAR,出生时间,getdate()) from 数据表
Where datediff(YEAR,生出时间,getdate())<20

* 逻辑表达式作为查询条件:
例:select 姓名,性别,年龄=datediff(YEAR,出生时间,getdate()) from 数据表
Where datediff(YEAR,生出时间,getdate())<20 and 性别=’女’

* 查找属性值在(或不在)指定范围内的元组:
例 :select 姓名,性别,年龄=datediff(YEAR,出生时间,getdate()) from 数据表
Where datediff(YEAR,生出时间,getdate()) between 19 and 20 and 性别=’女’

*更方便的限制检索数据的范围:
表达式:表达式 [not] in (表达式1,表达式2...)
例:select distinct 学号 from 数据表名 
Where 课程号 in(‘A003’,’J003’)

*模糊查询:
表达式:表达式 [not] like <匹配串>

--%:表示从0~nwh 任意字符串
--_:表示单个任意字符
--[]:表示方括号里列出的任意一个字符
--[^]:任意一个没有在方括号里列出的字符
例:“查询张姓学生的学号及姓名”
Select 学号,姓名 from 数据表名
Where 姓名 like ‘张%’

*涉及空值的查询:
例:”查询选修了课程却没有成绩的学生的学号”
select * from 数据表名
Where 成绩 is null

27.对查询结果进行排序查询

代码语言:javascript
复制
表达式:select 列名1,列名2,列名3......
Where 列名 =’值’
order by 给定条件列 [asc/desc]
注释:asc:升序    desc:降序

28.集合函数(对查询结果得到的数据集进行汇总或求平均值等各种运算)

代码语言:javascript
复制
SQL server的统计函数表
函数名	功能
SUM()	求和
AVG()	求平均值
MIN()	返回一个数列或数值表达式的最小值
MAX()	返回一个数列或数值表达式的最大值
COUNT()	返回满足SELECT语句中指定条件的记录的个数
COUNT(*)	返回找到 的行数
例:“查询学生总人数”:select 学生总人数=count(*) from 数据表名
“查询选修A005课程的学生人数”:
select 选课人数=count(distinct 学号) from 数据表名
Where 课程号=’A005’
“查询选修A001课程的学生的最高分”:
Select  A001课程最高分=MAX(成绩) from 数据表名
Where 课程号=’A001’

29.按照指定的列,对查询结果进行分组统计(课本112页)

代码语言:javascript
复制
表达式:group by 列名
[having 条件表达式]

30.使用COMPUTE BY子句可以对BY后面给出的列进行分组分组显示,并进行列的小计

代码语言:javascript
复制
例:“求每门课程的成绩大于等于90分的人数”
Select * from 数据列表
Where 成绩>=90
Order by 课程号
Compute count(课程号) by 课程号

31.交叉连接查询

代码语言:javascript
复制
表达式1:
Select 表名1.列名 , 表名2.列名...  from 表名1  cross  join 表名2
表达式2:
Select 表名1.列名, 表名2.列名...  From 表名1,表名2

32.内连接(连接条件通常采用“主键=外键”的形式)

代码语言:javascript
复制
表达式1:
Select 表名1.列名 , 表名2.列名...  from 表名1  [inner] jion 表名2 
on 表名1.列名=表名2.列名
表达式2:
Select 表名1.列名, 表名2.列名...  From 表名1,表名2
Where 表名1.列名=表名2.列名

33.外连接:

代码语言:javascript
复制
*左外连接(将左表中的所有记录分别与右表中的每条记录进行组合)
表达式:select 列表1.列名_  as 列名,列表1.列名......,列表2.列名_,列名2.列名
From 表名1 as A left [outer] join 表名2 as B on A.列名_=B.列名_

*右外连接(将左表中的所有记录与右表中的每条记录进行组合)
表达式:
select 列名列表 
     from 表名1  right  [outer]
 join 表名2  on 表名1.列名=表名2.列名
Join 表名3 on 表名3.列名=表名2.列名2...

*全外连接:(不管查询的结果是否为空,都会全部显示)
表达式:
Select 表名1.列 as 列1,表名1.列名,表名2.列2 as 列2,表名2.列名
From 表名1 full join 表名2 on 表名1.列=表名2.列

34.自连接(暂无整编)

35.合并查询(暂无整编)

36.子查询(暂无整编)

整理制作本手册主要目的在于为广大软件爱好初学者提供方便,如若发现本文有错误编辑,请联系狂码一生站长进行错误纠正。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档