数据库高级应用这门课已经结束了,好喜欢这门课,好喜欢这个萌萌哒数据库老师。老师说过,以后不管搞什么都要扯到数据库,所以谨防自己忘记(清理电脑内存),就把我的数据库学习报告也贴上来吧。。

一.本人电脑安装sql server 2012并能正常运行并且本人独立解决了安装过程中遇到的各种 问题。

二.基本表操作DDL

1.数据库操作

--创建数据库
create database Test
--删除数据库
drop database Test

2.创建表

create  table tablename(fieldname fieldtype)

Eg.

create table test1
(sid varchar(50),
sname varchar(20),
sage int)

3.设计表

  --为表增加一列alter table test1add spwd varchar(50)--修改表的列的类型alter table test1alter column spwd varchar(20)--删除表的某列alter table test1drop column spwd--删除表drop table test1--删除表中的所有数据truncate table table_namedelete from table_name

三.记录操作DML

 --插入操作--insert into tablename values(……)insert into test1 values('1254-cbd487-1bc2','momo',22) --删除操作--delete …… from tablename (where ……)delete from test1 where sid='1254-cb1487-1254'--更新操作--update tablename set ……(需要修改的数据) whereupdate test1 set sid='1245' where sid='1254-cb1487-1254'--查询操作--select …… from tablename where --order by--group byselect sid from test1 where sname='Kpewe'select * from test1 order by sid asc

四,Function

1.rand(), char(), ascii(), round()

print ascii('a')   --97 将字符转换成ASCII值
print char(65)  --A 将ASCII值转换成对应的字符
print round(rand()*26+65,0)    --65~91中的整数rand()生成随机数--round() 四舍五入整数值(ps:  floor()向下取整)

2,cast(), convert()

--cast(data as type)
--将type类型的数据data赋值给某个数值
--使用cast函数进行数据类型转化时:--两个表达式的数据类型完全相同--两个表达式可隐性转换--必须显式转换数据类型declare @i intset @i=cast(100as char)--错误示范:set @i=cast('123a' as varchar(5))print @i+100--convert(type,data)
--将data转换成type类型declare @m intset @m=rand()*100print char(@m)print convert(varchar(5),@m)

3.left(), right(), ltrim(), rtrim(), len(), substring()

--left(data,n)
--取字符串的前n位print left('abc',2)--right(data,int)
--取字符串的后n位print right('abc',2)--ltrim(data)
--去掉data左边的多余的空格print ltrim('    fffdeadc')--rtrim(data)
--去掉data右边多余的空格print ltrim('ffdeadc     ')--len(data)
--求数据data的长度print len('gldajdajdbad')--substring(data,i,j)
--将数据从第i个位置开始,取j个   print substring('nffdaveagawfaifddbahdb',6,15)

4.getdate(), dateadd()

--getdate()
--获取当前的时间print getdate()
--dateadd(datepart,n,date)
--date是合法的日期表达式
--n是您希望添加的间隔数--对于未来的时间,此数是正数,对于过去的时间,此数是负数
--datepart是数据类型(合法的数据类型)print dateadd(day,2,getdate())--datediff(datepart,startdate,enddate)
--startdate和enddate参数是合法的日期表达式
--datepart是数据类型(合法的数据类型)
--startdate比enddate大,结果是负数,反之,相反print datediff(day,dateadd(day,2,getdate()),getdate())print datediff(day,getdate(),dateadd(day,2,getdate()))--datepart(datepart,date)
--date 参数是合法的日期表达式
--datepart是数据类型(合法的数据类型)print datepart(week,getdate())

五, Bulk insert, insert into

--最基本的插入
--insert into tablename values(……)insert into test2 values('0','莫陌')--bulk insert tablename
--from "绝对路径"
--with(fieldterminator='各个数据之间相距的格式',rowterminator='每行相距的格式')bulk insert test2from "D:\sql-test\classroomtest\software.txt"with(fieldterminator='\t',rowterminator='\n')--insert into targettable select * from sourcetable
--在这里,targettable是必须存在的insert into test3 select * from test2select * from test3 

