知识点:
SELECT 想查的信息 FROM 从哪个表查询 WHERE 条件; --分号结尾,逗号隔开
MySQL中 COUNT
在对列进行计数时不统计值为 null的条目
表头重命名,用as语法 count(gender) as male_num,
浮点数的平均值可能小数点位数很多,保存一位小数,用round函数 round(avg(gpa),1) as avg_gpa
需要对两个表进行联结FROM ...JOIN...ON...
SQL UPDATE 语法
UPDATE 语句用于更新表中已存在的记录。
UPDATE _table_name_
SET _column1_=_value1_,_column2_=_value2_,...
WHERE _some_column_=_some_value_;
SQL SELECT
select distinct 去重
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
对于多个select不去重:union all
SQL ALTER TABLE 语句
https://www.runoob.com/sql/sql-alter.html
SQL ALTER TABLE 语法
如需在表中添加列,请使用下面的语法:
ALTER TABLE table_name
ADD column_name datatype
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
ALTER TABLE table_name
ADD column_name datatype
要改变表中列的数据类型,请使用下面的语法:
SQL Server / MS Access:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
My SQL / Oracle:
ALTER TABLE table_name
MODIFY COLUMN column_name datatype
MySQL UNION 操作符
https://www.runoob.com/mysql/mysql-union-operation.html
UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;
HAVING 子句
https://www.runoob.com/sqlite/sqlite-having-clause.html
group by ... having count(*)>1
HAVING 子句用于指定条件来过滤将出现在最终结果中的分组结果。>1
即用作去重。
WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。
位置:HAVING 子句必须放在 GROUP BY 子句之后,ORDER BY 子句之前。
SQL 连接(JOIN)
https://www.runoob.com/sql/sql-join.html
--示例
SELECT Websites.id, Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id;
- INNER JOIN:如果表中有至少一个匹配,则返回行
- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN:只要其中一个表中存在匹配,则返回行
PostgreSQL TRUNCATE TABLE
https://www.runoob.com/postgresql/postgresql-truncate-table.html
PostgreSQL 中 TRUNCATE TABLE 用于删除表的数据,但不删除表结构。
TRUNCATE TABLE 与 DELETE 具有相同的效果,但是由于它实际上并不扫描表,所以速度更快。 此外,TRUNCATE TABLE 可以立即释放表空间,而不需要后续 VACUUM 操作,在大型表上非常有用。
语法:TRUNCATE TABLE table_name;
*/+ /*
Oracle中这种东西叫做hint,是一种优化SQL的工具。不同的hint会导致不同的优化模式。
例如一句SQL可能这样写:
select a.id, a.name
from a, b
where a.date=b.date
假如这个语句执行起来很慢。我们就可以用hint指定某一种优化模式,使运行速度加快。比如说指定选用a表的a_indx这个索引,及b表的b_indx这个索引,可以写作
select /*+ index(a a_indx) index(b b_indx) */
a.id, a.name
from a, b
where a.date = b.date
这样就实现了对SQL的优化。除了index这个hint以外,还有all_rows, first_rows,等等。