0
点赞
收藏
分享

微信扫一扫

数据库-SQL Sever(知识覆盖)


数据库.SQL Sever.知识覆盖.职业技能

  • ​​0. 目录​​
  • ​​1. SQL Sever​​
  • ​​1.1 SQL语句分类​​
  • ​​SQL​​
  • ​​SQL分类​​
  • ​​基本书写规则​​
  • ​​1.2 SQL数据库和表操作​​
  • ​​SQL数据库操作​​
  • ​​SQL表操作​​
  • ​​SQL常用数据类型​​
  • ​​1.3 SQL数据操作​​
  • ​​SQL数据操作​​
  • ​​SQL查询​​
  • ​​SQL关联查询​​
  • ​​JOIN的几种类型缩写​​
  • ​​SQL合并查询​​
  • ​​SQL常用函数​​
  • ​​1.4 SQL查询逻辑分析​​
  • ​​逻辑查询处理的各个阶段​​
  • ​​逻辑查询处理阶段简介​​


0. 目录

1. SQL Sever

1.1 SQL语句分类

SQL

  • 概念:结构化查询语言
  • 作用:存储,查询,更新数据和管理关系型数据库

SQL分类

  1. 数据定义语言(DDL):定义和管理
  2. 数据操纵语言(DML):增删改
  3. 数据控制语言(DCL):授予回收权限,控制事务时间和效果,实时监视
  4. 数据查询语言(DQL):查

基本书写规则

  • ;
  • 不区分大小写
    关键字​​​大写​​​,数据库名,表明和列名​​小写​​​,表中数据​​区分​
  • 半角字符
  • 常数:字符串,日期,数字
  • 单引号标识字符串
  • 数字:无符号
  • test,abc

1.2 SQL数据库和表操作

SQL数据库操作

  • 创建数据库
CREATE DATABASE db_name
  • 更改数据库名
ALTER DATABASE db_name MODIFY NAME = newname
  • 删除数据库
DROP DATABASE db_name

SQL表操作

  • 创建数据表
CREATE TABLE table_name(
no int NOT NULL identity(1,1) primary key,--主键自增列
name NVARCHAR(100),
sex bit,
dept NVARCHAR(100)
);
CREATE TABLE table_name1(
no int CONSTRAINT p_no FOREIGN KEY(no) REFERENCES table_name(no),--外键
subject NVARCHAR(100),
score int
);
  • 更改表操作
  1. 表名修改
EXEC sp_rename 'table_name','new_name';
  1. 列名修改
EXEC sp_rename 'table_name.column_name','new_name','column_num';
  1. 新增列
ALTER TABLE table_name ADD column_name varchar(100) not null;
  1. 修改列
ALTER TABLE table_name ALTER COLUMN column_name nvchar(100);
  1. 删除列
ALTER TABLE table_name DROP COLUMN column_name;
  • 删除数据表
DROP TABLE table_name;

SQL常用数据类型

  • 字符串类型
  1. char,varchar(可变),nchar,nvarchar(可变)
  2. ​date​​​:00010101-99991231;​​datetime​​:17530101-99991231
  3. ​bit​​​:0,1,null;​​int​​:-2147483648-2147483647
  4. ​decimal(p,s)​​​:-10^38 - 10^38 -1​​p​​​:1-38​​s​​:0-p,0
  5. uniqueidentifier:存储全局标识符(GUID)

1.3 SQL数据操作

SQL数据操作

  • 插入数据
INSERT INTO table_name VALUES(a,b,c);
INSERT INTO table_name SELECT a,b,c;
  • 更新数据
UPDATE table_name SET column_name1=a,column_name2=b WHERE column_name=c;
  • 删除数据
DELETE FROM table_name WHERE column_name=a;
  • 空值判断
  1. 通过is null,is not null
WHERE column_name is null
WHERE column_name1 is not null

SQL查询

  • 基础查询
SELECT * FROM table_name
SELECT column_name FROM table_name
  • 关键字
  1. ​DISTINCT​​: 查寻结果去重
  2. ​WHERE​​: 查询条件
  3. ​IN​​: 满足一个或多个条件
  4. ​BETWEEN​​: 查询两个值之间的数据
  5. ​LIKE​​: 模糊查询
  6. ​AND​​​和​​OR​​:把多个查询连接起来
  7. ​GROUP BY​​:对数据集进行分组操作
  8. ​TOP​​:用于要返回的记录的数目
  9. ​ORDER BY​​:对指定列进行排序

