博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库SQL Server
阅读量:6332 次
发布时间:2019-06-22

本文共 4293 字,大约阅读时间需要 14 分钟。

一、数据库登陆

  • 服务器名称:.  //联系本机
  • 身份验证:Windows身份验证(管理员权限)和SQL Server验证
  •  登录名:sa(默认登录名)

二、数据库约定

  • 数据库、库、表的名称一律用英文名词,首字母大写
  • 建立表,功能不能交叉
  • 字符串必须单引号

三、建表

  • 主键:一行数据的唯一标识
  • 数据类型:
    • int  整数类型
    • float小数类型
    • bit 布尔类型 
    • datetime
    • 字符串类型  
      • char(10)           只能放5个中文,定长,如果只放一个字节,后面就是9个空格(一个中文2个字节
      • nchar(10)         放10个中文,定长
      • varchar(10)       放5个中文,变长,如果只放一个字节,就只是一个字节
      • nvarchar(10)     放10个中文或10个字符,变长
  • 通过语句建库建表

           create database Library(库名)

           create table Users(表名)

           userName  nvarchar(20)  not null

           userPwd   nvarchar(20)  not null

           …………

四、查询语句

       单表查询

  • select * from UserInfor                                -- 查询UserInfor表内全部的数据
  • select  UserName,QQ from UseInfor           --查询UserInfor表内 UserName,QQ的数据
  • select * from UserInfor where Sex=‘男’         --查询UserInfor表内所有男生
  • select * from UserInfor where Sex=‘男’ and Place='武汉'     --查询UserInfor表内所有武汉的男生
  • select * from UserInfor where Sex=‘男’ and (Place='武汉' or Place='杭州' )     --查询UserInfor表内所有武汉或者杭州的男生
  • select  count(*)  as PCount from  UserInfor where  Place='武汉'   --查询UserInfor表内所在地在武汉的人的数量并且起别名PCount
  • select * from UserInfor where Age>=25 and Age<=30  或者 select * from UserInfor where Age between 25 and 30         --查询UserInfor表内查询年龄在25到30之间的用户
  • select * from UserInfor   order by Age asc --根据年龄排序由小到大asc默认可以不写  select * from UserInfor   order by  Age desc --根据年龄排序由大到小
  • select top 3* from UserInfor  order by Age desc  --查询出年龄前三的用户并且由大到小排序
  • select top 3 UserName,Pwd,QQ from UserInfor  order by Age desc  --查询出年龄前三用户的用户名字,密码,QQ并且由大到小排序
  • select count(*),Place from UserInfor group by Place    --通过place分组显示每个地区用户数量
  • select count(*)  as PCount,Place from UserInfor group by Place having count(*) >1   --查询通过place分组之后同一所在地用户大于1的分组信息
  • 模糊查询
    • select * from UserInfor where UserName like 'zh%'   --查询以用户名zh字母开头的用户
    • select * from UserInfor where UserName like '%np'   --查询以用户名np字母结尾的用户
    • select * from UserInfor where UserName like '%n%'   --查询以用户名包含n字母的用户
  • select min(Age) from UserInfor     --查询年龄最小的数值
  • select max(Age) from UserInfor     --查询年龄最大的数值
  • select sum(Age) from UserInfor     --查询用户年龄的总值
  • select avg(Age) from UserInfor     --查询用户年龄的平均值 
  • select * from UserInfor where Age (select avg(Age) from UserInfor)   --查询所有大于平均年龄的用户 
  • select distinct UserName from UserInfor  --查询不重复名字的用户名

      联合查询

  • select UI UserInfor ,UI.UserName,UI.QQ,SC.EnglishScore,SC.MathScore from UserInfor UI  left join Score on UI.UserId=SC.UserId   --通过UserId左关联两个表,查询左表UserInfor表中全部学生的名字QQ 和 右表Score表中对应学生的英语成绩数学成绩,右表中不匹配的内容用null表示
  • select UI UserInfor ,UI.UserName,UI.QQ,SC.EnglishScore,SC.MathScore from UserInfor UI  right join Score on UI.UserId=SC.UserId   --通过UserId右关联两个表,查询右表Score表中全部的学生的英语成绩数学成绩和左表UserInfor表中对应学生的名字QQ 和,左表中不匹配的内容用null表示
  • select UI UserInfor ,UI.UserName,UI.QQ,SC.EnglishScore,SC.MathScore from UserInfor UI inner  join Score on UI.UserId=SC.UserId   --通过UserId关联两个表,查询UserInfor表中学生的名字QQ 和 Score表中对应学生的英语成绩数学成绩
  • select UISC.*,PR.MumName,PR.DadName from (select UI UserInfor ,UI.UserName,UI.QQ,SC.EnglishScore,SC.MathScore from UserInfor UI inner  join Score SC on UI.UserId=SC.UserId) UISC inner join Parents PR on UISC.UserId=PR.UserId  --通过UserId关联三个表Praents、UserInfor和Score,其中UserInfor和Score 看成一个整表别名UISC,查询UserInfor表中学生的名字QQ 和 Score表中对应学生的英语成绩数学成绩外加Parents表中对应学生的爸爸妈妈名字

五、分页

select top pagesize *

from

(

 select row_number() over(order by NewsId) as rownumber,* from RNews

) A

where rownumber > (pageindex-1)*pagesize  --第pageindex页数据

六、获取时间

  • select year(getdate())    --获取当前的年

         select month(getdate())   --获取当前的月

         select day(getdate())      --获取当前的天

  • select dateadd(yy,100,getdate())    --当天加上100年的时间,getdate()也可以换成具体的某一天比如写成:'2108/12/31'

          select dateadd(mm,1,getdate())     --当天加上1个月的时间

          select dateadd(dd,100,getdate())   --当天加上100天的时间

  • select datediff(yy,getdate(),'2108/12/31')   ---当天距离2108/12/31还有多少年

          select datediff(mm,getdate(),'2108/12/31') ---当天距离2108/12/31还有多少月

          select datediff(dd,getdate(),'2108/12/31')  ---当天距离2108/12/31还有多少日

七、增加

  • insert into UserInfor value (值除了主键全部需要按顺序写,不能少)
  • insert into UserInfor(UserName,Pwd,QQ,Age) value('名字','密码','QQ','年龄')  ---其他默认为null

八、删除

        delect  UserInfor where UserId=19   --删除第19行

九、修改

       update UserInfor set UserName='xxxx'where UserId=18    --将第18行用户名字改成xxxx

十、索引

  • 聚集索引  (默认主键)
  • 非聚集索引 

十一、存储过程

 create proc procSelectUser

 (

  @UserName nvarchar(50),

  @Pwd nvarchar(50)

 )

 as

 select * from UserInfor where UserName=@UserName  and Pwd=@Pwd

执行:

exec procSelectUser 'zh' ,'xxxx'

十二、触发器

   create trigger trigUserDelect

   ON  UserInfor

   after delete /* 有三种INSERT,DELETE,UPDATE*/

   AS

  begin

  select * from deleted /*在删除后同时查出删除后的内容*/

  end

  GO

转载于:https://www.cnblogs.com/caiyc/p/7718559.html

你可能感兴趣的文章
为运维人员插上腾飞更远的翅膀!
查看>>
Word 2003中编辑标记与格式标记大讨论
查看>>
从国内向海外转移域名经验谈
查看>>
浅谈apache与tomact的整合
查看>>
SQL Server vNext CTP1 on Linux
查看>>
1-为 Lync Server 2010 准备 Active Directory 域服务
查看>>
NetBackup下ORACLE恢复测试方案实例解析
查看>>
【有奖征文】“失业”程序员的苦辣酸甜
查看>>
IE9是如何被FireFox4超越全球市场份额的?
查看>>
linux bunzip2命令
查看>>
敏捷个人:通过实践TOGAF来思考如何学习并应用新的方法?
查看>>
Android系统的开机画面显示过程分析(6)
查看>>
vivo Hi-Fi+QQ音乐 数字音乐市场的一剂良方
查看>>
Cocos2d-x 3.2 异步动态加载 -- 保卫萝卜开发总结
查看>>
聚焦触宝反侵权事件:中国创业者用什么护航海外市场大门
查看>>
AOP技术基础
查看>>
Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析(2)
查看>>
无线802.11n 2.4G与5G性能测试
查看>>
子域名信息收集攻略
查看>>
[Android]开发数独游戏思路分析过程
查看>>