• 数据库SQL Server


    一、数据库登陆

    • 服务器名称:.  //联系本机
    • 身份验证: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

  • 相关阅读:
    DataGridViewComboBoxColumn值无效
    你 我 我们 技术 让世界变得更好一些
    .NET Core中使用IHostedService结合队列执行定时任务
    参加胶东开发者技术大会有感
    在Windows下使用Nodist进行Node版本控制
    React中props.children和React.Children的区别
    React同构直出原理浅析
    React学习资料
    git在分支上创建目录和文件
    从一个例子中体会React的基本面
  • 原文地址:https://www.cnblogs.com/caiyc/p/7718559.html
Copyright © 2020-2023  润新知