SQL SERVER 知识点补充

数据库相关定义介绍:
    DBS (DataBase System)是 数据库系统。DB(Database )是 数据库 。DBMS(DataBase Management System)是数据库管理系统。 DBA(Database Administrator)是数据库管理员。

  • 数据库系统DBS和数据库管理系统DBMS数据库系统 (DataBase System),是采用了数据库技术的计算机系统,是一个实际可运行的、按照数据库方法存储、维护和向应用系统提供数据支持的系统 ,它是数据库、硬件和软件,以及数据库管理员(DBA)的集合体。
  • 数据库管理系统(DataBase Management System),是指数据库系统中对数据进行管理的软件系统,它是数据库系统的核心组成部分。
  • 可以通过DBMS对DB进行定义、查询、更新及各种控制。

  • 向表中添加字段:Alter table [表名] add [列名] 类型
  • 修改表中字段类型 :Alter table [表名] alter column [列名] 类型
  • 重命名表:exec sp_rename ‘[原表名]’,’[新表名]’
  • 重命名列名:exec sp_rename ‘[表名].[列名]’,’[表名].[新列名]’
  • 修改数据库名称:exec sp_renamedb 'Students','NStudents'

Sqlserver将数据从一个表插入到另一个表:

  • 1.目标表不存在:SELECT * FROM INTO 目标表 from 原表
  • 2.目标表存在:INSERT INTO 目标表 SELECT * FROM 原表(正存在,所Insert)
  • 如果有选择性的赋值写入:INSERT INTO 目标表(column1,column2,column3) SELECT column1,column2,column3 FROM 原表
  • 数据库间的表数据复制:insert into 数据库A.dbo.table1(col1,col2,col3...) select col1,col2,col3... from 数据库B.dbo.table2

**Distinct(去重复) Constraint(约束) **


SQL语句执行顺序:

  1. FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联接),生成虚拟表VT1
  2. ON:对VT1应用ON筛选器。只有那些使<join_condition>为真的行才被插入VT2。
  3. OUTER(JOIN):如果指定了OUTER JOIN(相对于CROSS JOIN 或(INNER JOIN),保留表(preserved table:左外部联接把左表标记为保留表,右外部联接把右表标记为保留表,完全外部联接把两个表都标记为保留表)中未找到匹配的行将作为外部行添加到 VT2,生成VT3.如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。
  4. WHERE:对VT3应用WHERE筛选器。只有使<where_condition>为true的行才被插入VT4.
  5. GROUP BY:按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.
  6. CUBE|ROLLUP:把超组(Suppergroups)插入VT5,生成VT6.
  7. HAVING:对VT6应用HAVING筛选器。只有使<having_condition>为true的组才会被插入VT7.
  8. SELECT:处理SELECT列表,产生VT8.
  9. DISTINCT:将重复的行从VT8中移除,产生VT9.
  10. ORDER BY:将VT9中的行按ORDER BY 子句中的列列表排序,生成游标(VC10).
  11. TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者。
--我们想要查找总访问量大于 200 的网站,并且 alexa 排名小于 200。
SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites--输出网站名称和每个网站的总访问量
INNER JOIN access_log
ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200 --一层筛选掉排名小于200的网站
GROUP BY Websites.name--按照网站名称分组查询
HAVING SUM(access_log.count) > 200;--(按组筛选)分组之后,根据每组总访问量,筛选出总量大于200的

(补)创建视图:

create view View_EdsProd 
as
   select * from Tab_EdsProd where Mid>1

利用sql语句修改标识列:
sqlserver标识列


–end(2020/1/25)

发布了21 篇原创文章 · 获赞 3 · 访问量 344

猜你喜欢

转载自blog.csdn.net/MrLsss/article/details/104085050