数据库学习笔记 4 强大的SQL
其实这篇文章应该至少一个星期前就应该更新了,但是最近小猿我和喜欢了好多年的女神牵手成功,所以这些天有点飘。
---创建表结构
create table tablename
(
id int,
name varchat(20) not NULL,
address varchat(100) ,
primary key (id),
FOREIGN KEY (id) REFERENCES retable
);
---删除数据
delete from tablename;
---删除关系(删除表)
drop table tablename;
---添加列
alter table tablename add name varchat(20);
---删除列
alter table tablename drop name;
---插入数据
insert into tablename values(...);
---查询语句(多关系查询)
select * from tablename where ...;
---对查询查询内容进行去重
select distinct name from tablename;
聚集函数
最经常用过的聚集函数也就
- avg 平均值
- sum 求和
- min 最小值
- max 最大值
- count 记录数
分组聚集 Group by
对于Group by只要记住如果Group by子句中没有出现的属性,在select子句中只能以聚集函数的形式体现。
join using
这次学习还遇到一个坑,不理解什么是join using。查了一遍才知道,当两个表关联字段采用相同明明规范时可以用join using 简化join on
select * from A join B on a.name=b.name
可以替换成 select * from A join B using(name)
top
由于我是一本《sqlserver宝典2012》和《数据库系统概念》一起看的,所以有时候能遇到一些小差异
《数据库系统概念》里的练题里有一个是找出工资最高的所有人(工资最高有很多人)
我的第一个想法就是用前几天看的top配合with ties就可以简单的解决这个问题了,执行了一下发现mysql并不支持这样的语法与之对应的是limit,Oracle中与之对应的应该是利用rownum。
外连接
外连接分为左、右、全三种连接方式。
左外连接以左表为主表,右表中没有的指补null,右外连接相反。
全外连接左右都会判断。
SQL VIEW
总是听周围的大神们讲这个功能或者那个功能应该用SQL视图或许能简单一点,这回终于一睹SQL view的芳容。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
知道了SQL view是怎么回事,我开始纠结于应用程序怎么调用的问题。其实很简单视图就是存放在数据库上的虚拟表,只不过只有在使用的时候数据才会被查询出来。
SQL中的时间
SQL中表示时间的类型基本有三种
- date 表示年月日
- time 表示时分秒
- timestamp 是date和time的结合