sql server 基础教程[温故而知新三]

时间:2022-09-06 21:36:15

子曰:“温故而知新,可以为师矣。”孔子说:“温习旧知识从而得知新的理解与体会,凭借这一点就可以成为老师了。“ 尤其是咱们搞程序的人,不管是不是全栈工程师,都是集十八般武艺于一身。不过有时候有些知识如果有很久没用了的话,就会忘记,甚至是忘的你一点都想不起来,尤其是一些基础的东西。所以我才打算写个"温故而知新"的系列博文出来,一来是这些基础的东西我比较健忘,以后方便自己翻阅;二来是希望可以帮助到一些刚入门的朋友。这个系列记录的所有知识点都是最最最(重要的事情说三遍)基础的知识。大部分都是我学习的时候所积累的笔记。

温故而知新系列都是一些基础知识,大神可以直接跳过。

sql server 基础教程[温故而知新三]

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 条件
  • 清空表所有记录

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)

    startdateenddate 参数是合法的日期表达式。

    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()开平方根
  • 关于abs()/round()/...这些数学函数的demo可以在我的上篇博客中找到

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

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 触发器这里就不多介绍了,更多详情大家有兴趣可以看这里

3.sql server 事务

关于sql server 事务这里就不多介绍了,更多详情大家有兴趣可以看这里

v博客总结

关于sql server入门教程就写到这里,只是为了希望帮助到一些入门的朋友,或者一些像我这样健忘的人朋友恢复记忆。

作  者:请叫我头头哥

出  处:http://www.cnblogs.com/toutou/

关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!

版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信

声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

sql server 基础教程[温故而知新三]的更多相关文章

  1. SQL server基础知识(表操作、数据约束、多表链接查询)

    SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...

  2. 数据库开发基础-SQl Server 基础

    SQL Server 基础 1.什么是SQL Server SQL:Structured Query Language  结构化查询语言 SQL Server是一个以客户/服务器(c/s)模式访问.使 ...

  3. 【SQL Server】SQL Server基础之存储过程

    SQL Server基础之存储过程  阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...

  4. Sql Server 基础知识

    Sql Server 基础知识: http://blog.csdn.net/t6786780/article/details/4525652 Sql Server 语句大全: http://www.c ...

  5. 【转】SQL Server 2012 配置AlwaysOn&lpar;三&rpar;

    转载自:http://www.cnblogs.com/lyhabc/p/4682986.html 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http:/ ...

  6. Sql Server 基础语法

    来自:http://www.cnblogs.com/AaronYang/archive/2012/04/24/2468093.html Sql Server 基础语法 -- 查看数据表 select  ...

  7. SQL Server基础知识三十三问 &lpar;15-21&rpar;

    15. 存储过程可以调用自己么, 或者说可能有递归的存储过程么? SP nesting最多可以到多少层? 答: 可以的. 因为Transact-SQL 支持递归, 你可以编写可以调用自己的存储过程. ...

  8. SQL Server基础知识三十三问 &lpar;7-14&rpar;

    8. 一般什么时候使用update_statistics命令? 答:  这个命令基本上是在很多数据被处理过了之后才使用的. 如果大量的删除, 修改, 或这大量的数据插入已经发生了, 那么index就需 ...

  9. SQL Server基础知识三十三问 &lpar;1-7&rpar;

    1. SQL Server运行在什么端口上? 可以被修改么? 答: 1433端口. 可以修改的, 在SQL Server Configuration Manager的SQL Server Networ ...

随机推荐

  1. 每天一个设计模式-7 生成器模式(Builder)

    每天一个设计模式-7 生成器模式(Builder) 一.实际问题 在讨论工厂方法模式的时候,提到了一个导出数据的应用框架,但是并没有涉及到导出数据的具体实现,这次通过生成器模式来简单实现导出成文本,X ...

  2. Linux makefile 教程 非常详细,且易懂

    最近在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出 ...

  3. c&plus;&plus;11 新特性之lambda表达式

    写过c#之后,觉得c#里的lambda表达式和delegate配合使用,这样的机制用起来非常爽.c++11也有了lambda表达式,形式上有细小的差异.形式如下: c#:(input paramete ...

  4. &period;net如何实现时间相减得到天数

    第一种方法: 为了得到时间的天数,代码如下:(计算整天,不含半天) DateTime start = DateTime.Parse(txt_start.Value.Trim());//开始时间 Dat ...

  5. 【读书笔记《Android游戏编程之从零开始》】8&period;Android 游戏开发常用的系统控件(系统控件常见问题)

    Android 中常用的计量单位Android有时候需要一些计量单位,比如在布局Layout文件中可能需要指定具体单位等.常用的计量单位有:px.dip(dp).sp,以及一些不常用的pt.in.mm ...

  6. Bootstrap栅格系统

    栅格系统分为两种:默认栅格系统 row,流式栅格系统 row-fluid. row 默认栅格系统:即指定了每个栅格的宽度为60px,间距为20px.共有12个栅格.总宽度为940px; 即12个栅格= ...

  7. Stay Hungry

    保持饥饿,从身体上来说,可以随时保持机动状态,所以,今天的早饭.午饭.晚饭,我都没有吃到饱.等到想要放松的时候,就饱餐一顿,未必不是一种幸福!精神上,保持饥饿,我还不清楚是一种什么样的状态,自然也描述 ...

  8. Visual Studio 2015 企业版 官方中文版&period;iso

    Visual Studio 2015 企业版 官方中文版.iso 附上链接 不要积分 谢谢: http://download.csdn.net/detail/onebelowzero2012/9561 ...

  9. &lbrack;JSOI 2008&rsqb;星球大战starwar

    Description 题库链接 给你一张 \(n\) 点, \(m\) 条边的无向图,每次摧毁一个点,问你剩下几个联通块. \(1\leq n\leq 2m,1\leq m\leq 200000\) ...

  10. python练习题&lowbar;04

    import os def fetch(data): # print('\033[1;43m这是查询功能\033[0m') # print('\033[1;43m用户数据是\033[0m',data) ...