子曰:"温故而知新, 可以为师矣." 孔子说:"温习旧知识从而得知新的理解与体会, 凭借这一点就可以成为老师了." 尤其是咱们搞程序的人, 不管是不是全栈工程师, 都是集十八般武艺于一身. 不过有时候有些知识如果有很久没用了的话, 就会忘记, 甚至是忘的你一点都想不起来, 尤其是一些基础的东西. 所以我才打算写个 "温故而知新" 的系列博文出来, 一来是这些基础的东西我比较健忘, 以后方便自己翻阅; 二来是希望可以帮助到一些刚入门的朋友. 这个系列记录的所有知识点都是最最最 (重要的事情说三遍) 基础的知识. 大部分都是我学习的时候所积累的笔记.
温故而知新系列都是一些基础知识, 大神可以直接跳过.
v 写在前面
如果十八般武艺都融会贯通, 如果什么兵器你都耍得有模有样, 那么这篇博文你大可以跳过了. 只是在忘记的时候, 可以拿出来温习温习.
v 基本概念
SQL Server 是 Microsoft 公司推出的关系型数据库管理系统. 具有使用方便可伸缩性好与相关软件集成程度高等优点, 可跨越从运行 Microsoft Windows 98 的膝上型电脑到运行 Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用. Microsoft SQL Server 是一个全面的数据库平台, 使用集成的商业智能 (BI)工具提供了企业级的数据管理. Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能, 使您可以构建和管理用于业务的高可用和高性能的数据应用程序.
简单点一句话概括: 数据是具有一定意义的数字, 字母, 符号的统称, 数据库就是存放数据的
vSql(Structured Query Language) server 基础
1.Sql server 的组成:
主要数据库文件:.mdf 特点: 有且只有一个
次要数据库文件:.ndf 特点: 任意个
日志数据库文件:.ldf 特点: 至少一个
2. 操作数据库:
创建数据库: create databse 库名
查看所有数据库: exec sp_helpdb
查看当前数据库: exec sp_helpdb 库名
使用数据库: use 库名
删除数据库: drop database 库名 ps: 正在使用的数据库无法删除
3. 表的结构: 字段 数据类型(属性)
4. 数据类型:
整型
微整型 tinyint 1 个字节
小整型 smallint 2 个字节
整型 int 4 个字节
大整型 bigint 8 个字节
浮点型
float 不能精确存储数值
real 不能精确存储数值
decimal(numeric ) 同义, 用于精确存储数值
字符型
char 长度在 1 到 8000 之间 定长字符数据
varchar 长度在 1 到 8000 之间 变长字符数据
text 存储可变长度的非 Unicode 数据, 最大长度为 2^31-1(2,147,483,647)个字符
时间日期型: datetime 年月日时分秒毫秒
货币型: money 精确到货币单位的千分之十. 存储大小为 8 个字节. 存储形式为 12345.67
vsql server 表
1. 创建表的语法:
create table 表名
(
字段名称 1 数据类型[属性],
字段名称 2 数据类型[属性],
...
)
2. 查看所有表语法: exec sp_help
3. 查看当前表语法: exec sp_help 表名
4. 修改表结构:
增加一列语法: alter table 表名 add 字段名 数据类型
删除一列语法: alter table 表名 drop column 字段名
修改一列语法: alter table 表名 alter column 字段名 数据类型
删除表语法: drop table 表名
5. 操作表数据:
完全插入数据语法: insert into 表名(字段名 1, 字段名 2...) values(值 1, 值 2...)
省略插入数据语法: insert into 表名 values(值 1, 值 2...)
部分插入数据语法: insert into 表名(字段名 1, 字段名 2...) values(值 1, 值 2...)
多行插入数据语法: insert into 表名 values(值 1, 值 2...),(值 1, 值 2...)
查看所有记录语法: select * from 表名
查看部分记录语法: select 字段名 1, 字段名 2... from 表名
修改一条记录语法: update 表名 set 字段名 = 值 [where 条件]
删除一条记录语法: delete from 表名 where 条件
清空表所有记录
delete from 表名
truncate from 表名 ps: 至于他们的区别, 我就不多介绍了, 有兴趣的可以看这里 SQL Server 中 truncate,delete 和 drop 的异同点 http://www.cnblogs.com/qanholas/archive/2011/08/08/2131266.html
6. 标识列 identity(初值, 增值):
定义: 能唯一区分表中的每一条记录, 且该属性是自动增长的
特点
一个表中有且只有一个标识列
标识列不能编辑, 不能更新
标识列数据类型只能是整型
标识列不为 null
标识列不重复
作用: 保证数据完整性
7. 运算符:
sql server 的运算符与其他语言不同, 这里列举三个
- &&-----and
- ||-----or
- !-----not
8. 六大约束:
检查约束 check 语法 check(条件)
默认约束 default 语法 default'默认语句'
非空约束 not null
唯一性约束 unique
主键 primary key
主键的值不能重复
一个表中有且只有一个主键
外键与主键相对应
主键类型可以是整型, 字符型
语法: 字段名 数据类型 primary key
外键 foreign key references
与主键相对应
外键的值一定在主键范围之内
外键的值可以重复
语法: 字段名 数据类型 foreign key references 主表名
注意事项:
在操作主表从表时: 先删除从表, 再删除主表, 删除数据, 也要先从后主
在建立表时: 要先创建主表, 再创建从表, 插入数据, 先主后从
vsql server 查询
1. 查询符合条件的数据: select 字段名 from 表名 [where 条件]
2. 之间的
- and ... or
- between ... and
例句: 查询 23 岁到 25 岁之间的学生
- select * from student where age>=23 and age<=25
- select * from student where age between 23 and 25
3. 不显示重复项: distinct select distinct 字段名 from 表名
4. 前几项 top select top n * from 表名
5. 排序 order by + 字段名 asc 升序 desc 降序(默认情况下为升序) select * from student where age>25 order by name desc
6. is not null/null select * from 表名 where 字段名 is null
7. 列起别名 as select id as 学生编号, name as 学生姓名 from student as a 注: 实际语法中 as 可以省略
8. 高级查询(模糊查询) like select 字段名 from 表名 where 字段名 like '通配符 值 通配符'
sql server 通配符
% 任意字符
[]范围内任意字符
[^]非范围内任意字符
9. 联合查询 join
交叉查询: select 字段名 from 表 1 cross join 表 2 [where 条件]
内连接查询: select 字段名 from 表 1 inner join 表 2 on 联合条件 [where 条件]
外连接
左外连接: select 字段名 from 表 1 left join 表 2 on 联合条件 [where 条件]
右外连接: select 字段名 from 表 1 right join 表 2 on 联合条件 [where 条件]
全外连接: select 字段名 from 表 1 full join 表 2 on 联合条件 [where 条件]
多表连接: select 字段名 from 表 1 inner join 表 2 on 联合条件 inner join 表 3 on 联合条件 [where 条件]
10. 嵌套查询(嵌套查询都可以用联合查询完成), 显示的字段在一个表中, 条件在另外一个表中
in() 在... 范围之内的
not in() 不在... 范围之内的
exists 存在
not exists 不存在
11. 分组 group by
v 系统函数
1. 统计 (聚合) 函数
Transact-SQL 编程语言提供下列聚合函数:
AVG 返回指定组中的平均值, 空值被忽略.
例: select prd_no,avg(qty) from sales group by prd_no
2. COUNT 返回指定组中项目的数量.
例: select count(prd_no) from sales
3. MAX 返回指定数据的最大值.
例: select prd_no,max(qty) from sales group by prd_no
4. MIN 返回指定数据的最小值.
例: select prd_no,min(qty) from sales group by prd_no
5. SUM 返回指定数据的和, 只能用于数字列, 空值被忽略.
例: select prd_no,sum(qty) from sales group by prd_no
6. COUNT_BIG 返回指定组中的项目数量, 与 COUNT 函数不同的是 COUNT_BIG 返回 bigint 值, 而 COUNT 返回的是 int 值.
例: select count_big(prd_no) from sales
7. GROUPING 产生一个附加的列, 当用 CUBE 或 ROLLUP 运算符添加行时, 输出值为 1. 当所添加的行不是由 CUBE 或 ROLLUP 产生时, 输出值为 0.
例: select prd_no,sum(qty),grouping(prd_no) from sales group by prd_no with rollup
8. BINARY_CHECKSUM 返回对表中的行或表达式列表计算的二进制校验值, 用于检测表中行的更改.
例: select prd_no,binary_checksum(qty) from sales group by prd_no
9. CHECKSUM_AGG 返回指定数据的校验值, 空值被忽略.
例: select prd_no,checksum_agg(binary_checksum(*)) from sales group by prd_no
10. CHECKSUM 返回在表的行上或在表达式列表上计算的校验值, 用于生成哈希索引.
11. STDEV 返回给定表达式中所有值的统计标准偏差.
例: select stdev(prd_no) from sales
12. STDEVP 返回给定表达式中的所有值的填充统计标准偏差.
例: select stdevp(prd_no) from sales
13. VAR 返回给定表达式中所有值的统计方差.
例: select var(prd_no) from sales
14. VARP 返回给定表达式中所有值的填充的统计方差.
例: select varp(prd_no) from sales
2. 日期函数
getDate()获取当前时间
Dateadd() 增加时间
datediff(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式.
datepart 参数可以是下列的值:
datepart | 缩写 |
---|---|
年 | yy, yyyy |
季度 | qq, q |
月 | mm, m |
年中的日 | dy, y |
日 | dd, d |
周 | wk, ww |
星期 | dw, w |
小时 | hh |
分钟 | mi, n |
秒 | ss, s |
毫秒 | ms |
微妙 | mcs |
纳秒 | ns |
datepart(datepart,date)函数用于返回日期 / 时间的单独部分, 比如年, 月, 日, 小时, 分钟等等, datepartd 参数可以参见上表
datename(datepart,date)傳回代表指定 date 之指定 datepart 的字元字串
3. 数学函数
abs()取绝对值
round()四舍五入
floor()函数返回小于或等于所给数字表达式的最大整数
ceiling()函数返回大于或等于所给数字表达式的最小整数
sqrt()开平方根
4. 字符串函数
left()左截串
right()右截串
ltrim()去左空格
rtrim()去右空格
replace(字符串, 旧字符串, 新字符串) 替换
substring(字符串, 位置, 长度) 截字符串 ps:sql 中字符串下标从 1 开始
reverse()反转
len()长度
upper()转大写
lower()转小写
vT-sql
1. 声明变量语法: declare @变量名 数据类型
给变量赋值
set @变量名 = 值
select @变量名 = 值
输出变量 select @变量名
ps: 若想输出变量, 声明变量, 变量赋值和变量输出三条语句需一起执行
2. 编程语句
- begin...end
- if...else
回到顶部 https://www.cnblogs.com/toutou/p/4733670.html#_labelTop
v 视图
1. 创建视图
create view 视图名称
as
sql 中查询语句
2. 使用视图 select * from 视图名
3. 查看视图 exec sp_help
4. 查看视图内容 exec sp_helptext 视图名
5. 修改视图 alter view 视图名 as select * from 表名 [where 条件]
6. 删除视图 drop view 视图名
7. 修改视图 update 视图名 set 字段名 = 值 [where 条件]
v 存储过程 / 触发器 / 事务
1.sql server 存储过程
create proc | procedure pro_name
[{@参数数据类型} [= 默认值] [output],
{@参数数据类型} [= 默认值] [output],
- ....
- ]
- as
select ......
2.sql server 触发器
insert 触发器
update 触发器
delete 触发器
关于 sql server 触发器这里就不多介绍了, 更多详情大家有兴趣可以看这里 http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html
来源: http://www.bubuko.com/infodetail-2652426.html