语法
CREATE TABLE mytable (
# int 类型,不为空,自增
id INT NOT NULL AUTO_INCREMENT,
# int 类型,不可为空,默认值为 1,不为空
col1 INT NOT NULL DEFAULT 1,
# 变长字符串类型,最长为 45 个字符,可以为空
col2 VARCHAR(45) NULL,
# 日期类型,可为空
col3 DATE NULL,
# 设置主键为 id
PRIMARY KEY (`id`));
3个主要功能:增加列、删除列、删除表
ALTER TABLE === 修改;
DROP TABLE===表的删除;【区别:元组删除使用关键字delete from】
# 增加列
ALTER TABLE mytable add col5 VARCHAR(25);
# 删除列
ALTER TABLE mytable DROP COLUMN col5;
# 删除表
DROP TABLE mytable;
往表格中插入数据,掌握分别插入 值 (VALUES)、某个表中检索的部分数据(SELECT …)、一个表的内容(CREATE … AS SELECT…) 三种不同插入方式。
语法:
# 1、普通插入**值**:往mytable 表中的列:col1,col2列插入值1,2;
INSERT INTO mytable(col1,col2) VALUES (1,2);
# 2、插入 : **从某个表中检索出来的值**
**INSERT INTO mytable(col1,col2) SELECT col1,col2 From mytable2;
#3、插入:将**一个表的内容**,插入到一个新表
CREATE TABLE newtable AS SELECT * FROM mytable;
# 功能1:从表中删除某个元组;
DELETE FROM mytable where id = 1;
# 功能2:删除所有行;
TRUNCATE TABLE mytable;
注意:
功能:更新表中的某数据:
UPDATE mytable SET col1 = 10 WHERE id = 2;
注意:使用update 和 delete 时一定要用where子句,不然会破环整张表的数据
掌握功能:
SELECT [DISTINCT] column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N] [OFFSET M]
LIMIT:设置返回的行数。后边可以有1个参数,也可以有两个参数:
1、limit 后有一个参数时,该参数表示要返回的行数
SELECT * FROM mytable LIMIT 6; # 返回(前)6行;
2、limit 后有两个参数时,第一个参数表示要跳过的数量,后一位表示要取的数量
SELECT * FROM mytable LIMIT 3,3;
# 跳过第3条数据,从第4条数据开始,返回6行结果,即返回第4,5,6行的结果
3、 limit 和 offset 共用时:limit后只能有一个参数,表示要取得数量;offset 后表示要跳过得数量;
SELECT * FROM mytable LIMIT 2 offset 3 ;
# 表示跳过3条,取2条,即第4,5条
练习:查询第二高的薪水
# 说明:表Salary:
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
# 查询第二高的薪水
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/second-highest-salary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
# 思路:先对Salary 进行降序排序,然后再使用limit语句,查询第二高的薪水并返回
# 需要特别注意:
# 有可能表中只存在一行数据,使用limit查询第二高会返回空,所以用临时表,先查找排序limit结果,再select 最后结果:
select(
select Distinct Salary from Salary #去重
order by Salary DESC
limit1,1 #从第2行开始读,返回1条结果
) as SecondHighestSalary
使用如下语句,在返回空时会出错:
select distinct Salary as SecondHighestSalary from Salary
order by Salary DESC
limit1,1
在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。
DISTINCT 关键词用于返回唯一不同的值。
SELECT DISTINCT column_name,column_name **FROM** table_name;