一、SQL增删查改基本语句的练习

1.Select

关键字:
(1)distinct:去除列中重复值   例:SELECT DISTINCT country FROM Websites;
(2)where: 筛选指定条件的记录   例:SELECT * FROM Websites WHERE id=1;
(3)Top: 取行  例:

select top 5 * from table     //取前5行
select top 5 * from table order by id desc //后5行

(4)As取别名:SELECT 列名 as 新name form 表名 AS 新name;
(5)运算符:=     <>      <=      between        in      not   and与or:and优先级高于or

(6)like(模糊查询 %:多个 _:一个)
(7)order by: 对结果集按一个或多个列排序(默认升序),desc降序。

2.Insert

3.Update
例:

UPDATE Websites SET age='22', country='CN' WHERE name='王俊凯';(where指定需要更新的记录,否则全部更新)

4.Delete

DELETE FROM Earth WHERE name='USA' AND country='日本'; (where同上,造成全删除)

5.执行顺序

6.其他关键词

(1)UOION(合并两个或多个 SELECT 语句的结果)
(UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。)

select country from websites union select country from apps; //UNION 选取不同值, UNION ALL 可选取重复的值。可再加where筛选

(2)select into from :查询出来结果--->复制一张同结构的空表--->将数据拷贝进去

SELECT Websites.name, access_log.count //只复制一些列
INTO WebsitesBackup2016  //插入到新表
FROM Websites
LEFT JOIN access_log     //复制多个表中的数据(先把表连接起来)
ON Websites.id=access_log.site_id
WHERE country='CN';    //筛选条件
select *(查询出来的结果) into newtable(新的表名)from where (后续条件)

(3)insert into select :指定一张想要插入数据的表格--->对数据进行加工筛选--->填入一张准备好的表格

insert into  (准备好的表) select *(或者取用自己想要的结构)from 表名 where 各种条件

(3)
      Drop:删除索引、表和数据库
     Alter:在已有的表中添加、删除或修改列

(4)视图(基于 SQL 语句的结果集的可视化表,可向视图添加函数、WHERE等再次呈现数据。但每当用户查询视图时,数据库会使用视图的 SQL 语句重新查询最新数据,隐藏了底层的表结构,简化了数据访问操作,提供了一个统一访问数据的接口。)

创建:creat view  [数据库/表.]  视图名  [视图中的列名]   AS  查询结果集(完整的查询语句)
执行:  select * from 视图名    //直接把视图当成一张表

4.数据类型(需要的时候再查)

二、SQL 多表关联的学习

1.总体图

2.常用连接(总之,灵活运用子查询、嵌套、连接)

使用 join 时,on 和 where 条件的区别如下:
(1)、 on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。(但是如果没有连接条件则返回笛卡尔乘积(行*行))
(2)、where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

内连接:两个表的交集
左外连接:左边表加两表交集
右外连接:右边表加两表交集

通过连接把不同的表连接到一起,变成一张大表,使查询操作变得简单一、外连接(1)左连接  left join 或 left outer joinselect * from student left join score on student.Num=score.Stu_id;(2)右连接  right join 或 right outer joinselect * from student right join score on student.Num=score.Stu_id;(3)完全外连接  full join 或 full outer joinselect * from student full join score on student.Num=score.Stu_id;(4)交叉连接:cross join-------两个表的乘积(笛卡乘积)select * from a,b    或select * from student cross join score;二、内连接(join 或 inner join)内连接查询分为两类:
(1)隐式内连接    select * from A,B where 条件
(2)显式内连接    select * from A inner join B on 条件 (inner可以省略)AS(别名)

CROSS APPLY

OUTER APPLY

关于SQL中OUTER APPLY 得用法 - 该吃药了 - 博客园

三、SQL 基本功能函数

1.聚集函数(SQL Aggregate 函数计算从列中取得的值,返回一个单一的值)

(1)Count()

select count(*) from access_log;  -- 查询所有记录的条数
select count(alexa) from websites;-- 查询 alexa列中不为空的记录的条数
select count(distinct country) from websites;-- 查询country列中不重复的记录条数

