总结:SQL相关知识

    xiaoxiao2023-03-24  2

    今天做笔试题目的时候,直接被SQL最简单的题目给搞抽抽了,所以我现在的打算是综合的学习一下SQL语句,其实按照网上的东西,SQL语句应该不是很难

    SQL

    在数据库上执行的大部分工作是由sql语句完成,例如:

    SELECT lastname FROM Persons

    ====SQL对大小写不敏感==== SQL主要分为两个部分:数据操作语言(DML)和数据定义语言(DDL) 主要的DML语言有: - SELECT:从数据库中获取数据; - UPDATE:更新数据库表中的数据; - DELETE:从数据库中删除数据; - INSERT INTO:向数据库中插入数据

    SQL中重要的DDL语句:

    CREATE DATEBASE:创建新的数据库ALTER DATEBASE:修改数据库CREATE TABLE:创建新表ALTER TABLE:变更数据表DROP TABLE 删除表CREATE INDEX 创建索引DROP INDEX 删除索引

    SQL SELECT语句

    SELECT语法

    SELECT 列名称 FROM 表名称

    SELECT * FROM 表名称

    SQL SELECT DISTINCT语句

    主要的作用是返回这个表中有哪些数值,distinct主要是重复值 DISTINCT语法

    SELECT DISTINCT 列名称 FROM 表名称

    WHERE语句

    主要的作用是有条件冲表中选取数据 WHERE语法

    SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

    运算操作符主要有:

    运算符描述=等于!=不等于>大于<小于 = 大于等于<=小于等于BETWEEN在某个范围内LINK搜索某种模式

    注意在SQL中单引号在环绕本文值,如果是数值,则不需要引号。

    AND&OR运算符

    AND和OR运算符可以在WHERE子句中把两个或多个条件结合起来 如果第一个条件和第二个条件都成立,则AND运算符显示一条记录 如果第一个条件和第二个条件中只要有一个成立,则OR运算符显示一条记录

    SQL ORDER BY子句

    ORDER BY语句 ORDER BY语句用于根据指定的列对结果集进行排序 ORDER BY语句默认按照升序对记录进行排序 如果希望按照降序对记录进行排序,可以使用DESC关键字 举例:以逆字母顺序显示公司名称,并以数字顺序显示顺序号

    SELECT Company,OrderNumber FROM Orders BY Company DESC,OrderNumber ASC

    SQL INSERT INTO语句

    INSERT INTO语句用于向表格中插入新的行 语法:

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

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

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

    SQL UPDATE语句

    update语句用于修改表中的数据 语法:

    UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

    SQL DELETE语句

    DELETE语句用于删除表中的行 语法

    DELETE FROM 表名称 WHERE 列名称=值

    删除所有行的语法是

    DELETE FROM table_name

    或者

    DELETE * FROM table_name

    SQL TOP语句

    TOP 子句* TOP子句用于规定要返回的纪录的数目。 对于拥有数千条纪录的大型表来说,TOP子句是非常有用的。 语法:

    SELECT TOP number|percent column_name(s) FROM table_name

    举例: 从一个数据中选取规定数目的条目:

    SELECT TOP 2 * FROM Persons

    选取一定比例的条目:

    SELECT TOP 50 PERCENT * FROM Persons

    SQL LIKE 操作符

    LIKE操作符用于在WHERE子句中搜索列中的制定模式。 语法:

    SELECT column_name(s) FROM table_name WHERE colunm_name LIKE pattern

    其实 LIKE操作符的操作精髓在制定模式,我们可以通过通配符,结合LIKE的功能,查找例如所有姓李的客户(”李%”)

    SQL通配符

    通配符描述%替代一个或者多个字符_仅替代一个字符[charlist]字符列中任一一个字符[^charlist]或[!charlist]不在字符列中的任意字符

    SQL IN 操作符

    IN 操作符允许我们在WHERE子句中规定多个值 SQL IN语法

    SELECT colunm_name(s) FROM table_name WHERE ccolunm_name IN (value1,value2,……)

    SQL BETWEEN 操作符

    BETWEEN操作符在WHERE子句中使用,作用是选取介于两个值之间的数据范围 语法

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

    注意:一般情况下这个value是数字之类的能够有统一标准辨别的区间,虽然可以对字符之间的区间进行区别,但是不用的数据库之间还是有区别的。

    SQL Alisa(别名)

    通过使用Alisa,可以为列名称和表名称制定别名(Alisa) 相关语法 表的SQL Alisa语法

    SELECT column_name(s) FROM table_name AS alisa_name

    列的SQL Alisa语法

    SELECT column_name AS alisa_name From table_name

    其实总结的来看 这个就是==AS==的功能

    SQL JOIN

    SQL join用于根据两个或者多个表中的列之间的关系,从这些表中查询数据 join有很多种类型,首先举一个例子:

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName

    这里面就用到INNER JOIN(内连接),还有其他的,随后介绍

    INNER JOIN

    SQL INNER JOIN 关键字 在表中至少一个匹配时,INNER JOIN 关键字返回。 ==INNER JOIN 和 JOIN 是相同的== INNER JOIN 关键字语法

    SELECT column_name(S) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name

    LEFT JOIN

    SQL LEFT JOIN 关键字会从左表(table_name1)那里返回所有行,即使右表(table_name2)中没有匹配的行。 LEFT JOIN关键字语法

    SELECT colunm_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.colunm_name

    其实这个理解也不是很难,就是左表中的所有数据 即便是没有跟右表匹配,也应该连接一下。

    RIGHT JOIN

    SQL RIGHT JOIN其实和LEFT JOIN想法,应用参考LEFT JOIN 相关的知识。

    FULL JOIN

    SQL FULL JOIN 其实就是参考了LEFT 和RIGHT 只要是左右表中的数值,都会出现在最终表中。

    SQL UNION 和 UNION ALL操作符

    SQL UNION操作符用于合并两个或多个select语句的结果集 ==注意==UNION 内部的SELECT语句必须拥有相同数量的列,列也必须拥有相似的数据类型。 同时每条SELECT语句中的列的顺序必须相同。 SQL UNION语法

    SELECT column_name(s)FROM table_name1 UNION SELECT colunm_name(s)FROM table_name2

    ==注释==默认情况,UNION操作符选择不同的数值,需要重复数值,则用UNION ALL SQL UNION ALL语法

    SELECT column_name(s)FROM table_name1 UNION ALL SELECT c olunm_name(s)FROM table_name2

    SQL SELECT INTO语句

    SQL SELECT INTO语句可用于创建表的备份文件 SQL SELECT INTO语法:

    SELECT *(colunme_name) INTO new_table_name[IN externaldatabase] FROM old_table_name

    ==注== select后面的语句是希望整个表备份还是某个列备份。 这个语句后面可以带有WHERE子句、连接语句等 ==其实我个人的理解就是,其实这个INTO语句后面可以按照SQL的复杂度进行添加子句==

    SQL CREATE DATABSAE语句

    CREATE DATABASE语句用于创建数据库 用法:

    CREATE DATABASE database_name

    SQL CREATE TABLE语句

    CREATE TABLE语句用于创建数据库中的表 相关用法

    CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, …… )

    SQL 约束

    SQL约束用于限制加入表的数据类型,主要的约束有:

    NOT NULL 约束强制不接受空值UNIQUE 约束唯一标识数据库表中的每条记录PRIMARY KEY 约束唯一标识数据库表中的每条记录(主键必须包含唯一值,不能包含NULL值,每一个表都应该有一个主键,也只能有一个主键)FOREIGN KEY 一个表中的FOREIGN KEY指向另一个表中的PRIMARY KEYCHECK CHECK约束用于限制列中的值的范围,如果对单个列定义CHECK约束,那么只允许特定值,如果对一个表定义CHECK约束,那么约束会在特定列中对值进行限制DEFAULT DEFAULT约束用于向列中插入默认值,如果没有规定其他值,那么将会添加到所有的新记录。

    SQL CREATE INDEX语句

    CREATE INDEX语句用于在表中创建索引,在不读取整个表的情况下,索引使数据库应用程序可以更快的查找数据。 SQL CREATE INDEX语法 在表上创建一个简单的索引,允许使用重复值:

    CREATE INDEX index_name ON table_name(colunm_name)

    SQL相关的删除操作

    通过使用DROP语句,可以轻松的删除索引,表和数据库。

    DROP INDEX/TABLE/DATABASE 相对应的名称

    ==SQL TRUNCATE TABLE== 如果我们仅仅需要删除表内的数据,但不删除表本身,使用TRUNCATE TABLE命令

    TRUNCATE TABLE 表名称

    SQL ALTER TABLE 语句

    ALTER 用于在已有表中添加,修改或删除列 相关的语法

    ALTER TABLE table_name ADD coluMN_name datatype DROP COLUMN column_name ALTER COLUNM column_name datatype

    SQL AUTO INCREMENT字段

    AUTO INCREMENT字段: 我们通常希望在每次插入新记录时,自动的创建主键字段的值 ==用法== 其实我们在使用的时候 类似的可以在创建的时候,在主键设计相关的值,也可以后期通过alter等相关的操作进行修改。

    SQL VIEW 视图

    视图是可视化的表。 SQL CREATE VIEW语法

    CREATE VIEW view_name AS SELECT column_name(s) FROM table_nmae WHERE condition

    ==使用视图可以更方便我们以后的查找== SQL 更新视图

    SQL CREATE OR REPLACE VIEW Syntax CREATE OR REPLACE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition

    其实就是我们日常操作数据库或者表的时候的语法,注意前面写成VIEW即可 SQL撤销视图

    SQL DROP VIEW Syntas DROP VIEW view_name

    SQL 函数

    SQL 内建函数的使用方法:

    SELECT function(列)FROM

    相关函数的用法 AVG() 计算平均值,其输出是一个数值 COUNT() 返回的是制定条件的的行数 FIRST()/LAST() 返回表格的第一(最后)个记录的值 MAX()/MIN() 返回一列中的最大(最小)值,NULL不计算其中 SUM() SUM函数返回数值列的总和 GROUP BY GROUP BY函数用于合计函数,根据一个或者多个结果集进行分组。 GROUP BY语法

    SELECT colume_name,func(colume_name) FROM table_name WHERE colume_name operator value GROUP BY colume_name

    HAVING 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用 HAVING的语法如下:

    SELECT column_name, 合计函数(column_name) FROM table_name WHERE column_name 操作方法 GROUP BY column_name HAVING 合计函数(column_name) 操作值

    UCASE UCASE 函数把字段的值转换为大写。 LCASE LCASE函数把字段值转换为小写 LEN LEN 函数返回文本字段中值的长度。 ROUND ROUND 函数用于把数值字段舍入为指定的小数位数。 SQL ROUND()语法如下:

    SELECT ROUND(column_name,decimals) FROM table_name

    decimals字段就是控制小数位数。 NOW 返回当前的时间和日期 FORMAT FORMAT 函数用于对字段的显示进行格式化。 SQL FORMAT()语法如下:

    SELECT ROUND(column_name,format) FROM table_name

    其他知识

    相关范式:

    范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。

    第一范式(1NF) 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。 简而言之,==第一范式就是无重复的列==。 第二范式(2NF) 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。这个唯一属性列被称为主关键字或主键、主码。 简而言之,==第二范式就是非主属性非部分依赖于主关键字==。 第三范式(3NF) 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。 例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在图3-2的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。 简而言之,==第三范式就是属性不依赖于其它非主属性==。

    转载请注明原文地址: https://ju.6miu.com/read-1201402.html
    最新回复(0)