手记

SQL入门知识大纲

SQL

•范式

     第一范式目标是确保每列的原子性。每列都是不可再分的最小数据单元

     第二范式目标是要求每个表值描述一件事情

      第三范式除了主键以外的其他列都不传递依赖于主键列

•语句

     插入INSERT INTO 表名(列1,列2····)VALUES(值1,值2····)

     删除DELETE FROM 表名 WHERE

     修改UPDATE 表名 SET 列1=值1,列2=值2··· WHERE

      查找SELECT 列1,列2···FROM 表名 WHERE ··· group by··· having····order by

             SELECT 列1,列2 FROM 表1 INNER JOIN 表2 ON····

约束

     加约束alter table 表名 //add constraint 约束名 约束类型 约束说明

     删约束alter table 表名//drop constraint 约束名

     system databases 新建的数据库,systemobjects 新建的数据表,sysindexs 索引

     新数据库 if exists (select * from system databases where name='') //drop database/table 名 //create database 名 //on { //name = //size= //maxsize= //filegrowth= //filename= } //log on { // 同上

     新表 列名 数据类型 是否为空

循环

IF ELSE

     IF(条件)//BEGIN//语句//END//ELSE//BEGIN//语句//END

WHILE

     WHILE(条件)//BEGIN//语句//BREAK//END

CASE

     CASE//WHILE 条件1 THEN 结果1//WHILE 条件2 THEN 结果2·············//END

 •列操作

     max(列),min(列),avg(列),sum(列),count(列)

•完整性

     域完整性检查约束(CHECK_KEY),默认约束(DEFAULT),非空约束

     实体完整性主键约束(PRIMARY_KEY),唯一约束(UNIQUE),标识列

     引用完整性外键约束(FOREIGN)

     自定义完整性触发器,存储过程,规则

•数据类型转换

     convert(数据类型,变量)

     cast(变量名 as 数据类型)

•变量

     定义变量(局部)

          Declare @变量名 数据类型 赋值

          Set/Select @变量名 = 值

     全局变量

          @@ERROR 最后一个T-SQL错误的错误号

          @@IDENTITY 最后一次插入的标识值

          @@LANGUAGE 当前使用的语言的名称

          @@MAX_CONNECTIONS 可以创建的同时连接的最大数目

          @@ROWCOUNT 受上一个SQL语句影响的行数

          @@SERVERNAME 本地服务器的名称

          @@TRANSCOUNT 当前连接打开的事物数

          @@VERSION SQL Server的版本信息

•事务(TRANSACTION)

     作为单个逻辑工作单元执行的一系列操作。

     多个操作作为一个整体向系统提交,要么都执行,要么都不执行。

     事务是一个不可分割的工作逻辑单元

     ACID属性

          原子性(Atomicity)事务是一个完整的操作,要么一起执行,要么一起不执行

          一致性(Consistency)事务完成时,数据必须处于一致状态

          隔离性(Isolation)并发事务之间彼此隔离,独立,不应以任何方式影响和依赖

          永久性(Durability)事务完成后,它对数据库的修改被永久保持

     开始事务 BEGIN Transaction

     提交事务 Commit Transaction

     回滚(撤销)事务 Rollback Transaction

     将隐性事务模式设置为打开 SET IMPLICIT_TRANSACTIONS ON

•视图

     一个查询的名字,提高数据安全性,是一张虚拟表,不存放数据。

     将多个物理数据库抽象为一个逻辑数据库

     新建视图 Create View 名字 //AS(SELECT查询语句)

•索引

     唯一索引(Unique不运行两行具有相同的索引值)

     主键索引(是唯一索引的特殊类型)

     聚集索引(clustered 一张表只允许有一个聚集索引。表中各行的物理顺序于键值的逻辑索引顺序相同)

     非聚集索引(nonclustered指定表的逻辑顺序)

     创建索引

          Create [Unique/clustered/nonclustered] Index 名字 on 表名(列)[with Fill factor = x]x表示填充因子:制定一个0-100的值,表示索引页填充的百分比

          注意事项查询时,避免*,只返回需要列;索引尽量小,字节数小的列上建立索引;包含索引列的表达式作为条件时应写在第一个;避免在order by子句中使用表达式;根据业务数据发送频率,定期重新生成或重新组织索引

•存储过程

     预先存储好的SQL程序(操作语句,变量,逻辑控制语句);保存在数据库中;通过名称和参数执行,也可返回结果;存储过程嵌套最大32层

     系统存储过程

          sp_databases 列出服务器上的所有数据库

          sp_renamedb 更改数据库的名称

          sp_tables 返回当前环境下可查询的对象的列表

          sp_columns 返回某个列的信息

          sp_hele 查看某个表的所有信息

          sp_helpconstraint 查看某个表的约束

          sp_helptext 显示默认值,未加密的存储过程,用户定义的存储过程,触发器或试图的实际文本

          sp_helpindex 查看某个表的索引

          sp_password 添加或修改登陆账户的密码

     调用

          execute 过程名[参数]

     创建

          create proc[edure] 存储过程名 //@参数1 数据类型 = 默认值 output,···//As SQL语句//Go

•触发器TRIGGER

     定义

          一种特殊的存储过程,在对表进行更新删除插入自动执行,

          也具备事务的功能;

          能在多表之间执行特殊的业务规则

          不能直接调用,常用于强制业务规则,高及约束

     创建

          create Trigger 名 On 表名[with encryption]//For 触发器类型[Delete,Update,Insert]//As Sql语句//GO with encryption表示加密触发器定义的SQL文本



作者:骘涅
链接:https://www.jianshu.com/p/99e60faca27c


0人推荐
随时随地看视频
慕课网APP