(2)取第一行、最后一行

SELECT TOP 1 column_name FROM table_name  ORDER BY column_name DESC;

2.分组聚合
(1)注意使用顺序

SELECT id,Sum(boyfirend)
FROM table
WHERE age < 25
GROUP BY id  /根据id来重新分组(相同的为一组,然后再计算组中的SUM)
HAVING Sum(boyfirend) >10 ;  //聚合函数不能作为条件放在where(过滤行)之后,但可放having(过滤分组)后

3.Scalar函数(基于输入值,返回一个单一的值)

(1)  SELECT UPPER(列名) AS site_title FROM Websites;  //把选择的列,将其中的值转换为大写,小写LOWER()
(2)  SELECT MID(列名id,起始位置(下标从1开始),结束位置) AS 新列名 FROM table;  //把选择的列,提取出需要的值
(3)  SELECT LEN(列名) FROM table; //把选择的列,返回文本字段中值的长度
(4)  SELECT ROUND(列,要保留的小数位数) FROM TABLE; //把指定列的值,四舍五入为指定的小数位数
(5) SELECT DATE_FORMAT(Now(),'%Y-%m-%d') AS date FROM Table;  //NoW返回当前系统的日期和时间,DATE_FORMAT对数据格式化。
 4.其他·函数
(1)EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False

四、SQL 存储过程的学习

1.存储过程意义

(1)增强了代码的复用率和共享性
(2)存储过程存储在服务器上,并在服务器上运行,减少了网络中数据的流量
(3)只在创建时进行编译,以后每次执行存储过程都不需再重新编,加快了过程的运行速度
(4)加强了系统的安全性,提高了处理复杂任务的能力。

2.常用系统存储过程

(1)sp_helpdb:用于查看数据库名称及大小
(2)sp_helptext:用于显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。
(3)sp_helplogins:查看所有数据库用户登录信息。
(4)sp_helpsrvrolemember:用于查看所有数据库用户所属的角色信息。
附:临时存储过程,以“#”局部临时或“##”局部临时为前缀

3.用户自定义存储过程

(1)存在一些错误,具体深入学习需要到实际代码中

4.SQL 触发器的学习

(1).概念:是响应数据操作语言(DML)事件或数据定义语言(DDL)事件而执行的特殊类型的存储过程,是在用户对某一表中的数据进行UPDATE、INSERT和DELETE操作时被触发执行的一段程序。

(2).类别:

(1)DML触发器:是在执行INSERT、UPDATE或DELETE语句时被激活的触发器
(2)DDL触发器:是在执行CREATE、ALTER和DROP语句时被激活的触发器,是由数据定义语言引起的

(3).作用:保证数据库复杂的参照完整性和数据的一致性(数据库内存中两个特殊表:插入表inserted、删除表deleted(触发器执行过程中所有记录都会写入到两个对应的表中,并且用户只有只读权限,触发器完成工作后,这两个表将从内存中删除))

(4).注意事项:

<1>CREATE TRIGGER语句必须是批处理中的第一个语句,且只能用于一个表或视图。
<2>创建触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。
<3>触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。
<4>不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。不应引用系统表,而应使用信息架构视图。
<5>在含有用DELETE或UPDATE操作定义的外键表中,不能定义INSTEAD OF和INSTEAD OF UPDATE触发器。

(5).创建
(1)DML模板

REATE TRIGGER (触发器名字)  ON (表/视图)  FOR/AFTER/INSTEAD OF (insert/update/delete)   AS
BEGIN
declare @t int
insert......
if(....)
END

(2)DDL模板

USE  (数据库)
CREATE TRIGGER (触发器名字)  ON (数据库...)  FOR/AFTER/INSTEAD OF (CREATE/ALTER/DROP)    AS
BEGIN
print '不允许修改、删除操作'
rollback transaction
END

5.SQL 视图的学习

1.视图(基于 SQL 语句的结果集的可视化表,可向视图添加函数、WHERE等再次呈现数据。但每当用户查询视图时,数据库会使用视图的 SQL 语句重新查询最新数据,隐藏了底层的表结构,简化了数据访问操作,提供了一个统一访问数据的接口。)

