数据库学习笔记 4 强大的SQL

时间:2022-03-21 21:43:14

其实这篇文章应该至少一个星期前就应该更新了,但是最近小猿我和喜欢了好多年的女神牵手成功,所以这些天有点飘。

---创建表结构
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的结合