SQL语法基础--(二)创建表、增、删、改、查

SQL 基础操作

  • 创建表 -- CREATE TABLE
  • 修改表 -- ALTER/DELETE TABLE
  • 插入(增) -- INSERT INTO
  • 删除(删)--DELETE FROM
  • 更新(改)-- UPTATE-SET-WHERE
  • 查询(重点)--select
    • 查询-通用语法
    • 查询-LIMIT的使用 (重点使用场景:top *、分页功能)
    • SELECT DISTINCT 的使用
      • 语法

创建表 – CREATE TABLE

语法

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`));

修改表 – ALTER/DELETE TABLE

3个主要功能:增加列、删除列、删除表
ALTER TABLE === 修改;
DROP TABLE===表的删除;【区别:元组删除使用关键字delete from】

# 增加列
ALTER TABLE mytable add col5 VARCHAR(25);
# 删除列
ALTER TABLE mytable DROP COLUMN col5;
# 删除表
DROP TABLE mytable;

插入(增) – INSERT INTO

往表格中插入数据,掌握分别插入 值 (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;

删除(删)–DELETE FROM

  1. 功能1:从表中删除某个元组; DELETE FROM
  2. 功能2:删除所有行; TRUNCATE TABLE
# 功能1:从表中删除某个元组;
DELETE FROM mytable where id = 1;
# 功能2:删除所有行;
TRUNCATE TABLE mytable;

注意:

  1. 区别于删除表的关键字:删除表使用DROP TABLE关键字;
  2. 从表中删除某行元组,使用 DELETE FROM 关键字

更新(改)-- UPTATE-SET-WHERE

功能:更新表中的某数据:

UPDATE mytable SET col1 = 10 WHERE id = 2;

注意:使用update 和 delete 时一定要用where子句,不然会破环整张表的数据

查询(重点)–select

掌握功能:

  1. 通用语法;
  2. LIMIT语句;
  3. SELECT DISTINCT语句;

查询-通用语法

		SELECT [DISTINCT] column_name,column_name
		FROM table_name
		[WHERE Clause]
		[LIMIT N] [OFFSET M]
  1. 查询语句中可以使用多个表,用逗号(,)隔开,并使用WHERE语句来设定查询条件。
  2. SELECT 命令可以读取一条或者多条记录。
  3. 使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  4. 使用 LIMIT 属性来设定返回的记录数
  5. OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0

查询-LIMIT的使用 (重点使用场景:top *、分页功能)

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

SELECT DISTINCT 的使用

在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。

DISTINCT 关键词用于返回唯一不同的值

语法

SELECT DISTINCT column_name,column_name **FROM** table_name;

你可能感兴趣的:(#,SQL语法,sql)