数据库语句_常用数据库语句
数据库语句由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“常用数据库语句”。
sp_helpdb----------查本服务器中所有数据库 可跟库名 例:sp_helpdb 库名
------------------------------sp_databases-------------查看本服务器中可用的数据库------sp_helpfile-------------------查看当前工作着的数据库----------------------------sp_helpfilegroup---------------查看当前工作着的组的信息。可加参数,跟组名 例:sp_helpdb 库名
--sp_renamedb-----------改数据库名 例:sp_renamedb 旧库名,新库名
--select groupname from sysfilegroups where status=24---------查看文件组 =8是查只读文件组 =16是查默认文件组 =24是查即只读又默认-------------sp_dboption----------修改数据库选项值 例:sp_dboption 库名 选项 值
值决定真假 一般用:true/faule 或off/on表示
选项一般常用为:use only(数据库拥有者)single user(单一用户)read only(只读)------------dbcc shrinkdatabase---------收缩数据库 例:dbcc shrinkdatabase(库名,10)收缩库,剩余空间保留10%,后面如果不加notruncate,则释放空间操作系统,加truncateonly,归还空间给操作系统,但忽略所给的百分比数值。--------dbcc shrinkfile---------收缩文件 用法与ddcc shrinkdatabase相同。
--------alter database---------------修改数据库
用法:这是起始句,告诉要做的是修改数据库,然后再接要做什么工作。每次只做一项工作 alter database 库名
add file 文件名....to filegroup 文件组名
----------------增加库文件,格式与建库时括号里指定大小时的格式一样 add log file 文件名-------------增加日志文件 remove file 文件名---------删除库内的文件
add filegroup 文件组名-----------增加一个文件组 modify file 文件名-------------修改文件属性
modify filegroup 组名------------修改文件组属性-------------drop database--------------删除数据库
例:drop database 库名1,库名2---------可同时删除两个库----------create table 表名(列名 类型, 列名 类型)-------------------建立表
------select * from 表名---------查询表结构
------select @@dbts----------查询最后一次操作------insert into 表名(列名,列名)values(变量,变量.....)------------向表中插入数据
如省略列名,则必须把每列的变量填全,不可缺少。可以省略 into------sp_addtype 自定义类型名 系统类型名-------用户自定义类型------sp_droptype 自定义类型名-----------删除自定义类型 如有数据库正在使用该自定义类型,则不能删除------alter table---------修改表结构 用法: alter table 表名
alter column 列名 类型---------修改列的类型 drop column 列名--------删除列
add(column)列名--------增加列,实际用时不加 column---sp_help-------------查看数据库中对象信息 用法: sp_help 表名---------------查表的信息 或 sp_help 库名--------------查库信息
后面可以跟库名或者表名,是查数据库或者表的信息---sp_spaceused--------查看对象占用的空间信息 用法: sp_spaceused----------查当前库占用空间信息 或 sp_spaceused 表名----------查指定表占用空间信息
后面可以加表名查看表占空间信息。如不加,则查看当前数据库。----sp_depends------------查看对象的相关性 用法: sp_depends 表名-----------后面加表名----sp_rename---------------重新命名
用法: sp_rename 旧表名,新表名---------改表名
或 sp_rename '表名.旧列名','新列名' 'column'-------修改列名------create index--------------创建索引
用法: create index 索引名 on 表名(列名)------创建索引 或: create unique clustered index 索引名 on 表名(列名)------创建簇集唯一索引 unique是建唯一索引 clustered是建簇集索引---非簇集索引用:nonclustered--------select top---------查表中前几行
用法: select top 3 * from 表名-------查表中前三行
或: select top 10 percent * from 表名-------显示表中前10%数据------------加入percent是百分比的意思。只以大于的最小整数,无小数--------select 列名,列名,列名 from 表名-------显示表中特定的列--------select *,列名 from 表名----------查询表中所有,后面再加一列--------select distinct----------查询不重复数据 distinct用于去掉重复数据 用法: select distinct * from 表名---------查表中不重复数据
或: select distinct * into 新表名 from 旧表名------查旧表中不重复数据同时生成新表-----------------------select 列名+列名 from 表名-------允许有计算式出现,显示无列名的计算结果 如想加列名,则: select 列名+列名 as 新列名 from 表名-----------select 年龄,联系电话,cast(年龄 as varchar(2))+联系电话 from 表名--------把整型数据年龄转化为字符型与字符型数据联系电话相加--------------ctrl+o(字母O)--------清空数据。空值与别的数据运算结果为空--------------select 原始列名 别名 from 表名 select 原始列名 as 别名 from 表名 select 别名=原始列名 from 表名
--------指定别名的三种方法。非法符号可''或[]引起来,不得直接使用。--------------select * from 表名
where 年龄 between 20 and 30---------显示年龄在20到30之间的人-------between是从条件一到条件二之间的限制---------select * from 表名
where 年龄 in(20,21,22)---------显示年龄为20、21、22的人--------in是限制在这些条件内的,是显示一个取值范围---------select * from 表名
where 联系电话 like '[1-3]%'--------查电话是1-3开头的人--------like是像这些条件的语句,能用通配符:%、_、[]、[^]--------意思分别代表:所有字符、一个字符、一位上可取值、一位上不可取值--------select * from 表名 where 姓名 like '[e[]%' or 姓名 like '%e]' escape 'e'------------显示以‘[’开头或以‘]’结尾的所有数据,中间有不显示----------escape ''是指定通配符
---------------order by---------给数据排序 用法: select * from 表名
order by 年龄-----------排序显示年龄。默认为升序(asc)要降序必须加desc----------select distinct top 3 from 表名
order by 年龄 desc--------显示最大的三种年龄-----------select * from 表名
where 年龄 in(select distinct top 3 年龄 from 表名 order by 年龄)order by 年龄-----------显示年龄最小的所有人,并排序-----------select 姓名, case when MCSE成绩 >=80 and MCSE成绩=60 and MCSE成绩=0 and MCSE成绩
-----------判断语句 null是空值的意思,不能用等号连接,只能用is-----------case到end为一列里的判断,case在这里是取值,结果用于输出,不显示原值---------------select 列名1, case 列名2 when 1 then '男生' when 0 then '女生' else '未知' end from 表名
--------这里case取列名,是用于这一列每项取值比较,在这里列名2用的是bit型数据-----------select * into 库1.表1 from 库2.表2-----------把库2中表2移到库1中
----------数据维护三个命令: insert---------向表中插入数据 update---------修改表中的数据 delete---------删除表中的数据
----------insert into 表名-----------(into可有可无)(列1,列2,列3,列4)-----------表的原始列,用括号括起来 values----------有这条命令只能插入一条数据(数1,数2,数3,数4)----------插入的数值
---------可以省略原始列清单,但必须把所有列都赋值----------insert into 表1(列1,列2,列3,列4)select * from 表2 where sex=1----------将表2中sex列等于1的数据信息插入表1中-----------update 表名 set 姓名='丁一' where 姓名='李一'----------把表中姓名叫李一的改为丁一。------------where后面跟定位的列与值
-----------update 表名 set 学号=14, 姓名=陈强
where 学号=1------------把学号为1的同学改为学号14,姓名陈强---------update 表名
set 学号=年龄+7, 姓名='陈一强', 年龄=29 where 学号=14
-------把学号为14的同学资料改为年龄加七赋给学号姓名改为陈一强,年龄改为29-------如果没用where定位,则修改全部值
----------delete 表名
where 学号>30---------把学号大于30的资料删除
--------如不指定条件,则删表内所有数据。这是记录日志文件的操作--truncate table 表名
-------清空表。不记录日志文件的操作。
------create view 图名-------------新建视图 用法: create view 图名 as select 列名 from 表名----------------syscomments------------这个表存着视图代码的信息----------------alter view 图名 with encryption as
select 列名 from 表名-----------用with encyption语句给视图原代码加密-------------不可恢复,除非保留源代码
----------------sp_helptext 图名-----------查看视图源代码
---------------select text from syscomments where id =(select id from sysobjects where name ='图名')---------查视图的代码
---------------create view 图名 as select * from 源图名------------基于源图创建新视图---------------create view 图名 as select 列1 as 新列1,列2 新列2,列3=新列3---------起别名的三种方法 from 表名-----------在新视图中为列起别名,则所见的是新起的别名---------------sp_depends 表名-----------查该表的相关性,有多少表、图与之相关。-----------------create view 图名 select * from 表名 where 年龄
-----------------select 男公民.姓名,女公民.姓名 from 男公民,女公民 where 男公民.配偶编号=女公民.编号
------------查结婚男女。较原始的语法,后被下列语法取代 或: select 男公民.姓名,女公民.姓名
from 男公民 join 女公民 on 男公民.配偶编号=女公民.编号-------新的形式,在join之前省略了inner语句。
--可用左连接(*=或left outer join)右连接(=*或right outer join)全连接(full outer)----where不能做全连接,但可以做连接的约束 select * from 男公民
where 配偶编号 in(select 编号 from 女公民)--------嵌套查询,查配偶编号在女公民表中编号列中出现过的-----------------select distinct 客户表.*
from(select * from 订单表 where 订单年份=2004)as d,客户表 where d.客户号=客户表.客户号
-----子查询放在from身后,也可以放在where身后--------------select(select 子查询语句)from 表名
-------这种格式要求子查询查出的必须是唯一的数据--------------select a.员工编号,a.员工姓名,b.员工姓名 as 领导姓名 from 员工表 as a,员工表 as b where a.部门领导编号=b.员工编号
select a.员工编号,a.员工姓名,b.员工姓名 as 领导姓名
from 员工表 as a join 员工表 as b on a.部门领导编号=b.员工编号
select a.员工编号,a.员工姓名,(select 员工姓名 from 员工表 as b where a.部门领导编号=b.员工编号)as 领导姓名 from 员工表 as a---------三种查询员工领导的方法
------如果里面总经理领导编号是这空的,这种查询方法不显示空值。如要显示,则用左连接---------------sp_tables-----------查当前数据库中的所有表
----------------select * from 男公民
union------------联合。自动升序排序,并去掉重复语句 select * from 女公民
-----查询结果是男公民和女公民表的总集。如果不去掉重复的,则用 union all-----如果要降序排,则要在最后一个select语句后面加上order by 列名 desc-----用union查询时,结果集内列数必须相同,并且数据类型必须相互兼容-----多表联合查询加order by时,后面必须跟第一个结果集的列名----------------select top 2 成绩 from 表
order by 成绩 desc---------查前两种最好成绩
-----------------select top 2 with ties 成绩 from 表
order by 成绩 desc---------查前两种最好成绩所有人的信息-----------------select top 1 a.成绩
from(select distinct top 3 成绩 from 表 order by 成绩 desc)as a order by 成绩---------嵌套查询,查考成绩第三名的值-----------------select max(SQL成绩),min(MCSE成绩)from 表-----查SQL最高分和MCSE最低分
-----常用的函数:max(最大),min(最小),sum(总和),avg(平均值)-----count(*)统计表内数据的行数。count(列名)统计表内列里非空值的行数-----------------select count(*)from 表名--------查表内有多少行数据-----------------select count(列名)from 表名------------查表内列中有多少行非空数据-----------------select min(成绩),max(成绩),sum(成绩),avg(成绩),count(*),count(成绩)from 表名--------返回显示数据只有一行。中间不能加列名,如想加,可以在后面加列。-----------------group by---------分组统计,后面跟的是列名
---------上面select检索多少原始列,后面group by就要跟多少原始列 例: select 性别,avg(年龄)from 表名
group by 性别-------统计性别的平均年龄
-----------------select 年龄,avg(年龄)from 表名 where 年龄
select 年龄,avg(年龄)from 表名 group by 年龄
having
with cube-------多维统计,按不同品牌不同颜色统计,也是group by的子句--------其结果出现把各品牌统计一下,最后再统计所有品牌、所有颜色的总统计----------------select 品牌,颜色,sum(价格),avg(价格)from 汽车表 group by 品牌,颜色
with rollup------只按第一列统计,也是group by的子句---------即统计品牌各颜色和所有品牌所有颜色的总统计----------------select 品牌,颜色,价格 from 汽车表
compute sum(价格),avg(价格)----------出现两个结果集------------查原始列,另外统计所有的总和与平均值
-----------------select 品牌,sum(价格),avg(价格)from 汽车表
group by 品牌------只对汽车品牌进行统计。进行分组的列不一定用来统计----------------select 品牌,颜色,价格 from 汽车表 order by 品牌
compute sum(价格),avg(价格)by 品牌
--------按品牌分组统计。分别显示品牌各款,然后再显示函数计算值----------------exists--------存在。相当于一个判断开关。说对了执行,说错了放弃 用法: select * form 表名
where exists(select * from 表名 where 性别='男')------如果存在性别为男的,执行查询。如果不存在,则不执行命令。---------------数据完整性:1.实体完整性----用unique(唯一)或主键控制,数据不能重复
2.值域完整性----用check控制。控制的是列中不能有非法数据
3.引用完整性----一列的取值完全依赖于前一列时,用这个。
4.用户自定义完整性
----------------create table 表名
(列1 int primary key,--------设置列级主键,紧跟在设置列的后面。列2 int)-----------------create table 表名(列1 int, 列2 int, primary key(列1))--------设置表级主键,放在建表语句的最后面。-----------------create table 表名
(列1 int constraint pk_表 primary key, 列2 int)
--------把列1设为主键,并且起名叫:pk_表。constraint是命名的命令