测试SQL基础知识

SQL DML 和 DDL

可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。

查询和更新指令构成了 SQL 的 DML 部分:

  • SELECT -...FROM从数据库表中获取数据
  • UPDATE ....SET...WHERE更新数据库表中的数据(UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值)
  • DELETE  FROM...WHERE从数据库表中删除数据
  • INSERT INTO ..... values向数据库表中插入数据  
  • NSERT INTO 语句用于向表格中插入新的行。

    语法

    INSERT INTO 表名称 VALUES (值1, 值2,....)

    我们也可以指定所要插入数据的列:

    INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

    NSERT INTO 语句用于向表格中插入新的行。

    语法

    INSERT INTO 表名称 VALUES (值1, 值2,....)

    我们也可以指定所要插入数据的列:

    INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

    NSERT INTO 语句用于向表格中插入新的行。

    语法

    INSERT INTO 表名称 VALUES (值1, 值2,....)

    我们也可以指定所要插入数据的列:

    INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)iNSERT INTO 语句用于向表格中插入新的行。

语法

INSERT INTO 表名称 VALUES (值1, 值2,....)

我们也可以指定所要插入数据的列:

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

  • DISTINCT去重
  • order by 排序 desc/asc
  • TOP 2/TOP 50PERCENT等价于where rownum<=2
  • TOP 子句用于规定要返回的记录的数目

as(alias) 列或表名称指定别名;

下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。

  • inner JOIN...ON 如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行  
  • UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
  • CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CHECK (Id_P>0)) 
  • CHECK 约束用于限制列中的值的范围
  • 如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes') 
  • 如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:ALTER TABLE PersonsADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')  
  • DEFAULT 约束用于向列中插入默认值:ALTER TABLE PersonsALTER COLUMN City SET DEFAULT 'SANDNES';撤消默认值:ALTER TABLE PersonsALTER COLUMN City DROP DEFAULT
  • 在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。CREATE UNIQUE INDEX index_nameON table_name (column_name) 

SQL UNION 语法UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。 

SELECT INTO 语句可用于创建表的备份复件

SELECT *INTO new_table_name [IN externaldatabase] FROM old_tablename

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组 SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name 合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。   SELECT Customer,SUM(OrderPrice) FROM OrdersWHERE Customer='Bush' OR Customer='Adams'GROUP BY CustomerHAVING SUM(OrderPrice)>1500  UCASE 函数把字段的值转换为大写; LCASE 函数把字段的值转换为小写。  MID 函数用于从文本字段中提取字符 :SELECT MID(column_name,start[,length]) FROM table_name LEN 函数返回文本字段中值的长度  ROUND 函数用于把数值字段舍入为指定的小数位数:SELECT ROUND(column_name,decimals) FROM table_name  NOW 函数返回当前的日期和时间:SELECT NOW() FROM table_name FORMAT 函数用于对字段的显示进行格式化:SELECT FORMAT(column_name,format) FROM table_name 

 
多表查询

SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

SQL 中最重要的 DDL 语句:

  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引    
原文地址:https://www.cnblogs.com/code4app/p/6272558.html