温习一遍简单的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. java File的getLastModified在不同操作系统以下存在差异

    java对文件读取改动时间(getLastModified())在不同的操作系统下存在差异  //1.在windows下,返回值是毫秒级别,不存在问题 //2.在Linux下,返回的值是毫秒值,可是会 ...

  2. BCD码、十六进制与十进制互转

    在做嵌入式软件的设计中,常常会遇到十六进制.BCD码与十进制之间的转换,近期做M1卡的应用中,涉及了大量的十六进制.BCD码与十进制之间的转换.通过对BCD码.十六进制 权的理解,轻松的实现了他们之间 ...

  3. NTP-ntpdate:no server suitable for synchronization found

    NTP-ntpdate 问题处理 解决ntp的错误 no server suitable for synchronization found 当用ntpdate -d 来查询时会发现导致 no ser ...

  4. android——字体颜色跟随状态改变

    TextView的字体颜色也可以和ImageView的background一样,跟随状态发生改变.只需要自定义一下字体颜色.在color文件夹下面,新建一个颜色文件的xml. OK ,这就完成 了. ...

  5. 深入char、varchar、text和nchar、nvarchar、ntext的区别详解

    很多开发者进行数据库设计的时候往往并没有太多的考虑char, varchar类型,有的是根本就没注意,因为存储价格变得越来越便宜了,忘记了最开始的一些基本设计理论和原则,这点让我想到了现在的年轻人,大 ...

  6. 如何在Google Map中处理大量标记(ASP.NET)(转)

    如何在Google Map中处理大量标记(ASP.NET)(原创-翻译) Posted on 2010-07-29 22:04 Happy Coding 阅读(8827) 评论(8) 编辑 收藏 在你 ...

  7. W - stl 的 优先队列 Ⅲ

    Description In a speech contest, when a contestant finishes his speech, the judges will then grade h ...

  8. 从汇编看c++成员函数指针(二)

    下面先看一段c++源码: #include <cstdio> using namespace std; class X { public: virtual int get1() { ; } ...

  9. Java三大特征之继承(二)

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  10. linux网络编程:使用单进程实现多客户端通信

    服务端: //回射服务器 //避免僵尸进程 #include "unistd.h" #include "sys/types.h" #include " ...