六,游标Cursor

--cursor游标
--declare sursorname scroll cursor for select * from tablename--当我们想使用update test2 set sname='某某'时--会发现每条的语句的sname都一样,更新语句只执行了一句--这样子的话,将会使用到游标declare @m varchar(5),@n varchar(20)declare sc scroll cursor for select * from test3 --游标的定义open sc --打开游标fetch from sc into @m,@n --fetch 取出游标中的一条记录装入变量--在fetch进行变量的赋值的时候--变量的数目要和表中的字段的数目相同--变量的类型要和表中的字段的类型一致while @@FETCH_STATUS=0beginprint @mprint @nupdate test3 set sname=char(rand()*26+65) where sid=@mfetch next from sc into @m,@n--fetch next--last
--absolute n 指向第n条数据
--relative n 相对于当前值endclose sc  --关闭游标deallocate sc --撤销游标--若没有这句话,那么下次可以不用定义游标,可以直接使用open方法  打开,这样会造成浪费

七,约束(primary key, foreign key, unique, not null, check, default)

--primary key,foreign key,unique,not null,check,default
--主键,独一值,非空值,对数据进行合法性检查
--外键:foreign key(列名) references 对应的表名(对应的列名)create table test4(sid varchar(50) primary key,sfid varchar(50),sname varchar(20) unique,sex varchar(5) check(sex='man' or sex='woman')  default('man'),semail varchar(25) not null,foreign key(sfid) references test5(sid))

八,视图和索引(view & index)

--创建视图
--create view viewname as select * from tablenamecreate view vn as select * from test4
select * from test4
select * from vn --t等同于select * from test4--未创建索引的前的查询
select * from test4  where sid='9EA7185A-8BEC-4500-8967-FE9D9D72ED55'--未创建索引的前的查询相差的时间
declare @date1 datetime,@date2 datetime
set @date1=getDate()
select * from test4  where sid='9EA7185A-8BEC-4500-8967-FE9D9D72ED55'
set @date2=getDate()
print datediff(ms,@date1,@date2)--创建索引
--create index indexname on tablename(字段名)--clustered 聚集索引--nonclustered 非聚集索引create clustered index ina on test4(sid)--重建索引
--alter index indexname on tablename rebuild
alter index ina on test4 rebuild--删除索引
--drop index tablename.indexname
drop index  test4.ina--创建索引的后的查询相差的时间
declare @date1 datetime,@date2 datetime
set @date1=getDate()
select * from test4  where sid='9EA7185A-8BEC-4500-8967-FE9D9D72ED55'
set @date2=getDate()
print datediff(ms,@date1,@date2)

九,Triger触发器

--trigger触发器
--create trigger triggername
--on tablename
--after insert,update,delete
--as
--begin
--end--删除触发器
drop trigger sim--创建触发器
create trigger sim
on test5
after insert,update,delete
as
begin
print '你正在对表test5进行操作'
end--   inserteddeleted
--   exists    exists   说明是update的操作
--   exists     not      insert
--   not        exists   delete
--   not        not      不改变表内容的操作  --触发器的小例子
create trigger sim
on test5
after insert,update,delete
as
begin
if exists (select 1from inserted) and exists (select 1from deleted)
print '你正在对表test5进行update操作'
if not exists (select 1from inserted) and exists (select 1from deleted)
print '你正在对表test5进行delete操作'
if exists (select 1from inserted) and not exists (select 1from deleted)
print '你正在对表test5进行insert操作'
if not exists (select 1from inserted) and not exists (select 1from deleted)
print '没操作'
End

十,Transaction事务

--transaction事务
--格式如下
--begin transaction
--save transaction tran-point1
--if @@error>0
--rollback transaction tran_point1
--commit transactioncreate table test6
(
sid varchar(9),
sname varchar(10),
sage int check(sage<30)
)begin transaction
insert into test6 values('1000','momo',24)
save transaction point
insert into test6 values('1001','momo',120)
if @@error>0
print 'aaa'
rollback transaction point
commit transaction

