温习一遍简单的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. 关于map与set的一点理解;

    set代码: #include<stdio.h> #include<set> using namespace std; int main(){ set<int>m; ...

  2. 深入浅出:重温JAVA中接口与抽象的区别

    抽象类:声明一个抽象类,就是在类的声明开头.在Class关键字的前面使用关键字abstract 下面定义一个抽象类,代码如下: abstract class A{ abstract void call ...

  3. Oracle SQL函数之转换函数To_char汇总

    TO_CHAR(x[[,c2],C3])[功能]将日期或数据转换为char数据类型[参数]x是一个date或number数据类型.c2为格式参数c3为NLS设置参数如果x为日期nlsparm=NLS_ ...

  4. javax inect

    Spring 3 and JSR-330 @Inject and @Named example By mkyong | September 16, 2012 | Viewed : 86,399 tim ...

  5. httpwatch 9.3怎么在ie 8上看不到

    首先,确认HttpWatch Basic加载项是否启动:打开IE,单击工具图标并选择管理加载项.确认HttpWatch Basic的状态是已启用,点击关闭.之后打开某个网页,在页面空白处右击选择Htt ...

  6. SQLServer2000数据同步复制技术方法

    一. 预备工作 1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户 --管理工具 --计算机管理 --用户和组 --右键用户 --新建用户 ...

  7. AFNetworking自我总结

    AFNetworking 简介 目前国内开发网络应用使用最多的第三方框架 是专为 Mac OS & iOS 设计的一套网络框架 对 NSURLConnection 和 NSURLSession ...

  8. Xcode中插件的安装以及Xcode升级后插件实效的解决方法

    插件的安装 下载好插件,直接运行,然后将Xcode关闭,再次打开Xcode会弹出一个提醒框. 这时候选择 Load Bundle 即可,这时候插件就安装到了Xcode上. Xcode所有的插件都安装在 ...

  9. (Access denied for user 'root'@'localhost' (using password: NO))

    先记一下遇到的问题: 项目使用mySql服务器,用户名密码正常,权限齐全,mySql服务已启动,但运行java web程序时显示: 目前正在解决 解决方案: 1.打开MySQL目录下的my.ini文件 ...

  10. Struts2中使用Session的两种方法

    在Struts2里,如果需要在Action中使用到session,可以使用下面两种方式: 通过ActionContext 类中的方法getSession得到 Action实现org.apache.st ...