还有一个《Sqlserver2008技术内幕》的笔记,也很好!~

http://www.cnblogs.com/liupeng61624/p/4354983.html

温习一遍简单的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必知必会(第四版) 学习笔记二 视图

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

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

    温习一遍简单的sql语法,把自己掌握还不够的地方,做了些笔记.... 1 去重复关键词,distinct select distinct sname from student; 2 限制结果top的用 ...

  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. The L1 Median (Weber 1909)

    The L1 Median (Weber 1909) 链接网址 Derived from a transportation cost minimization problem, the L1 medi ...

  2. Web开发学习

    这几天天天学习网络开发的一些东西,接触了好些概念.原本打算自己弄个个人博客,BlogEngine.net已经做的很好了,可以直接拿来用而且源码开放.做的很不错,是WebForm的.本来打算好好学习一下 ...

  3. 安装和删除 Alcatraz 插件

    在终端下输入如下命令来安装Alcatraz: curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install. ...

  4. MS SQL 多连接数时修改数据库名称

    在MS SQL中,如果你想修改某一个数据库的名称,你可以通过下面几种方法实现. 方法一:使用SP_RENAMEDB系统存储过程实现. 语法: sp_renamedb [ @dbname = ] 'ol ...

  5. c# 基本知识 ref 和 out

    一:首先两者都是引用传递,都是按地址传递的. 二: 区别 (1)ref 默认必须初始化,out 不需要显式初始化.例如: ; int num2; refMethod(ref num1); outMet ...

  6. 理解JDBC和JNDI

    下面的英文是我找过来的,因为是英文所以不敢翻译出来误导别人,但是它描述的确实恰到好处,比所谓网上的JNDI和JDBC云云的解释要精辟很多,如果遇到不认识的单词,用有道吧~~:) The Java Na ...

  7. G面经prepare: Chucked Palindrome

    给定一个字符串,找出最多有多少个chunked palindrome, 正常的palindrome是abccba, chunked palindrome的定义是:比如volvo, 可以把vo划分在一起 ...

  8. poj 1176 Party Lamps

    http://poj.org/problem?id=1176 Party Lamps Time Limit: 1000MS   Memory Limit: 10000K Total Submissio ...

  9. CCF真题之最大矩形

    201312-3 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi.这n个矩形构成了一个直方图.例如,下图中六个矩形的高度就分别是3, 1, 6 ...

  10. JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总

    一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出.       1,JSTL标签总结: a).JSTL标签有什么用?          JSTL是由JCP(Java Commu ...