SQL学习

转载于知乎:

常见的SQL面试题:经典50https://zhuanlan.zhihu.com/p/38354000

菜鸟教程学习记录:

SQL(Structured Query Language)结构化查询语言

SQL SELECT:用于从数据库中选取数据。

SELECT column_name,column_name FROM table_name;

SQL SELECT DISTINCT: 用于返回唯一不同的值。

SELECT DISTINCT column_name,column_name FROM table_name;

SQL WHERE: 用于提取那些满足指定条件的记录。

SELECT column_name,column_name FROM table_name WHERE column_name operator value;

可以在WHERE子句中使用的运算符:=、<>、>、<、>=、<=、BETWEEN、LIKE、IN(指定针对某个列的多种可能值)

SQL AND & OR:用于基于一个以上的条件对记录进行过滤。

SQL ORDER BY:关键字用于对结果集按照一个列或者多个列进行排序。

SELECT column_name,column_name FROM table_name ORDER BY column_name,column_name ASC|DESC;

SQL INSERT INTO:用于向表中插入新记录。

INSERT INTO table_name VALUES (value1,value2,value3,...);

或者INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);

SQL UPDATE:用于更新表中已存在的记录。

UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;

SQL DELETE:用于删除表中的记录。

DELETE FROM table_name WHERE some_column=some_value;

SQL SELECT TOP, LIMIT, ROWNUM:用于规定要返回的记录的数目

SQL Sever/ MS Access: SELECT TOP number|percent column_name(s) FROM table_name;

MySQL: SELECT column_name(s) FROM table_name LIMIT number;

Oracle: SELECT * FROM Persons WHERE ROWNUM <=5;

SQL LIKE:用于在 WHERE 子句中搜索列中的指定模式。

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;

通配符:%:替代0个或多个字符;_:替代一个字符;[charlist]:字符列中的人格单一字符;[!charlist] or [^charlist]:不在字符列中的任何单一字符。

SQL IN:允许在 WHERE 子句中规定多个值。

SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);

SQL BETWEEN:选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;

SQL 别名:AS

SQL JOIN:用于把来自两个或多个表的行结合起来。

SQL INNER JOIN:在表中存在至少一个匹配时返回行。

SQL LEFT JOIN:从左表(table1)返回所有的行,即使右表(table2)中没有匹配。

SQL RIGHT JOIN:从右表(table2)返回所有的行,即使左表(table1)中没有匹配。

FULL OUTER JOIN: 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.

下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。

SQL UNION:用于合并两个或多个 SELECT 语句的结果集。

SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2; UNION 操作符选取不同的值。

SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2 UNION ALL 允许重复的值。

SQL SELECT INTO:从一个表复制数据,然后把数据插入到另一个新表中。(MySQL不支持)

SQL INSERT INTO SELECT:从一个表复制数据,然后插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

INSERT INTO table2 SELECT * FROM table1;

SQL CREATE DATABASE:用于创建数据库。CREATE DATABASE dbname;

SQL CREATE TABLE:语句用于创建数据库中的表。

CREATE TABLE table_name (column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size),
....);

SQL 约束(Constraints):用于规定表中的数据规则。

NOT NULL:不能存储空值;UNIQUE:保证某列的每行必须有唯一值;

PRIMARY KEY:NOT NULL 和UNIQUE的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。

 CHECK: 保证列中的值符合指定的条件。 DEFAULT:规定没有给列赋值时的默认值。

SQL CREATE INDEX:用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

CREATE INDEX index_name ON table_name (column_name) 允许使用重复的值。

CREATE UNIQUE INDEX index_name ON table_name (column_name) 不允许使用重复的值。

SQL 撤销索引、撤销表以及撤销数据库:使用 DROP 语句,可以轻松地删除索引、表和数据库。

MySQL

DROP INDEX :ALTER TABLE table_name DROP INDEX index_name

DROP TABLE:DROP TABLE table_name

DROP DATABASE:DROP DATABASE database_name

TRUNCATE TABLE:TRUNCATE TABLEtable_name 删除表内的数据,但并不删除表本身

SQL ALTER TABLE:用于在已有的表中添加、删除或修改列。

ALTER TABLE table_name ADD/MODIFY column_name datatype

ALTER TABLE table_name DROP COLUMN column_name

SQL AUTO INCREMENT: 在新记录插入表中时生成一个唯一的数字。

SQL Date:

NOW():返回当前的日期和时间;CURDATE():返回当前的日期;CURTIME():返回当前的时间;
DATE():提取日期或日期/时间表达式的日期部分;EXTRACT():返回日期/时间的单独部分;                                          DATE_ADD():向日期添加指定的时间间隔;DATE_SUB():从日期减去指定的时间间隔;                                                     DATEDIFF():返回两个日期之间的天数;DATA_FORMAT():用不同格式显示日期/时间。

SQL NULL:判断只能通过IS NULL 和IS NOT NULL来判断。

函数

SQL Aggregate 函数:AVG(), COUNT(), FIRST(), LAST(), MAX(), MIN(), SUM()

SQL Scalar 函数​​​​​​​:基于输入值,返回一个单一的值。

UCASE(), LCASE(), MID(), SubString(字段,1,end), LEN(), ROUND():指定小数点的四舍五入, NOW(), FORMAT()

SELECT ROUND(column_name,decimals) FROM table_name;

SQL GROUP BY :用于结合聚合函数,根据一个或多个列对结果集进行分组。

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;

SQL HAVING :WHERE 关键字无法与聚合函数一起使用。

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value;

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值