(1)创建:
creat view  [数据库/表.]  视图名  [视图中的列名]   AS
查询结果集(完整的查询语句)(2)执行:  select * from 视图名    //直接把视图当成一张表

SQL知识(浓缩版)快速入门(基础语法、概念)相关推荐

  1. PHP快速入门-基础语法及面向对象

    配置sublime {"cmd": ["php", "$file"],"file_regex": "php$& ...

  2. Vue_02 快速入门 基础语法1

    目录 1. 模板语法 1.1 插值 1.1.1 文本 1.1.2 html 1.1.3 属性 1.1.4 表达式 1.2 指令 1.2.1 核心指令 2. 过滤器 2.1 局部过滤器 2.2 全局过滤 ...

  3. HTML5快速入门基础语法

    文章目录 前言:一些需要注意的小细节 1.meta标签 2.块元素 3.行内元素 inline element 一.列表 二.HTML 链接 三.结构化语义标签(布局标签) 四.图片标签 五.内联框架 ...

  4. Go 语言快速开发入门(基础语法详解,第一节)

    Go 语言快速开发入门(基础语法详解,第一节) 一.基础语法详解,第一节 1.HelloWorld 1.1.代码编写和解释 1.2.go语言注意事项 2.Go 语言的转义字符&&Go ...

  5. python编程语法大全-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货 每天 ...

  6. python编程语法-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_num ...

  7. python基础编程语法-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_num ...

  8. 牛客网刷题之SQL篇:非技术快速入门39T

    导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...

  9. 大话python3入门基础语法

    大话python3入门基础语法 语法目录 大话python3入门基础语法 总纲 1.基础类型 2.列表类型变量 3.字典类型 4.函数类型 5.类类型 6.总结 总纲 python是一门涉及面很广的语 ...

  10. python编程if语法-Python编程入门基础语法详解经典

    原标题:Python编程入门基础语法详解经典 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_number = ...

最新文章

  1. java获得服务器路径的几中方法
  2. 面向切面编程AOP的最佳入门示例
  3. 面试了3个‘85前’的嵌入式软件工程师
  4. Spring Cloud 与微服务学习总结(14)—— 云原生时代,如何从 Java 开发者转型微服务?
  5. JS简单实现分页显示
  6. 英国正在大举进军AI,看懂其三大投资走向
  7. 20130114 1080p vs. 1080i
  8. 固体激光器的转换效率
  9. Electron-Builder打包时报错could not find: “\XXX\0-messages.nsh“
  10. 三相短路电流计算机算法的原理什么,三相短路电流的计算机算法
  11. 用python通过selenium自动化测试抓取天猫店铺数据
  12. OSChina 周四乱弹 —— OSC妙龄少女@饺子君如何被捕获的?
  13. python后端滴滴、网易、老虎证券
  14. 健身运动装备有哪些?双十一运动健身装备选购指南
  15. drupal7 services
  16. 编译原理课程设计词法分析
  17. 我笑了一天的签名。。。李宇春竟然都谈恋爱啦
  18. 用HttpClient发送HTTPS请求报SSLException: Certificate for <域名> doesn’t match any of the subject alternativ
  19. AIBlockChain:“知名博主独家讲授”人工智能创新应用竞赛【精选实战作品】之《基于计算机视觉、自然语言处理、区块链和爬虫技术的智能会议系统》软件系统案例的界面简介、功能介绍分享之总篇
  20. python 装饰器(Decorators)原理说明

热门文章

  1. Java代码模拟实现购物车
  2. 2010年c语言上机题库,2010年全国计算机等级考试二级C语言上机题库
  3. JSP实用教程(3)——JSP内置对象
  4. CSS中单位rem的使用说明
  5. reset.css下载
  6. OpenCV x64 vs2010 下打开摄像头录制视频写成avi(代码为转载)
  7. 数据库 软件实施 工程师
  8. 第四卷 风起海外 第三百九十四章 修士、妖兽、小岛
  9. C语言入门1(devC的安装)
  10. Ansible - 自动化运维工具