使用Sql Server,那么我们首先要面临的问题就是:身份验证的问题
Sql Server的身份验证方式一般有两种,windows身份验证和sql server身份验证,若我们安装的时候没有授予sql server身份验证,那么我们可以根据以下步骤完成授权
-> Windows身份验证进入
-> 在对象资源管理器中右键实例名
-> 选择属性
-> 找到安全性,修改服务器身份验证(需要重新启动服务)
-> 然后在对象资源管理器中找到“安全性”
-> 找到登录名sa,右键属性(sa有个向下的红色箭头,表示用户被禁用)
-> 找到状态,启用,权限授予
-> 找到常规,设定密码(可以设置“强制实施密码策略”,表示密码必须复杂)
然后我们就可以登录sql server本地服务器了
我们就会看到四个系统数据库了,上图充分说明了每个系统数据库的作用
下面我们就开始学习具体的sql server的操作
1. catalog:分类(又叫数据库DataBase、表空间TableSpace),不同的数据应该放到不同的数据库中,便于对各个catalog进行个性化的管理,避免命名冲突,安全性更高。
还有Table(表),Column(列),Field(字段)
2. 主键(PrimaryKey)
主键就是数据行的唯一标识,不会重复的列才能当主键
主键分为两种:业务主键还逻辑主键。
业务主键就是使用有业务意义的字段做主键,比如身份中号、银行卡号等;
逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。
3. 外键(ForeignKey)
4. 数据类型
bit:可选值为0和1,是布尔值
char(x)长度为10的字符串
datetime日期
int和bigint整数
nvarchar(X)长度为X的字符串,和char差不多(字段中可能含有中文的)
varchar字符串,不包含中文,是纯英文
char(n)长度不足n时,不足的部分用空格填充。所以一般用varchar
5. SQL语句中字符串用单引号
6. SQL语句是大小写不敏感的,不敏感是指SQL关键字,字符串值还是大小写敏感的
7. SQL Server中两种常用的主键数据类型:int(或bigint)+标识列(又称自动增长字段);uniqueidentifier(又称Guid、UUID)
8. 用标识列实现阻断自增可以避免并发等问题,不要开发人员控制自增。用标志列的字段在Insert的时候不用指定主键的值。将字段的“是标志列设置为“是”,一张表只能有一个标志列。
9. Guid算法是一种可以产生唯一标识的高效算法。Sql Server中生成GUID的函数是newid(),.NET中生成GUID的方法是:Guid.NewGuid(),返回是Guid类型。
10. int自增字段的优点:占用空间小、无需开发人员干预、易读;缺点:效率低;数据导入导出的时候很痛苦。
Guid的优点:效率高、数据导入导出方便;缺点占用空间大、不易读。
11. 业界主流倾向于使用Guid
12. 数据更新(update)
update 表明 set 列名=新的数据 where 筛选条件
13. SQL语句中如果出现中文,前面加上一个大写的“N”防止出错
14. 数据删除
删除表中全部数据:delete from 表名
delete只是删除数据,表还在,和Drop table 不同
delete也可以打where子句来删除一部分数据
15. 检索的数据列名想取别名,需要在列名之后加上:select FName as 姓名
16. 对数据进行统计有多少条数据:select count(*) from T_Employee;
最大值:max;
最小值:min;
平均值:avg;
求和:sum;
17. 排序
order by 子句位于select语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序(从小到大,ASC)还是降序(从大到小 DESC)
如果排序的字段不止一个,那么将使用逗号分隔开
select * from T_Employee order by FAge DESC,FSalary ASC;
order by子句要放到where子句之后
18. 通配符过滤(模糊匹配)
通配符过滤使用Like
单字符匹配的通配符为半角下划线‘_’,它匹配单个出现的字符。
例:以任意字符开头,剩余部分为“erry”:select * fromT_Employee where FName like ‘_erry’
多字符匹配的通配符为半角百分号“%”,它匹配任意次数出现的任意字符
19. 空值处理
SQL Server中,NULL不表示没有,而是表示不知道
若查询的字符的值是null。sql语句中where语句要使用 字段 is null 不能直接使用等于号
用is null 和is not null 来判断空值
20. 多值匹配
Fage=23 or Fage=25 or Fage=28 或者 Fagein {23,25,28}
Fage>20 and Fage<30 或者 Fage between 20 and 30
21. 数据分组
group by 子句必须放到where语句之后
没有出现在group by子句中的列是不能放到select语句后的列名列表中(聚合函数中除外)
22. having
聚合函数不能出现在where子句中,必须使用having,having要位于group by之后
having是对分组后的信息进行过滤,能用的列和select中能用的列是一样的,having无法代替where。where是对原始的数据进行过滤的
23. 限制结果集的行数
top Row_Number函数
24. 去掉重复数据
distinct消除重复的数据的关键字
distinct后面要是跟着两个或以上字段,完全重复的结果将会被去掉,若只有一个字段相同的不会被去掉
25. 联合结果集
union合并连个查询结果集
selectFName,FAgefromT_TempEmployee
union
select FName,FAgefromT_Employee
上下两条语句的查询字段个数要一致,若不一致,可以补全,但是字段的数据类型一定要一致
union默认会去除重复的数据,要是想显示全部数据,就在union后面加上all。union和union all
union因为要进行重复值扫描,所以效率低,因此,如果不是确定要合并重复行,那么就是用union all
可以多句一起使用
26. 数字函数
ABS():求绝对值
ceiling():舍入到最大整数。3.33将被舍入为4,2.89将被舍入为3
floor():舍入到最小整数。3.33将被舍入为3,2.89将被舍入为2
round():四舍五入。
27. 字符串函数
len():计算字符串长度
lower()、upper():转小写,大写
ltrim():去掉字符串左侧的空格
rtrim():去掉字符串右边的空格
若是想左右的空格都去掉的话,需要两个函数嵌套使用ltrim(rtrim())
substring(string,start_position,length)参数string为主字符串,start_position为子字符串在主字符串中的起始位置(从1开始数,这点和C#不同),length是子字符串的最大长度
28. 日期函数
getdate():获取当前日期时间
dateadd(datepart,number,date)计算增加以后的日期。参数date为待计算的日期,参数number为增量,参数datepart为计算单位
year 年份 quarter 季度 month 月份 dayofyear 当前年度的第几天
day 日 week 当前年度的第几周 weekday 星期几 hour 小时
minute 分 second 秒 millisecond 毫秒
datediff(datepart,startdate,enddate):计算两个日期之间的差额。datepart为计量单位,可取值参考dateadd
datepart(datepart,date):返回一个日期的特定部分
29. 类型转换函数
cast(expression—被转换表达式 ASdata_type—数据类型)
convert(data_type,expression)
30. 空值处理函数
isnull(expression,value):如果expression不为空则返回expression,否则返回value。
31. case函数用法
单值判断,相当于switch case
selectFName,
(
caseFLevel
when 1then '普通会员'
when 2then '中级会员'
when 3then '高级会员'
else'未知客户类型'
end
) as '客户类型'
from T_Customer;
同时也支持范围值
selectFName,
(
case
whenFSalary<2000 then '低收入'
whenFSalary>2000 and FSalary<5000then '中等收入'
else'高收入'
end
)as'收入水平'
from T_Employee
注意:在中文字符串之前加N
本文介绍了Sql Server的身份验证设置,包括如何启用sql server身份验证,并详细讲解了Windows身份验证的步骤。接着,文章概述了Sql Server的基本概念,如catalog、主键、外键和数据类型,并探讨了SQL语句的使用,如数据更新、删除、排序、模糊匹配和空值处理。此外,还讨论了数据统计、分组、限制结果集、去除重复数据、联合查询以及各种函数的运用。
692

被折叠的 条评论
为什么被折叠?



