SQL 采用E-R 关系模型,具有分布式查询功能
SQL 的基本组件
SQL 服务器代理(SQL Server Agent)
SQL Server 服务器
SQL 邮件系统 (SQL Server Mail)
分布式事务协调器(Distributed Transaction Coordinator DTC)
事件探查器
企业管理器(Enterprise Manager)
查询分析器(Analysis Manager)
SQL 的四个基本数据库
master 用来记录数据库所有的服务器级系统信息和在数据库中的基本操作中使用的信息,用户帐号和配置信息等
model 建立数据库的模板,包含了每个用户建立的表中自动添加的系统表 用户自定义的类型存储位置
msdb 调度数据库用来进行复制,调度作业,管理报警和排除故障等活动
tempdb 临时的数据存储位置
数据库的安装和配置
本地操作:
服务设置
本地系统帐户 可以不用设置密码,但不能访问网络/可能限制SQL Server安装与其他服务器交互。
域用户帐户 使用Windows身份验证模式
联网操作:
数据库的操作
注册服务器
注册服务器可以实现网络连接
需要条件
(1)服务器端和客户端必须配置相同的网络库,并且同时开通
配置信息
服务器端和客户端的配置工具
(2)客户端的配置信息必须正确无误 SQL Server的 默认端口:1433
(3)服务器端和客户端的配置完成后才进行服务器的注册
建议操作数据库在查询分析器中进行操作,应用Transact-SQL语句
数据的完整性
确保数据的正确和合理,数据无误
数据完整性的方法和形式:
约束 (contraint) 新建表时的属性设置 设置数据的范围等
默认值 (default) 只用于插入语句 函数 常量 null
规则 (rule) 条件中@开头 调用需要在用户自定义类型中进行绑定
存储过程 (stored precedure) 定义好的执行语句
触发器 (trigger) 正确执行后触发事件
首先应用
use 确定处理的信息在哪个数据库
数据库的操作语句
数据操作
select 查询
格式:select 要查询的内容 from 查询的表 where 查询的条件
说明:如果是针对多表的查询则找出来表和表之间的公共联系作为中间的媒介
全部内容 同配符
select
*(具体的列)
all 列出全部
distinct 列出来不重复的
top n
连接符号 +
列+ '变化'+列 两个列的类型要一直 cast() 转换函数
case 函数
select *,
case 课程号
when ... then ....
when ... then ....
.....
end as ....
from ...
嵌套查询
select ..
{select .. from .. where ..) as ...
from ..
对列进行函数运算
统计函数
sum() avg() min() max() count()
count(*) 满足符合条件的所有内容
数学函数
abs()
ceiling() 大于或等于表达式的最小整数
floor() 小于或等于表达式的最大整数
round() 四舍五入
字符串函数
ascii(char) 返回字符串最左边的ASCII码
char(int) 将ASCII码转换成字符
len(str) 字符串的长度
str(float,leng)由数字数据转换来的字符数据
substring(str,star,end)
upper(str)
stuff(str,start,end,str)删除指定长度字符并在指定位置起点插入指定的字符
left(str,int) 返回从左边起指定字符的指定长度
right(str,int)
ltrim()
rtrim()
replace(old,"",new) 用第三个字符替换第一个字符中出现的第二个内容
reverse(str) 字符串的反转
日期函数
说明: date=getdate()
getdate() 返回日期和时间
day(date)
month(date)
year(date)
getutcdate() 返回当前的UTC时间(世界时间或格林尼治标准时间)
into 到新表中去
from
单一的表或是多个表
表 inner join 表 on 条件
where
等式条件 =
关系条件 > < >= <= <>
逻辑条件 and or not
范围条件 between and in() exists()
匹配条件 like
order by desc/asc
group by having
联接
用途:多表之间的查询
内连接 inner join on
可以多表连接
inner join on inner join on
外连接 outer join on (取两表都含有的内容)
向右外 right outer join on
全部 full outer join on
三表联合查询
use Test
select student.stuname as 姓名,score.score as 学生成绩,course.courname as 课程
from score ,student,course
where score.stid=student.stid and score.courid=course.courid
内连接
use Test
select student.stuname as 姓名
from student inner join score on student.stid=score.stid
insert 插入
insert into 表(列1,列2,...)values('','',...)
或者
insert into 表(所列出的列数量和下面的相等)
select 选择的数量迎合插入的数量
from 表
where ...
当进行插入的时候如果是插入全部内容可以不用写要插入的列
update 更新
update 表 set 列=value,... where .....
delete 删除
delete from 表 where ...
数据定义
create table 创建表
alter table 修改表
drop table 删除表
drop view 删除视图
create view 创建视图
create index 创建索引
drop index 删除索引
create procedure创建存储过程
drop procedure删除存储过程
create trigger 创建触发器
drop trigger 删除触发器
create schema 向数据库添加新模式
drop schema 从数据库删除模式
create domain 创建新数据值域
alter domain 改变域定义
drop domain 删除一个域
数据控制
grant 授予用户访问权限
deny 拒绝用户访问
revoke 解除用户访问权限
事务控制
commit 提交,结束当前事务
rollback 终止当前事务
set transaction 定义当前事务数据访问特性
程序化SQL
declare 为查询定义游标
explan 为查询描述数据访问计划
open 检索查询结果打开一个游标
fetch 检索一行查询结果
close 关闭游标
prepare 为动态执行准备SQL语句
execute 动态执行SQL语句
describe 描述准备好的查询
数据库的存储过程
数据库的存储过程名是以 SP 开头 主要存在于master数据库中
预先编译好的指令集合。
给存储过程传递参数用 @
数据库的触发器
声明只能在事件被成功的执行后触发的时候才被调用,触发器的功能很重要。
触发器的作用类型
insert update delete instead of alter
print '' 输出内容
数据库的辅助操作(可视化操作)
数据的导入和导出
数据库的备份和还原以及附加
数据库的自动备份
数据库的安全管理
SQL Server的安全等级
操作系统的安全性
SQL Server的安全性
数据库的安全性
数据库对象的安全性
数据类型
整数 bit (0/1) tinyint (0-255) smallint int bigint
小数 real float decimal numeric
日期时间 datetime smalldatetime
字符 char varchar text
二进制 binary varbinary image
统一码 nchar nvarchar ntext
货币 money smallmoney
特定 timestamp uniqueidentifier
新增 sql_variant table bigint
自定义 sysname