导语:经过一个月的学习,简单的把SQL Server 2008的基础过了一遍,现在进行笔记分享(大一学生自学,如果有错误,欢迎大佬们指正)

一、数据库的创建

1、数据库文件

(1).主要数据文件
包含数据库的启动信息,并指向数据库中的其他文件。每个数据库有一个主要数据文件。主要数据文件的建议扩展名为:mdf。
(2).次要数据文件
次要文件可用于将数据分散到多个不同的物理磁盘上以提高访问速度。次要数据文件是可选的。次要数据文件的建议文件扩展名为:ndf。
(3).日志文件
日志文件保存于恢复数据库的日志文件。

          create database test_sqlserver--创建名为test-SQL server的数据库
on
(
name='main_date_file',
size=5mb,
maxsize=1024mb,
filegrowth=30%,
filename='E:\student-sql server.mdf'--创建主要数据文件
)
log on(
name ='the_log_file',
size =3mb,
maxsize=1024mb,
filegrowth=30%,
filename='E:\student-sql server.ldf'--创建日志数据文件
)
go

注意:每个数据库有一个主要数据文件,可无次要数据数据文件或者可存在多个数据文件,至少一个日志文件。

2.表的创建

(1).表的概念
表是存储数据的数据库对象。用来保存各种数据。
(2).创建

 create table test_table--创建名为test_table的表
(
string nvarchar(10),
digital int,
date_time date
)
go

3.数据类型

(1).字符串类型数据

说明:Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。

(2).数字类数据类型
(3).日期时间类数据类型

(4).空值(NULL)
空值(NULL)不等于零(0)、也不等于空格或零长度的字符串,NULL值意味着没有输入,通常表明值是未知的或未设定的。
在设计表时,“允许空”的特性决定该列在表中是否允许为空值。

4.运算符

(1).算术运算符 + - * / %
(2).赋值运算符 =
(3).关系运算符< > = <= >= <>

二.数据的插入、更新、删除、查询

1.数据的插入

1.insert into 表名(列名)
values(值1,值2…)
说明:插入单行数据

2.insert into 表名(类名)
select 列名1,列名2 …
from (已存在的表)
说明:插入已存在的一个表

3.selsect 列名1,列名2…
into 新表名 (新建表)
from 源表名
说明:插入一个新是表

4.insert 表名(列名1,列名2…)
select 值1,值2…nuion(已存在)
select 值1,值2…
说明:插入多行数据

2.数据的更新

update 表名set 列名=更新值,列名=更新值,…
where 条件

3.数据的删除

1.dalete from 表名
where 条件
2.truncate table 表名

4.数据的查询

(1).简单查询

1.select 列名 from表名 where 查询表达式 order by 排名的列名 【ase升序或dese降序】
2.select 列名 as 命名 from 表名 (as命名列)
3.select 列名from 列名 where 列名 is null (查询空行)
4.select top (查询的行数) 列名from 表名 select top (查询的百分值) percent 列名from 表名

(2).模糊查询

