美文网首页
SQL知识复习(需要注意的点

SQL知识复习(需要注意的点

作者: upup汉娜 | 来源:发表于2021-04-22 18:02 被阅读0次
1、SELECT DISTINCT 语句用于返回唯一不同的值。
2、ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字。
3、SQL INSERT INTO 语法有两种编写形式。

第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

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

第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
4、SQL SELECT TOP, LIMIT, ROWNUM 子句

SQL Server / MS Access 语法:

SELECT TOP number|percent column_name(s)
FROM table_name;

MySQL 语法:

SELECT column_name(s)
FROM table_name
LIMIT number;

Oracle 语法:

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
5、SQL 通配符

_ 通配符:替代一个字符
REGEXP/NOT REGEXP/RLIKE/NOT RLIKE '^ [charlist]':字符列中的任何单一字符

SELECT * FROM Websites
WHERE name REGEXP '^[A-H]';

REGEXP/NOT REGEXP/RLIKE/NOT RLIKE '^ [^charlist]':不在字符列中的任何单一字符

SELECT * FROM Websites
WHERE name REGEXP '^[^A-H]';
6、CONCAT()把多列结合在一起

在下面的 SQL 语句中,把三个列(url、alexa 和 country)结合在一起,并创建一个名为 "site_info" 的别名

SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info
FROM Websites;
7、JOIN连接
7种join
  1. INNER JOIN ON(INNER JOIN 与 JOIN 是相同的)
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
  1. LEFT JOIN ON(在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN)
    从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;

3.RIGHT JOIN ON(在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN)
从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;

SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;

4.FULL OUTER JOIN ON(mysql不支持,SQL Server支持 )
只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行。
结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
8、UNION

合并两个或多个 SELECT 语句的结果,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
9、SELECT INTO(MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT)

从一个表复制数据,然后把数据插入到另一个新表中。

SELECT *
INTO newtable [IN externaldb]
FROM table1;

或者只复制希望的列插入到新表中:

SELECT column_name(s)
INTO newtable [IN externaldb]
FROM table1;

或者拷贝表结构及数据:

CREATE TABLE 新表
AS
SELECT * FROM 旧表 
10、INSERT INTO SELECT

从一个表复制数据,然后把数据插入到一个已存在的表中。

INSERT INTO table2
SELECT * FROM table1;

或者只复制希望的列插入到另一个已存在的表中:

INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
11、SQL约束

1.NOT NULL

ALTER TABLE Persons MODIFY Age int NOT NULL;
ALTER TABLE Persons MODIFY Age int NULL;

2.UNIQUE

ALTER TABLE Persons ADD UNIQUE (P_Id);
ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName);
ALTER TABLE Persons DROP INDEX uc_PersonID;
ALTER TABLE Persons DROP CONSTRAINT uc_PersonID;

3.PRIMARY KEY

ALTER TABLE Persons ADD PRIMARY KEY (P_Id);
ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName);
ALTER TABLE Persons DROP PRIMARY KEY;
ALTER TABLE Persons DROP CONSTRAINT pk_PersonID;

4.FOREIGN KEY,指向另一个表中的 UNIQUE KEY

ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id);
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id);
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders;
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders;

5.CHECK

ALTER TABLE Persons ADD CHECK (P_Id>0);
ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes');
ALTER TABLE Persons DROP CONSTRAINT chk_Person;
ALTER TABLE Persons DROP CHECK chk_Person;

6.DEFAULT

ALTER TABLE Persons ALTER City SET DEFAULT 'SANDNES';
ALTER TABLE Persons ADD CONSTRAINT ab_c DEFAULT 'SANDNES' for City;
ALTER TABLE Persons MODIFY City DEFAULT 'SANDNES';
ALTER TABLE Persons ALTER City DROP DEFAULT;
ALTER TABLE Persons ALTER COLUMN City DROP DEFAULT;
12、DROP删除表结构,TRUNCATE删除表内容
DROP TABLE table_name;
TRUNCATE TABLE table_name;
13.NULL值赋为0
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0)) FROM Products;
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0)) FROM Products;
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0)) FROM Products;
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0)) FROM Products;

相关文章

  • SQL知识复习(需要注意的点

    1、SELECT DISTINCT 语句用于返回唯一不同的值。 2、ORDER BY 关键字用于对结果集按照一个列...

  • SQL知识复习

    三大重要操作 scanning sorting hashing UNION,EXCEPT, INTERSECT相当...

  • 我现在最需要的就是静下心

    我需要集中注意力去复习,需要静下心,这几天虽然都在复习,但是效率极其的低,能用半个小时看完的知识,却用了一...

  • 如何上好复习课

    复习课 (一)复习课的任务 1、复习知识 既要注意对基本概念、基本要点、基本规律、基本原理等知识的复习,也要注意对...

  • 复习课的操作方法

    复习课 (一)复习课的任务 1、复习知识 既要注意对基本概念、基本要点、基本规律、基本原理等知识的复习,也要注意对...

  • Mysql总结

    最近又重新复习了一遍SQL的基础和进阶知识,SQL可以很基础也可以很复杂,写一篇总结来梳理自己的知识脉络 SQL是...

  • PL/SQL基础知识详解

    PL/SQL 这是对Oracle-SQL知识点详细介绍的文章系列,其他文章如下: Oracle-SQL系列知识点(...

  • 广播

    需要复习知识点:系统广播、LocalBroadcastManager 、Binder机制文章来源:https://...

  • mysql数据库连接模块(注意sql语句易疏忽的字符串书写)

    有一点需要特别注意,在使用这个模块执行sql语句的时候,sql语句的编写要特别注意字符串.我在数据库中保存的use...

  • 比较实用的几点高考建议

    一,临近高考如何复习 回顾梳理基本的知识点, 掌握课本的基本原理和基本规律, 看似都懂其实又有很多知识点需要复习,...

网友评论

      本文标题:SQL知识复习(需要注意的点

      本文链接:https://www.haomeiwen.com/subject/oadfrltx.html