数据库高级应用学习报告【T-sql】相关推荐

  1. 数据库高级技术学习笔记1--Oracle部署和PL/SQL综述

    -----学习点(1)  主要英文 Database--->数据库 DBMS--->数据库管理系统 DBS--->数据库系统----------Database+DBMS+DBA+硬 ...

  2. Oracle数据库学习:PL/SQL(详解)

    Oracle数据库学习:PL/SQL 什么是PL/SQL PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的扩展语言; 使用PL/SQL 可以编写具 ...

  3. SQL数据库高级查询命令(2)

    接上篇博文<SQL数据库高级查询命令(1)> use market go select distinct goodsname from orders -----查看orders表中有订单的 ...

  4. SQL Server数据库备份和还原报告

    In the previous articles, we discussed several ways of taking backup and testing the restore process ...

  5. MySQL数据库高级SQL语句(三)

    MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...

  6. SQL高级语句-SQL 通配符-在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

    SQL 通配符 在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符. SQL 通配符必须与 LIKE 运算符一起使用. 在 SQL 中,可使用以下通配符: 通配符 描述 % 替代一个或多个字 ...

  7. 工作学习笔记——用SQL语句新建SQL SERVER数据库、数据库用户以及登录名

    查阅了一些资料,对几个概念先有了个大概的认识.登录名用来连接SQL SERVER数据库,也就是连接字符串里USER ID的值.同一个登录名可以操作很多数据库,只需要这些数据库中有拥有操作权限的数据库用 ...

  8. wincc历史数据库_什么是数据库?如何学习数据库?

    JZGKCHINA工控技术分享平台 工业自动化领域,大家经常接触到上位机软件,比如我们常用的WinCC,IFix,FactoryTalk View,WiSCADA等,都会牵扯到历史数据的存储,用于历史 ...

  9. sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第二部分

    sql还原数据库备份数据库 In this article, we'll walk through, some of the refined list of SQL Server backup-and ...

最新文章

  1. POJ 2226 Muddy Fields 最小点覆盖+加建图(好题)
  2. HTML5语音输入方法
  3. 测试 远程端口 是否处于监听状态
  4. 5个必须掌握的maven命令
  5. leetcode 1024. 视频拼接(dp/贪心)
  6. Docx:docx.opc.exceptions.PackageNotFoundError: Package not found at
  7. c语言中switch嵌套,C 嵌套 switch 语句 ——jQuery中文网
  8. 上传服务器响应失败,Django CKEditor 上传图片提示“不正确的服务器响应”的解决办法...
  9. php 判断来源 微信客户端_常见WebShell客户端的流量特征及检测思路
  10. MIDI文件基础及使用Python库mido操作MIDI文件
  11. Android腾讯微博开放平台入门(一)开题与BaseString
  12. 遥感计算机解释技术PPT,梅安新 遥感导论.ppt
  13. PS进阶抠图详解(可以处理头发)
  14. 【工具】一键制作纯净ROM去除推广APP,支持线刷包卡刷包
  15. 【玩转微信公众平台之二】 账号注册
  16. 蜻蜓FM语音下载(qingtingdown)
  17. 关于三维数组的一些问题
  18. 【Collaborative Perception - 2】V2X-ViT(ECCV2022)
  19. 计算机房用什么气体灭火,计算机房(IDC机房)采用什么气体灭火系统最佳?
  20. 基于GNU radio + HackRF One 实现信号发射与FM接收

热门文章

  1. print 中文输出乱码
  2. 解读阿里云成功运营生态体系的两个关键密码:开放与双向赋能
  3. ZEMAX | 如何设置镜头卡口的机械参考以进行热分析
  4. Windows远程连接3389端口开启/关闭方法
  5. cite space安装到高分辨率的电脑后界面太小,画面太小怎么办
  6. 论文写作分析报告CSDN
  7. memcached的常用命令
  8. MIT 6.828 lab1 part2
  9. 中国计算机学会推荐国际学术刊物、会议(人工智能与模式识别)
  10. 区块链产业协同生态发展