SQL关联查询

  • 内连接
    ​​​INNER JOIN​​: 返回两个表连接字段相等的行
SELECT * FROM table_name INNER JOIN table_name1 ON tn(简写).column_name=tn1.column_name;
  • 左连接
    ​​​LEFT JOIN​​: 返回左表中所有记录和右表中连接字段相等的行
SELECT * FROM tn LEFT JOIN tn1 ON tn.column_name=tn1.column_name;
  • 右连接
    ​​​RIGHT JOIN​​: 返回右表中所有记录和左表中连接字段相等的行
SELECT * FROM tn RIGHT JOIN tn1 ON tn.column_name=tn1.column_name;
  • 完全连接
    ​​​FULL JOIN​​​:返回两个表中匹配的所有行
    左表匹配不到右表显示null
    右表匹配不到左表显示null
SELECT * FROM table_name FULL JOIN tn1 ON tn.column_name=tn1.column_name;

JOIN的几种类型缩写

LEFT OUTER JOIN = ​​LEFT JOIN​​​ RIGHT OUTER JOIN = ​​RIGHT JOIN​​ FULL OUTER JOIN = ​​FULL JOIN​​ INNER JOIN = ​​JOIN​​ CROSS JOIN = ​​,​

SQL合并查询

  • UNION/UNION ALL的特点
  1. 合并多个查询结果集为一个
  2. 合并表中的列的个数.数据类型必须相同或兼容
  3. UNION: 默认去掉重复值.
  4. UNION ALL: 允许有重复值使用

SQL常用函数

  • 聚合函数
  1. ​COUNT​​: 返回数据函数
  2. ​AVG​​: 返回所有列值的平均值
  3. ​SUM​​: 返回所有列值的总和
  4. ​MIN​​: 返回指定列的最小值
  5. ​MAX​​: 返回指定列的最大值
  • 字符串函数
  1. ​REPLACE(str,a,b)​​: 用b替换str中所有a
  2. ​LEFT(str ,x)​​: 返回str中最左边的x个字符
  3. ​RIGHT(str,x)​​: 返回str中最右边的x个字符
  4. ​LTRIM(str)​​: 切掉str开头的空格
  5. ​RTRIM(str)​​: 切掉str尾部的空格
  6. ​LEN(str)​​: 返回字符串字符数
  7. ​SUBSTRING(str,1,3)​​: 截取从1开始长度为3的字符串
  • 日期函数
  1. ​GETDATE()​​: 返回当前日期
  2. ​DATEADD(datepart, number, date)​​: 日期中 + 或 – 指定的时间间隔
  3. ​DATEDIFF(datepart,startdate,enedate)​​​: 返回两个日期之间的时间
    datepart: 年(yy/yyyy) 月(m/mm).日(dd/d) 小时(hh) 等
  4. ​YEAR(). MONTH(). DAY()​​: 返回年份,月份,日

1.4 SQL查询逻辑分析

逻辑查询处理的各个阶段

  • SQL区别于其他编程特性是处理代码的顺序
  • 每个步骤都会产生一个​​虚拟表​​,该虚拟表作为下一个步骤的输入.只有最后一步生成的表才会返回给调用者.

逻辑查询处理阶段简介

  1. FROM
    FORM阶段标识出查询的来源表,处理表运算符
    例如: 在联接运行中涉及的阶段笛卡尔积、ON筛选器和添加外部行(OUTER JOIN)
  2. 笛卡尔积
    对FROM涉及的两个表执行笛卡尔积(交叉连接),生成虚拟表VT1
  3. ON
    对VT1应用ON筛选器,只有满足条件的行才被插入VT2
  4. OUTER JOIN
    保留表中未找到的行添加到VT2,生成VT3
  5. WHERE
    只有满足WHERE 条件的行才被插入到VT4
  6. GROUP BY
    按照GROUP BY子句中指定的列名列表,对VT4进行分组,生成VT5. 每个分组只有一个结果行
  7. HAVING
    对VT5应用HAVING筛选器,只有满足条件的才插入VT6
  8. SELECT
    处理SELECT列表,生成VT7
  9. 计算表达式
    计算SELECT列表中的表达式,生成VT8
  10. DISTINCT
    将删除VT8中重复行,产生VT9
  11. ORDER BY
    根据ORDER BY子句中指定的列名列表,对V10进行排序,返回游标VC11,也是唯一可以使用选SELECT列表中别名的步骤
  12. TOP
    根据ORDER BY子句定义的逻辑排序,从VC9中选择指定数量或百分比的行,生成表VT10


举报

相关推荐

0 条评论