温习一遍简单的sql语法,把自己掌握还不够的地方,做了些笔记....

1 去重复关键词,distinct

select distinct sname from student;

2 限制结果top的用法

select top 5 id from student 获取前五条记录

可以利用top来写sql分页语句

3 排序order by

select * from student order by id,name desc;

默认是升序 asc,若是降序要在列名后标明desc

order by语句在sql句尾,在where语句后面出现

4 where

操作符 =,<> !=(不等于),>,>=,<,<=,!(不小于),!>(不大于)

BETWEEN......(在...之间)

is NULL(空值)

AND 条件与

OR   条件或

注意: and的结合优先级高于or,所以where后面多条件时候最好用括号写清楚

5 IN,NOT

select * from student

where id in(1,2,3)

where 条件中的NOT表明否定其后跟的任何条件,也就是筛选的是where条件外的数据

6 通配符匹配过滤

Like...模糊匹配

select * from student

where name like '汪%'

选出汪姓 的同学,其中 % 代表匹配任意次,_ 代表匹配单个字符,[]表示匹配中括号里面的字符

7 as 利用as起别名,简便写法

8 聚合函数

利用一些简单的聚合函数汇总数据

AVG()  计算平均值

Count() 计算 个数

Max() 最大值

Min() 最小值

9 分组数据

select COUNT(*) as 人数, Kind as 科目类型
  from Course
  Group by Kind

Having的用法,和where的区别就是where是在检索时过滤行的,而Having是用来过滤分组的

如上,在sql句末加上,Having Count(*) > 2 那么就是要筛选出人数大于2的组了

另外一种理解,where是对数据分组前进行过滤,而Having 是对数据分组后进行过滤,where中排出的行就不包括在分组中了,从而影响到Having子句中基于这些值过滤掉的分组。

至此简单回顾下select子句及其顺序

句子                   说明                       是否必须使用

---------       -----------------       -------------------------

select            要返回的列或者表达式         是

from             从中检索数据的表                仅在从表中选择数据使用

where           行级的过滤                          否

group by       分组说明                             仅在按组计算聚合时使用

Having          组级过略                              否

Order by        输出排序顺序                       否

以前一直弄不清,group by,having...一起怎么使用的,现在清楚了许多。

10 子查询

不多说了,就是一级级嵌套查询下去

11 联结表 多表查询

对于关系表而言,那么就是一种数据存放在对应的一张数据表中,避免数据的重复,比如把产品相关信息放在一张Products表中,产品对应的供应商相关信息放在另一张供应商表Vendors中。

如果我们要通过产品查询其对应的供应商Vendor的相关信息,要么使用之前的子查询,这样就过于繁琐,所以我们要使用表的连接查询。

多表的连接有自然连接,通过join来连接的左外连接和右外连接。

12 组合查询

union

select * from StuCou
where StuNo = 1
union
select * from StuCou
where StuNo = 2

等价于

select * from StuCou
where StuNo = 1 or StuNo = 2

13 插入数据

insert [into] Student  values('1','King',13,'浙江杭州')

这样的话,就是插入一整行数据,要求插入数据个数和数据表中定义的个数要一致

或者可以这么写

insert into Student(stu_id,stu_name,stu_age,stu_address,stu_score)

values(1,'King',13,'浙江杭州',100);

values中的值和前面的属性一一对应

从一个表复制到另一个表

insert * into class1 from class

那么数据库会新建一个名为class1的数据表然后把class中的数据复制到class1中。

如果你想将class表中的部分新数据导入到class1中的话,那么你可以这么写

insert into class1(列1,列2,列3)

select 列11,列22,列33

from class

但是如果行中有不能为null的属性,就不能这么做了

14 更新和删除数据

update ,delete

update 表名

set 列名 ='值'

where 条件

值得注意的是,更新操作往往会因为,表与表之间的约束关系发生冲突

delete from 表名

where 条件

delete是删除表的内容

若想删除整张表中的内容,那么delete from 表名

更快的删除表中所有行,而且速度更快

truncate Table  这样删除不用记录数据的变动所以删除更快

15 创建表,更新,删除

create table 表名(

列名 数据类型 说明(null/not null),

...

)

更新表

给表增加一列

Alter Table 表名

