设为首页 收藏本站
查看: 814|回复: 0

[经验分享] 备忘sql语句

[复制链接]

尚未签到

发表于 2016-11-9 07:35:24 | 显示全部楼层 |阅读模式
  /*
SQL语言分类
主要有以下分类:
  1.数据定义语言(Date Definition Language,DDL):
   create table 可以创建表、alter table 可以对表结构进行修改、drop table 删除某个表。
  2.数据查询语言:select用户检索数据库数据。
  3.数据操纵语言(Date Manipulation Language,DML):insert、update、delete。
  4.数据控制语言(Date Control Language,DCL):
   grant 用于给用户或者角色授予权限、 revoke 收回用户或者角色所具有的权限。
  5.事务控制语言(Transactional Control Language,TCL):
   commit 用于确认已经进行的数据库改变、
   rollback 用于取消已经进行的数据库改变、
   savepoint 用于设置保存点,以取消部分数据库改变。
  
  SQL语句的编写规则:
   SQL关键字、对象名、列明,不区分大小写;但SQL语句引用字符值和日期值,必须要注意大小写
  */
  
  --创建删除数据库
create database test;
drop database test;
  --创建表
use Fm_Data;
create table OldTable
(
id int identity(1,1) not null primary key,
name varchar(100) not null,
);
go
  
  --删除表
drop table OldTable;
  
  --增删改查
insert into NewTable(name,birthday) values('jack','2010-10-10');
update NewTable set name='mike' where id =1;
delete from NewTable where id = 1;
select * from NewTable;
  
  --使用旧表创建新表
select * into NewTable from OldTable;
  
  --给现有表增加列
alter table test add birthday datetime not null;
  
  --修改表主键
alter table test add Constraint PK_test_id primary key(id)
alter table test drop PK_test_id;
  
  --创建删除索引
create index idxname on test(name);
drop index test.idxname;
  
  --创建删除视图
create view view_test as select * from test;
drop view view_test;
  
  --高级查询
select * from OldTable left join NewTable on OldTable.id = NewTable.id;
select * from OldTable right join NewTable on OldTable.id = NewTable.id;
select * from OldTable inner join NewTable on OldTable.id = NewTable.id;
  
  --子查询
select * from OldTable where id in (select id from NewTable)
  
  --sql分页
1.
select top @pageSize * from NewTable where id not in
(select top @pageSize*(@pageIndex-1) id from NewTable)
2./*仅限sql server 2005 游标存储过程分页性能较差*/
select * from (
select row_number() over(order by id ) as RowNumber,id from NewTable as a
) a where RowNumber between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize
order by id
  
  --几个高级查询词
/*
将单个结果集返回, 不包含会重复的行
*/
select name from OldTable
union
select name from NewTable
  /*
在结果中包含所有的行
*/
select name from OldTable
union all
select name from NewTable
  
  --存储过程
create proc proc_name(@id int,@name varchar(100))
as
select * from NewTable where id = @id;
/*测试下*/
declare @id int;
set @id=1;
declare @name varchar(100);
set @name = 'ass';
exec proc_name @id,@name
/*删除存储过程*/
drop proc proc_name
  
  --备份数据库
use master
backup database Fm_Data
to disk = 'E:/DBbackup/mydb.bak'--注意:路径的文件夹是必须已经创建的
  
  --还原数据库
use master
restore database Fm_Data
from disk ='E:/DBbackup/mydb.bak'
with replace
  
  --日程安排提前五分钟提醒
select * from 日程安排 where datediff('minute',开始时间,getdate())>5
  
  --删除重复记录
delete from NewTable where id in(
select max(id) from NewTable group by name having count(id) >1
)
  
  --列出数据库里所有的表名
select name from sysobjects where type='U'
  
  --列出表里的所有的字段
select name from syscolumns where id = object_id('NewTable')
  
  --初始化表
truncate table NewTable
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-297689-1-1.html 上篇帖子: SQL的优化 下篇帖子: sql 转义字符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表