admin管理员组文章数量:1794759
SQLServer入门学习一篇就够了
本文主要介绍微软的SQLServer的数据库操作,内容由浅至深,望读者坚持阅读。
文章目录
- 简介
- 连接数据库
- 数据库
- 表
- 表的一些概念
- 约束
- 外键添加操作
- 主键与外键
- 脚本操作
- 功能分类
- 查询
- 常用辅助命令
- 使用脚本添加数据表
- 使用脚本创建表
- 基本命令
- 为列,表起别名
- select查询
- 查询某些列
- 排序查询:
- 条件查询:
- 模糊查询
- 连接查询
- insert插入
- update修改
- delete删除
- 函数
- 聚合函数
- `count`计数
- `max/min`求最大/小值
- `avg`求平均值
- 开窗函数
分类:
- 文档型sqlite(直接访问)
- 服务型(间接访问数据),如MySQL
两种方式:
- Windows 身份认证
- SQL Server 身份认证
第一种:当可以连接到一台电脑进行操作时;第二种:当只能连接到电脑的数据库时。一般使用SQL Server.
移动数据库数据数据唯一性设置
为列名添加数据类型:一般int类型即可,如果需要永远都不会相同的数字,可以选择guid
设置数据类型永远不重复,也可以在列属性下的标识规范中选择–是标识
一般给主键设置唯一标识
标识种子字段类型
- char/varchar : 非unicode编码
- 英文占一个字节,中文占两个字节
- varchar : 可变长度
- char : 数据长度不可变
- nvarchar/nchar : unicode编码
- 中文英文都占一个字节
- decimal(n1,n2) : n1个数字,n2个小数位
- 一般用于设置带有小数位的数据
- bit : 只能存储 0 和 1
- 一般用于一个数据只能有两个值的时候
约束 约束
主键 :
- 非空约束(Not Null)
- 唯一约束 : 右击列名-索引/值-常规类型-唯一键
- 默认值约束 : 可设置为空,而需要列添加默认
- 操作 : 常规-默认值或绑定-设置大小
- 检查约束 : 对设置的值进行要求,若满足要求,则数据可以加入表中
- 操作 : 右击列名-CHECK约束-写约束表达式
- 外键约束 : 对关系进行有效性检查,当然有关系时,也可以不做外键。
主键表和外键表判定: 一个表的内容决定了另一个表的内容,则起决定作用的表为主键表
外键添加操作当出现表中的列与现有主键或UNIQUE约束不匹配的错误时,要注意可能是没有设置外键的引用唯一约束
主键与外键定义 | 唯一标识一条记录,不能有重复的,不允许为空 | 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 |
个数 | 主键只能有一个 | 一个表可以有多个外键 |
主键表决定外键表中的一些数据是否为有效。
脚本操作 功能分类
- 各种数据库对象的创建
- 对表数据的增删改查
- create | alter | drop
- 进行权限分配
- insert | update | delete | select
使用某数据库: use dbName
查看master数据库中的sysdatabases表来了解当前存在的数据库引入外键 : foreign key() references xxx() . 其中references xxx()是引用哪一个表里的主键
基本命令 为列,表起别名 select * from UserInfo as ui
为UserInfo起别名为ui,当然as可以省略.注意,一旦取别名之后,调用表的列时,必须用别名来调用。
select查询 查询某些列 -- 查询某些列 select UserName , UserPwd from UserInfo查询前n部分数据:
- top n 列名 : 表示查询前n行
- top n percent 列名 : 表示查看前百分之N的数据
- 语法: order by 列名 asc|desc
上述步骤会先从cId开始排序,如果所有的cId都相同,则会再根据sId排序。
条件查询:- 语法: where
- 添加细节 :
- between .. and ... : 区间之间
- in(n1,n2) : 符合n1或者n2条件,非连续
- 逻辑运算符 : and | or | not
- 添加细节 :
注意:使用 between ... and ...需要连续区间。
注意 between的and会寻找sql语句中离它最近的。
模糊查询- 语法 : like % _ [] ^
- % : 表示零到多个任意字符
- _ : 表示一个任意字符
- [] : 表示范围内的一个字符
- ^ : 非,写在[]之前表示不在范围内
当需要的结果从多张表中取得时,使用连接查询
-- 查询学生姓名及所在班级名称 -- StudentInfo -- ClassInfo -- 关系:StudentInfo.cid =>ClassInfo.cid select UserInfo.UserName , classInfo.cTitle from UserInfo inner join ClassInfo on StudentInfo.cid=ClassInfo.cid -- 当然也可以多个表联结,只需要在后面继续添加join语句即可on后面写入连接查询的条件
- 连接关键字:join
左右表:在join左边的表为左表。
内联结:inner join | 如果查询的内容严格对应,则为内联结 |
外联结 | |
左外联结:left outer join | 左表特有的数据,右边没有,依旧可以查询出来,显示值为NULL |
右外联结:right outer join | |
完全外联结:full outer join | 左右两表公有的,左表和右表特有的,三者均表示出来 |
如果所有列按照默认顺序赋值,则可以使用如下方式
insert UserInfo values('小孙','password')- 只为某些列进行赋值
- 一次增写入多个数据
使用逗号隔开各个数据
select * from UserInfo insert into UserInfo values('小红'),('小菊'),('小巴') update修改语法:
update 表名 set 列名1=值1,列名2=值2,... where ...where : 为指定行进行修改列
将值设置为空
update 表名 set 列名=null delete删除语法:
delete from 表名 where ...其中from写不写都可以。当删除一个列的数据,如果设置了~Id为唯一标识,则Id的计数器会在删除的最后一条数据的Id的基础上,继续自增,即如果删到了第15条,则此时insert插入后,这条数据的Id将从16开始计数。
清空 : truncate table 表名
-- 清空 truncate table UserInfo这个命令既是将表内容删除了,也会同时将表的内容进行重置,即计数器将会从1开始。
消除重复行:
- 语法 : distinct
函数 聚合函数 count计数 -- 查询班级表的列的个数 select COUNT(*) from ClassInfo -- 此时也可以添加WHERE条件语句
当希望不做计数时,可以将值设置为NULL.
max/min求最大/小值 -- 计算表中的最大值 select MAX(score) from GradeInfo avg求平均值对行的值进行合并,将多行合并成一行显示。
select AVG(score) from GradeInfo聚合函数一般搭配分组group by使用,对分组的数据进行统计。
实例:统计男女分别的人数
select COUNT(*) from StudentInfo group by sGender 注意版权声明:本文标题:SQLServer入门学习一篇就够了 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1687061988a130852.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论