ADD 列名, 数据类型

Drop Column 列名   --删除一列

删除表

Drop Table 表名

sql必知必会(第四版) 学习笔记一的更多相关文章

  1. 算法第四版学习笔记之优先队列--Priority Queues

    软件:DrJava 参考书:算法(第四版) 章节:2.4优先队列(以下截图是算法配套视频所讲内容截图) 1:API 与初级实现 2:堆得定义 3:堆排序 4:事件驱动的仿真 优先队列最重要的操作就是删 ...

  2. 算法第四版学习笔记之快速排序 QuickSort

    软件:DrJava 参考书:算法(第四版) 章节:2.3快速排序(以下截图是算法配套视频所讲内容截图) 1:快速排序 2:

  3. sql必知必会(第四版) 学习笔记

    还有一个<Sqlserver2008技术内幕>的笔记,也很好!~ http://www.cnblogs.com/liupeng61624/p/4354983.html 温习一遍简单的sql ...

  4. sql必知必会(第四版) 学习笔记二 视图

    本书用到的几个表的建表sql语句如下: --销售产品供应商 CREATE TABLE Vendors ( vend_id varchar(20) not null, vend_name varchar ...

  5. 算法(第四版)学习笔记之java实现希尔排序

    希尔排序思想:使数组中随意间隔为h的元素都是有序的. 希尔排序是插入排序的优化.先对数组局部进行排序,最后再使用插入排序将部分有序的数组排序. 代码例如以下: /** * * @author seab ...

  6. 算法(第四版)学习笔记之java实现可以动态调整数组大小的栈

    下压(LIFO)栈:可以动态调整数组大小的实现 import java.util.Iterator; public class ResizingArrayStack<Item> imple ...

  7. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十四)之Type Information

    Runtime type information (RTTI) allow you to discover and use type information while a program is ru ...

  8. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十三)之Strings

    Immutable Strings Objects of the String class are immutable. If you examine the JDK documentation fo ...

  9. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十二)之Error Handling with Exceptions

    The ideal time to catch an error is at compile time, before you even try to run the program. However ...

随机推荐

  1. 格而知之5:我所理解的Run Loop

    1.什么是Run Loop? (1).Run Loop是线程的一项基础配备,它的主要作用是来让某一条线程在有任务的时候工作.没有任务的时候休眠. (2).线程和 Run Loop 之间的关系是一一对应 ...

  2. 手机端Zepto框架,利用swipejs插件做banner轮播图

    一,HTML部分<div class="banner"> <div id="slider" class="swipe"&g ...

  3. Funny Sheep(思维)

    Problem 1606 - Funny Sheep Time Limit: 1000MS   Memory Limit: 65536KB    Total Submit: 612  Accepted ...

  4. 【DataStructure】Some useful methods about linkedList(二)

    Method 1: Add one list into the other list. For example, if list1is {22, 33, 44, 55} and  list2 is { ...

  5. 【指数型母函数+非递归快速幂】【HDU2065】"红色病毒"问题

    大一上学完数分上后终于可以搞懂指数型母函数了.. 需要一点关于泰勒级数的高数知识 题目在此: "红色病毒"问题 Time Limit: 1000/1000 MS (Java/Oth ...

  6. UITabBarController+微博简单模拟1

    UITabBarController是IOS中很常用的一个viewController.UITabBarController通常作为整个程序的rootViewController,而且不能添加到别的c ...

  7. 【转载】Xcode6中添加pch文件

    //原文地址:http://www.cnblogs.com/YouXianMing/p/3989155.html 1. 新建工程: 2. 创建pch文件:cmd+n->other->PCH ...

  8. c#之process类相关整理

    一.根据进程名获取进程的用户名?   需要添加对 System.Management.dll 的引用   using System.Diagnostics; using System.Manageme ...

  9. c++ iostream 相关使用

    索引: C++的iostream标准库介绍+使用详解(转) iostream格式化输出 c++ 字符串流 sstream(常用于格式转换) 关于#include <iomanip>中iom ...

  10. Linux命令记录。

    引用:http://www.cnblogs.com/xiaoluo501395377/archive/2013/03/31/2992500.html 首先,需要确定的是知道的是:对于Linux系统来说 ...