1.select 列名from 表名 where 列名 like ‘c_’ 符合的值co 或’co%‘符合的值cond 或’co[1-2]’ 符合的值co1 或’co[开方1-2]'co3
2.select 列名from 表名 where 列名 between…and 数字列` 日期列
3.select 列名from 表名 where 列名 in…

(3).分组查询

1.select 列名from 表名 where… group by列名 having(从分组的结果中筛选行)…
2.内连接 select 列名from 表名1 inner join表名2 on…(连接对象)
3.左连接 select 列名from 表名 left join 表名 on…(连接对象)
4.右外连接 select 列名from 表名 right outer join列名 on…(连接对象)

(4).子查询

1.select 列名 from 表名 where 字段一 比较运算符(子查询)

(5).if exists查询

如果子查询的结果为非空,即记录条数1 条以上,则exists(子查询)将返回真(trun),否则返回假(false)

三.约束

1.(主键约束)alter table 表名 add constraint 主键名 primary key(列名)
2.(唯一约束)alter table 表名 add constraint 唯一约束名 unique(列名)
3.(默认约束)alter table 表名 add constraint 默认约束名 default (’ 默认值’) for address
4.(检查约束)alter table 表名 add constraint 检查名 check(列名+条件)
5.(外键约束)alter table 表名 add constraint 外键名 foreige key(列名) references表名(列名)

四.SQL Server函数

1.字符串函数

1.charindex (寻找一个指定的字符串在另一个字符串的起始位置)
2.len (返回传递给它的字符串长度)
3.upper (把传递给它的字符串转换为大写)
4.ltrim (清除字符左边的空格)
5.right (从字符串右边返回指定数目的字符)
6.replace (替换一个字符串的字符)
7.stuff (在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符)

2.日期函数

1.getdate (取得当前的系统日期)
2.dateadd (将指定的数值添加到指定的日期部分后的日期)
3.datediff (两个日期之间的指定日期部分的间隔)
4.datename (日期中指定部分的字符串形式)
5.daterart (日期中指定日期部分的整数形式)

3.数学函数

1.rand (返回从0到1之间的随机float)
2.abs (取数值表达式的绝对值)
3.ceiling (取大于或等于指定数值.表达式的最小整数)
4.floor (取小于或等于指定数值.表达式的最大整数)
5.power (取数值表达式的幂值)
6.round (将数值表达式四舍五入为指定的精度)
7.sign (对于正返回+1,对于负数返回-1,对于0责返回0)
8.sqrt (取浮点表达式的平方根)

4.系统函数

1.convert (用来转变数据类型)
2.current_use (返回当前用户的名字)
3.datalength (返回用于指定表达式的字节数)
4.host_name (返回当前用户所登录的计算机名字)
5.system_user (返回当前所登录的用户名称)
6.user_name (从给定的用户ID返回用户名)

5.聚合函数

1.sum(数字列)求合
2.avg(数字列)平均值
3.max(数字列)最大值
4.min(数字列)最小值
5.count(*)统计有多少行

五.变量

1.局部变量

declare @变量名 数据类型 set @变量名=’’

2.全局变量

1.@@error 最后一个T-slq错误的错误号
2.@@ identity 最后一次插入的标识符
3.@@servername 本地服务器的名称
4.@@version SQL server的版本信息
5.@@language 当前使用的语言的名称
6.@@max_connectlons 可以创建的同时连接的最大数目
7.@@rowcount 受上一个SQL语句影响的行数
8.@@transcount 当前连接打开的事务数

六.逻辑结构

1.if
begin
end
else
begin
end
2.case
when… then…
when…then…

end
3.while (1=1)
begin
break
end

七.T-SQL高级语句

(一).事务
begin teansaction --开始事务


commit transaction–提交事务
rollback transation --回滚事务
(二).create view 试图名 as 查询
select * from
(三).索引
create [unique][clustered][nonclustered] index 索引名 on 表名(列名)whith fillfactor=x

八.存储过程

1.系统存储过程

1.sp_datebsese 列出服务器上的所有数据库
2.sp_helpdb 报告有关指定数据库或所有数据库的信息
3.sp_renamedb 更改数据库的名称
4.sp_tables 返回当前环境下可查询的对象的列表
5.sp_columns 返回某个表列的信息
6.sp_help 查看某个表的所有信息
7.sp_helpconstraint 查看某个表的约束
8.sp_helpindex 查看某个表的索引
9.sp_stored_procedures 列出当前环境中的所有存储过程
10.sp_password 添加或修改登录账号的密码
11.sp_helptexat 显示默认值。未加密的存储过程,用户定义是存储过程,触发器或试图的实际文本

2.创建存储过程

create procedure存储过程名
@参数1 数据类型 =默认值 output,

@参数1 数据类型 =默认值 output
as
SQL语句
go

3.调用存储过程的语法

execute 过程名 [参数] 或
exec 过程名 [参数]

4.raiserror语句

raiserror(msg_id|msg_str,severity,state WITH option[,…n])
1.msg_id :在sysmessages系统表中指定用户定义错误信息
2.msg_str:用户定义的特定信息,最长255个字符
3.severity:定义严重性级别。用户可使用的级别为0-18级
4.state:表示错误的状态,1至127之间的值
5.option: 表示是否将错误记录到服务器错误日志中

------------------------------------------------------------------------------------------.
实验部分未做,如果感兴趣的小伙伴可自己实验一下,现给出实验脚本,感谢观看。

create database hkdcompany
go
use hkdcompany
go
create table company
(--编号CId nvarchar(50) primary key,--名称CName nvarchar(20),--基本工资CSal decimal(7,3),--电话CPhone nvarchar(11),--部门CDept int,--奖金CBonus int,--职位ID,JId  int,--分部表SId  int,
)
--职位表create table job(--编号JId int identity(1,1) primary key,--名称JName nvarchar(20),)--分部表create table subsection
(--编号SId int identity(1,1) primary key,--名称SName nvarchar(20),
)
DECLARE @fName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20))    -- 姓氏
DECLARE @lName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20))    -- 名字
DECLARE @bonus TABLE(Id INT IDENTITY(1,1) PRIMARY KEY,BMoney int)   --奖金
DECLARE @sub TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20))   --分部
declare @allName nvarchar(20)
declare @allSal decimal(7,3)
declare @allId nvarchar(50)
declare @allJob nvarchar(20)
declare @allPhone varchar(11)
declare @allDept int
declare @allBonus int
declare @allJId int
declare @allSId int
INSERT @fName VALUES
('赵'),('钱'),('孙'),('李'),('周'),('吴'),('郑'),('王'),('冯'),('陈'),('楮'),('卫'),('蒋'),('沈'),('韩'),('杨'),
('朱'),('秦'),('尤'),('许'),('何'),('吕'),('施'),('张'),('孔'),('曹'),('严'),('华'),('金'),('魏'),('陶'),('姜'),
('戚'),('谢'),('邹'),('喻'),('柏'),('水'),('窦'),('章'),('云'),('苏'),('潘'),('葛'),('奚'),('范'),('彭'),('郎'),
('鲁'),('韦'),('昌'),('马'),('苗'),('凤'),('花'),('方'),('俞'),('任'),('袁'),('柳'),('酆'),('鲍'),('史'),('唐'),
('费'),('廉'),('岑'),('薛'),('雷'),('贺'),('倪'),('汤'),('滕'),('殷'),('罗'),('毕'),('郝'),('邬'),('安'),('常'),
('乐'),('于'),('时'),('傅'),('皮'),('卞'),('齐'),('康'),('伍'),('余'),('元'),('卜'),('顾'),('孟'),('平'),('黄'),
('和'),('穆'),('萧'),('尹')
INSERT @lName VALUES ('爱'),('安'),('百'),('邦'),('宝'),('保'),('抱'),('贝'),('倍'),('蓓'),('本'),
('必'),('碧'),('璧'),('斌'),('冰'),('兵'),('炳'),('步'),('彩'),('曹'),('昌'),('长'),('常'),('超'),
('朝'),('陈'),('晨'),('成'),('呈'),('承'),('诚'),('崇'),('楚'),('传'),('春'),('纯'),('翠'),('村'),
('殿'),('丁'),('定'),('东'),('冬'),('二'),('凡'),('方'),('芳'),('昉'),('飞'),('菲'),('纷'),('芬'),
('奋'),('风'),('峰'),('锋'),('凤'),('芙'),('福'),('付'),('复'),('富'),('改'),('刚'),('高'),('阁'),
('铬'),('根'),('庚'),('耕'),('公'),('功'),('冠'),('光'),('广'),('归'),('桂'),('国'),('海'),('寒'),
('翰'),('昊'),('浩'),('荷'),('红'),('宏'),('洪'),('鸿'),('厚'),('华'),('存'),('大'),('丹'),('道'),
('德'),('登'),('砥'),('典'),('佃')
insert job values('外型设计师'),('外型设计师总监'),('外型审核员'),
('主板设计师'),('主板设计师总监'),('主板测试员'),
('软件设计师'),('软件设计师总监'),('软件测试员'),
('售前工程师'),('售后工程师'),('销售经理'),
('销售总监'),('物流经理'),('仓储经理')
insert subsection values('上海'),('海口'),('北京'),
('重庆'),('南宁'),('广州'),
('深圳'),('杭州'),('南昌'),
('西安')
insert @bonus values(null),(2000),(2500),(2800),(2980),(3000),(3500),(3800),(3980),(4000),(4500),(4800),(4980),(4999),(5000),(5500),(5800),(5980),(5999),(6000),(6500),(6800),(6980),(6999),(9999)
declare @i int
set @i=1
while @i<1000
begin
-- 生成名字select @allName = RTRIM((SELECT NAME FROM @fName WHERE Id = Round(Rand()*(100-1)+1,0)))+RTRIM(LTRIM((SELECT NAME FROM @lName WHERE Id = Round(Rand()*(100-1)+1,0))))+RTRIM(LTRIM((SELECT NAME FROM @lName WHERE Id = Round(Rand()*(100-1)+1,0))))--生成工资set @allSal= 3000.000 + Round(Rand()*2000,3)--生成IDset @allId = REPLACE(newId(),'-','')--生成电话号码set @allPhone =13000000000+cast( floor(rand()*1000000000) as bigint)+ABS(CAST(CAST( NewID() AS BINARY(3) )AS INT))--生成部门set @allDept = Round(rand() * 20,0)--生成奖金select @allBonus = RTRIM((SELECT BMoney FROM @bonus WHERE Id = Round(Rand()*(25-1)+1,0)))--生成职位编号set @allJId = Round(Rand()*14+1,0)--生成分部编号set @allSId = Round(Rand()*16+1,0)--插入数据insert into company(CId,CName,CSal,CPhone,CDept,CBonus,JId,SId)values(@allId,@allName,@allSal,@allPhone,@allDept,@allBonus,@allJId,@allSId)--循环推进set @i = @i + 1
end

SQL Server 2008基础(自学笔记)相关推荐

  1. SQL Server 2008 基础

    SQL Server 2008 基础 SQL流程 TDS是一种协议,一系列描述两个计算机间如何传输数据的规则.象别的协议一样,它定义了传输信息的类型和他们传输的顺序.总之,协议描述了"线上的 ...

  2. SQL Server 2008/2012中SQL应用系列及BI学习笔记系列--目录索引

    SQL Server 2008中的一些特性总结及BI学习笔记系列,欢迎与邀月交流. 3w@live.cn  ◆0.SQL应用系列 1.SQL Server 2008中SQL增强之一:Values新用途 ...

  3. SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引 @邀月

    邀月 的数据库学习 http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html SQL Server 2008中SQL应用系列及BI ...

  4. 找到一本适合自己的SQL Server 2008入门书

    <SQL Server 2008基础教程> 本书面向广大开发人员,从喜欢使用图形界面的程序员,到希望成为SQL Server 2008编程语言Transact SQL(T-SQL)高手的程 ...

  5. 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-08 数据修改

    插入数据 T-SQL提供了几种数据插入的语句:INSERT VALUES.INSERT SELECT.INSERT EXEC.SELECT INTO及BULK INSERT. INSERT VALUE ...

  6. 《Microsoft Sql server 2008 Internals》读书笔记--第九章Plan Caching and Recompilation(10)

    <Microsoft Sql server 2008 Internals>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397 ...

  7. 《Microsoft Sql server 2008 Internal》读书笔记--第八章The Query Optimizer(1)

    <Microsoft Sql server 2008 Interna>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397.h ...

  8. 《Microsoft Sql server 2008 Internal》读书笔记--第七章Special Storage(3)

    <Microsoft Sql server 2008 Interna>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397.h ...

  9. Analysis Services基础知识——深入SQL Server 2008

    Analysis Services基础知识 --深入SQL Server 2008 这一节中,我们将介绍Analysis Services的体系结构,这个体系结构在SQLServer2005中建立,并 ...

最新文章

  1. SOLOv 2:实例分割(动态、更快、更强)
  2. python用哪个版本比较好 2020_2020年最常见的Python面试题答案
  3. Java长存!12个Java长久占居主要地位的原因
  4. opencv用haartraining训练出现的一些问题
  5. UP_DOWN_REQUEST
  6. Bugzilla集成LDAP的方法
  7. linux100day(day6)--shell脚本简单逻辑
  8. 通过conda安装imgaug
  9. linux-文件的删除与创建
  10. Unity3D研究院之手游开发中所有特殊的文件夹(转)
  11. L2TP 配置实例——Client-Initiated
  12. 限流, 熔断,降级笔记
  13. WordPress优化教程让WordPress打开速度更快
  14. 带妹入坑,她该怎样提高自己的编程能力?
  15. Web.config配置文件详解(转载)
  16. TypeScript散文
  17. 电瓶车.20180804
  18. 基于opencv和pillow实现人脸识别系统(附详细源代码)
  19. 连接 mysql 数据库的 失败_MySQL_连接MySQL数据库失败频繁的原因分析,连接mySQL数据库失败频繁,主 - phpStudy...
  20. 杂牌机搞机之旅(一)——获得root权限(刷入magisk)

热门文章

  1. dropzonejs vue 使用_dropzone.js使用实践
  2. fs2410开发板搭建网站服务器,学习 ARM 系列 -- FS2410 开发板上 Nand Flash 到内存的代码搬移...
  3. 【“笨办法”学Python】12.提示别人——input()和pydoc功能
  4. js正则匹配某个汉字
  5. android歌词跟随手势滑动,Android实现跟随手指拖动并自动贴边的View样式(实例demo)...
  6. nacos注册中心发现不到服务
  7. 隔墙有耳之数据在存储的时候对数据加密
  8. (java)创建两个线程,在一个线程中打印输出1-100以内的偶数,在一个线程中输出1-100以内的奇数.
  9. Ubuntu18.04系统编译android源码环境配置
  10. PHP生成随机字符串