当前位置:  数据库>sqlserver

T-SQL编程学习笔记

    来源: 互联网  发布时间:2014-08-29

    本文导语:  写的有些乱,不过都是好东西哦。 --创建数据库 create database test go use test create table table1 (    use_id int  not null,    use_name varchar(200) not null,    use_message varchar(300) not null,    use_QQ  int not null ) select * from table1   --增加...

写的有些乱,不过都是好东西哦。
--创建数据库
create database test
go
use test
create table table1
(
   use_id int  not null,
   use_name varchar(200) not null,
   use_message varchar(300) not null,
   use_QQ  int not null
)
select * from table1
 
--增加行,删除用drop
alter table table1
add use_talk varchar(200)
insert into table1 values('1','yofee','nomessage','343201118','no talk')

--修改属性
alter table table1
alter column use_QQ int not null

--添加主键约束,如果表已经有主键了,这个就没啥用勒...
alter table table1 add constraint PK_primarykey primary key (use_ID)

--修改主键约束. 先删除主键,再新建一个.
alter table table1 drop constraint PK_primarykey
alter table table1 add constraint PK_primarykey2 primary key (use_name)

--添加外键约束.先建立一个order1表,此表不必要有主键.但对应另一个表的列就一定要是主键!
create table order1
(
   for_use_ID int ,
   book_name varchar(200) not null
)
alter table order1 add constraint FK_order1_table1 foreign key (book_name) references table1 (use_name)
--显示DBMS给予primary key的名称
exec sp_help table1

--创建视图,视图是个虚拟的表,不包括数据(个人感觉几乎可以把这个和表看成一回事).
create view vw_table1_order1
as (select table1.use_ID,order1.book_name from table1,order1)
select * from vw_table1_order1
go

--数据操纵语言:DML insert into,update,delete,truncate(删除一个表中的所有行)
insert into table1 values('2','tiantian','no message','476910304','no talk')
update table1 set use_ID = 3 where use_qq='476910304'
go
select * from table1
delete from table1 where use_id = 3
truncate table table1--当然,这里有外键约束,所以没法删除哈
insert into table1 values ('2','nic','haha','512014116','Content)

--计算平均值
select avg(use_QQ) as 'QQ平均值' from table1 --最小,最大,求和类似于此
 
--触发器..不接受任何大于1000的用户编号.
exec sp_help table1
go
create trigger table1_over_1000--触发器名称
on table1 for insert,update --table1是准备控制的表名,insert,update是控制的操作
as if((select max(use_id) from table1) > 1000)
begin
print 'table1.use_id >1000.'
rollback
end
select * from table1
insert into table1 values('3','kaka','baxide','213544','Content two')
insert into table1 values('1003','ronaldo','yeshibaxide','610039','I want to go to walk!')

--存储过程,重点
--之一简单创建与调用
create procedure firstproc as select * from table1
exec firstproc
go

--之二自主式创建存储过程并调用.
create proc adddata_table1
@use_id int,
@use_name varchar(50),
@use_message varchar(200),
@use_QQ int,
@use_talk varchar(100)
as insert into table1 (use_id,use_name,use_message,use_QQ,use_talk) values(@use_id,@use_name,@use_message,@use_QQ,@use_talk)
exec adddata_table1 @use_id = 4,@use_name = 'daye',@use_message='Nothing left!',@use_QQ=343201118,@use_talk='But just want write something yet.'
select * from table1

--疑问:上面这个存储过程里面写的列属性可以和表内对应的列属性不一样吗?
--设计实验如下:
create proc add_table1
@use_id varchar,--这个不一样了哈!
@use_name varchar(50),
@use_message varchar(200),
@use_QQ int,
@use_talk varchar(100)
as insert into table1 (use_id,use_name,use_message,use_QQ,use_talk) values(@use_id,@use_name,@use_message,@use_QQ,@use_talk)
exec add_table1 @use_id = '20',@use_name = 'carlos',@use_message='爱生活,爱拉登,自然美!',@use_QQ=512014556,@use_talk='Notalk.'
select * from table1
--插入是成功了,就是和设想中的有点不一样,为什么use_id我填的是,得到的use_id却是呢? 可能是乱改了就会出错吧,以后还是尽量一致的好!
 
--判断表中是否有重复行.如果有的话就显示:contains duplicates
select distinct 'contains duplicates'
where exists(select use_id,count(*) from table1 group by use_id having count(*) > 1)

--计算出所有用户的数量
select count(*)as '总计人数' from table1

--计算出号码不一样的用户数
select count(distinct use_id) from table1

--领悟having.过滤掉use_id > 2的用户.而且用having必须先指定组.group by. 另附一个小招.把两个列连起来显示的办法  :D
select rtrim(use_message)+' '+use_talk as 'usersword' from table1
group by rtrim(use_message)+' '+use_talk
having (select count(distinct use_id) from table1)>2
阅读到这里,您已经对t-sql掌握的越来越多了,最棒的你,常来脚本学堂哦。

编辑推荐文章:
T-SQL语句创建数据库的例子(图文)
收集了一些t-sql的技巧示例
T-SQL学习之二 自定义函数和控制流语句
T-SQL学习之一 T-SQL基础
学习T-SQL中操作表的语句
备份数据库的T-SQL语句
使用T-SQL语句创建、修改、删除数据库


    
 
 

您可能感兴趣的文章:

  • T-SQL数据库约束学习笔记
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 学习T-SQL中default值的使用
  • T-SQL常用游标函数实例学习
  • T-SQL学习之一 T-SQL基础
  • 学习T-SQL中操作表的语句
  • 备份数据库的T-SQL语句
  • T-SQL常用的聚合函数
  • T-SQL实例 函数结果设置为列别名
  • T-SQL常用的数学函数
  • T-SQL 实现一个简单的 Split 函数
  • t-sql/mssql用命令行导入数据脚本的SQL语句示例
  • 使用T-SQL语句创建、修改、删除数据库
  • T-SQL语句创建数据库的例子(图文)
  • t-sql清空表数据的两种方式示例(truncate and delete)
  • T-SQL常用的元数据函数
  • T-SQL实现的一个Split函数
  • sqlserver iis7站长之家
  • 用t-sql语句完整备份数据库的例子
  • T-SQL常用的时间和日期函数
  • 使用T-SQL的Split拆分字符串的方法
  • SQLServer用t-sql命令批量删除数据库中指定表(游标循环删除)
  • SQL Server中的T-SQL的基本对象
  • T-SQL常用的系统函数
  • T-SQL 实现 Split 的方法
  • T-SQL自定义函数返回前一天或后一天日期的例子


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3