SQL Server常用Sql语句

1.创建数据库:

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.打开指定的数据库

Use database_name
Database_name:student


3.查看数据库信息

Execute sp_helpdb student



4.重命名数据库名

Alter database student
Modify name=新的数据库名



5.删除数据库

Drop database student


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

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.查看表结构信息

Execute sp_help 表名


8.向表中添加列

alter table 表名 
Add 列名 数据类型(长度) null/not null


9.修改列已有属性

Alter table 表名
Alter column 列名数据类型(长度) null/not null


10.删除列

Alter table 表名
Drop column 列名


11.删除数据表

Drop table 表名1,表名2...


12.向表中添加数据

Insert into 表名(列名1,列名2,列名2...)
Values(值1,值2,值3...)


13.修改表中的数据

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


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

Delete from 表名 (或者:truncate table 表名)--这里删除表中所有数据
Where 条件表达式


15.主键约束

语法格式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.唯一键约束

语法格式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.检查约束

语法格式:
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.默认值约束

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

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

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

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


19.外键约束

语法格式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.默认值

创建默认值:
Create default 默认值名称 as 常量表达式
例如:create default df_学时数 as 60

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

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


21.规则

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

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

删除规则:
Drop rule 规则名称


22.标识列

	创建标识列:
	Create table 数据表名
	列名 数据类型 identity(种子,增量)



23.自定义数据类型

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

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


24.基本的select 语句

方法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.条件查询语句

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


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

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.对查询结果进行排序查询

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


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

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页)

表达式:group by 列名
[having 条件表达式]



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

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


31.交叉连接查询

表达式1:
Select 表名1.列名 , 表名2.列名...  from 表名1  cross  join 表名2
表达式2:
Select 表名1.列名, 表名2.列名...  From 表名1,表名2


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

表达式1:
Select 表名1.列名 , 表名2.列名...  from 表名1  [inner] jion 表名2 
on 表名1.列名=表名2.列名
表达式2:
Select 表名1.列名, 表名2.列名...  From 表名1,表名2
Where 表名1.列名=表名2.列名


33.外连接:

*左外连接(将左表中的所有记录分别与右表中的每条记录进行组合)
表达式: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.子查询(暂无整编)



     

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






版权声明: 此文为本站源创文章[或由本站编辑从网络整理改编],
转载请备注出处:
[狂码一生] https://www.sindsun.com/articles/21/89
[若此文确切存在侵权,请联系本站管理员进行删除!]


--THE END--