SQL | MySQL |
---|---|
SQL是一种标准语言,代表基于英语的结构化查询语言 | MySQL是一个数据库管理系统。 |
SQL是关系数据库的核心,用于访问和管理数据库 | MySQL是RDMS(关系数据库管理系统),例如SQL Server,Informix等。 |
数据库是数据的结构化集合。
一个 数据库管理系统 (DBMS)是一个软件应用程序与用户,应用程序和数据库本身交互,以捕获和分析数据。
DBMS允许用户与数据库进行交互。可以修改,检索和删除存储在数据库中的数据,并且可以是任何类型,例如字符串,数字,图像等。
DBMS有两种类型:
表是指以行和列的形式组织的数据集合。字段是指表中的列数。例如:
表:StudentInformation 字段:Stu ID,Stu名称,Stu标记
JOIN子句用于根据两个或多个表之间的相关列来组合它们。它用于合并两个表或从中检索数据。SQL中有4个连接,即:
Char和Varchar2均用于字符数据类型,而varchar2用于可变长度的字符串,而Char用于固定长度的字符串。例如,char(10)只能存储10个字符,而不能存储任何其他长度的字符串,而varchar2(10)可以存储任何长度,即此变量中的6,8,2。
示例-在学生表中,Stu_ID是主键。
约束用于指定表数据类型的限制。可以在创建或更改表语句时指定它。约束示例为:
DELETE | TRUNCATE |
---|---|
Delete命令用于删除表中的一行。 | 截断用于删除表中的所有行。 |
您可以在使用delete语句后回滚数据。 | 您无法回滚数据。 |
这是DML命令。 | 这是DDL命令。 |
它比截断语句慢。 | 它更快。 |
数据完整性定义了存储在数据库中的数据的准确性和一致性。它还定义了完整性约束,以在将数据输入到应用程序或数据库中时对数据执行业务规则。
SQL中的聚集索引和非聚集索引之间的区别是:
在SQL中,有一个名为GetDate()的内置函数,该函数有助于返回当前时间戳/日期。
有多种类型的联接用于检索表之间的数据。有四种类型的联接,即:
内部联接:MySQL中的内部联接是最常见的联接类型。它用于从满足联接条件的多个表中返回所有行。
左连接: MySQL中的左连接用于返回左表中的所有行,但仅返回右表中满足连接条件的匹配行。
右连接: MySQL中的右连接用于返回右表中的所有行,但仅返回满足连接条件的左表中的匹配行。
完全联接: 当任何表中都存在匹配项时,完全联接将返回所有记录。因此,它将返回左侧表中的所有行和右侧表中的所有行。
非规范化是指一种用于从数据库的较高形式到较低形式访问数据的技术。当将冗余引入表中时,它可以帮助数据库管理员提高整个基础架构的性能。它通过合并数据库查询将冗余数据添加到表中,这些查询将来自不同表的数据组合到一个表中。
实体:现实世界中可以在数据库中存储有关数据的人,地方或事物。表存储代表一种实体类型的数据。例如–银行数据库有一个客户表来存储客户信息。客户表将此信息存储为每个客户的一组属性(表中的列)。
关系:实体之间有关联的关系或链接。例如–客户名称与客户帐号和联系信息相关,它们可能在同一表中。各个表之间也可能存在关系(例如,客户到帐户)。
索引是一种性能调整方法,它允许从表中更快地检索记录。索引为每个值创建一个条目,因此检索数据会更快。
索引分为三种:
如果列是唯一索引的,则此索引不允许字段具有重复的值。如果定义了主键,则可以自动应用唯一索引。
该索引对表的物理顺序进行重新排序,并根据键值进行搜索。每个表只能有一个聚集索引。
非聚集索引不会更改表的物理顺序,并且会保持数据的逻辑顺序。每个表可以具有许多非聚集索引。
规范化是组织数据以避免重复和冗余的过程。一些优点是:
DROP命令删除表,并且不能从数据库回滚,而TRUNCATE命令删除表中的所有行。
有许多连续的标准化级别。这些称为范式。每个连续的范式都取决于前一个范式。前三个范式通常就足够了。
ACID代表原子性,一致性,隔离性,耐久性。它用于确保在数据库系统中可靠地处理数据事务。
原子性: 原子性是指完全完成或失败的事务,其中事务是指数据的单个逻辑操作。这意味着,如果任何事务的一部分失败,则整个事务都会失败,并且数据库状态将保持不变。
一致性: 一致性可确保数据必须符合所有验证规则。简而言之,您可以说您的事务永远都不会离开数据库而不完成其状态。
隔离:隔离 的主要目标是并发控制。
持久性: 持久性意味着如果事务已提交,则它将发生之间可能发生的任何事情,例如断电,崩溃或任何类型的错误。
SQL中的触发器是一种特殊的存储过程,已定义为在适当位置或在数据修改后自动执行。当对特定表执行插入,更新或任何其他查询时,它允许您执行一批代码。
SQL中提供了三种运算符,分别是:
NULL值与零或空格完全不同。NULL值表示不可用,未知,已分配或不适用的值,而零是数字,空格是字符。
交叉联接产生两个表的叉积或笛卡尔积,而自然联接基于两个表中具有相同名称和数据类型的所有列。
子查询是另一个查询中的查询,其中定义了查询以从数据库中检索数据或信息。在子查询中,外部查询称为主查询,而内部查询称为子查询。总是先执行子查询,然后将子查询的结果传递给主查询。它可以嵌套在SELECT,UPDATE或任何其他查询中。子查询也可以使用任何比较运算符,例如>,<或=。
子查询有两种类型,即”相关”和”不相关”。
相关子查询:这些查询从外部查询中引用的表中选择数据。它不被视为独立查询,因为它引用另一个表并引用一个表中的列。
不相关的子查询:此查询是一个独立的查询,在主查询中替换了子查询的输出。
要计算表中的记录数,可以使用以下命令:
SELECT * FROM table1
SELECT COUNT(*) FROM table1
SELECT rows FROM sysindexes WHERE id = OBJECT_ID(table1) AND indid < 2
要显示以” A”开头的员工的姓名,请输入以下命令:
SELECT * FROM Table_name WHERE EmpName like 'A%'
SELECT TOP 1 salary
FROM(
SELECT TOP 3 salary
FROM employee_table
ORDER BY salary DESC
) AS emp
ORDER BY salary ASC;
组函数在一组行上工作,并且每个组返回一个结果。一些常用的组函数是:AVG,COUNT,MAX,MIN,SUM,VARIANCE。
关系或链接是在相互关联的实体之间。关系定义为数据库中表之间的连接。存在各种关系,即:
可以通过以下方式插入NULL值:
BETWEEN运算符用于根据一行中的值范围显示行,而IN条件运算符用于检查特定值集中包含的值。
SELECT * FROM Students where ROLL_NO BETWEEN 10 AND 50;
IN的示例:
SELECT * FROM students where ROLL_NO IN (8,15,25);
SQL函数用于以下目的:
该语句允许条件更新或将数据插入表中。如果存在一行,则执行UPDATE;如果不存在,则执行INSERT。
递归存储过程是指一个存储过程,它会自行调用直到达到某个边界条件。此递归函数或过程可帮助程序员多次使用同一组代码。
SQL子句通过为查询提供条件来帮助限制结果集。子句有助于从整个记录集中过滤行。
例如– WHERE,HAVING子句。
HAVING子句只能与SELECT语句一起使用。通常在GROUP BY子句中使用它,并且每当不使用GROUP BY时,HAVING的行为就像WHERE子句。拥有子句仅与查询中的GROUP BY函数一起使用,而WHERE子句在它们成为查询中GROUP BY函数的一部分之前应用于每行。
以下是执行动态SQL的方式:
约束是用于强制执行数据实体和一致性的列的表示。约束有两个级别,即:
您可以使用INTERSECT从两个表中获取公用记录。例如:
Select studentID from student.INTERSECT Select StudentID from Exam
SQL中有三种大小写处理函数,分别是:
LOWER('字符串')
UPPER('字符串')
INITCAP('字符串')
一些可用的集合运算符是–联合,相交或减运算符。
ALIAS名称可以赋予任何表或列。可以在WHERE子句中引用此别名,以标识特定的表或列。
例如-
Select emp.empID, dept.Result from employee emp, department as dept where emp.empID=dept.empID
在上面的示例中,emp表示employee表的别名,而dept表示部门表的别名。
聚合函数用于评估数学计算并返回单个值。这些计算是从表中的列进行的。例如-max(),count()是针对数字计算的。
标量函数根据输入值返回单个值。例如– UCASE(),NOW()是针对字符串计算的。
您可以获取备用记录,即奇数和偶数行号。例如,要显示偶数,请使用以下命令:
从(选择行号,从学生中选择studentId)中选择studentId,其中mod(rowno,2)= 0
现在,要显示奇数:
Select studentId from (Select rowno, studentId from student) where mod(rowno,2)=1
Q50。命名查询中用于模式匹配的运算符?
LIKE运算符用于模式匹配,可以用作-。
例如-从学生姓名为’a%’的学生中选择*
(下划线)–恰好匹配一个字符。例如-从学生中选择*,其中学生姓名为” abc”
您可以使用DISTINCT关键字从表中选择唯一记录。
Select DISTINCT studentID from Student
使用此命令,它将从表Student中打印唯一的学生ID。
有很多方法可以从字符串中提取字符。例如:
从学生中选择SUBSTRING(StudentName,1,5)作为学生名
SQL是一种查询语言,允许您发出单个查询或执行单个插入/更新/删除操作,而PL / SQL是Oracle的”过程语言” SQL,它允许您编写完整的程序(循环,变量等)。完成多项操作,例如选择/插入/更新/删除。
视图是一个虚拟表,由表中包含的数据子集组成。由于不存在视图,因此占用的空间更少。视图可以合并一个或多个表的数据,这取决于关系。
视图是指基于表或另一个视图的逻辑快照。使用它的原因如下:
存储过程是一个由许多SQL语句组成的函数,用于访问数据库系统。几个SQL语句被合并到一个存储过程中,并在需要时随时随地执行它们,从而节省了时间并避免了重复编写代码。
可以将存储过程用作模块化编程,这意味着一次创建,存储并在需要时多次调用。这支持更快的执行。它还可以减少网络流量,并为数据提供更好的安全性。
存储过程的唯一缺点是它只能在数据库中执行,并占用数据库服务器中更多的内存。
用户定义的函数有三种类型,即:
标量返回单位,变体定义了return子句。其他两种类型的已定义函数返回表。
归类定义为一组规则,这些规则确定如何对数据进行排序和比较。字符数据使用定义正确字符序列的规则以及用于指定区分大小写,字符宽度等的选项进行排序。
以下是排序规则敏感性的不同类型:
这些变量只能在函数内部使用或存在。这些变量未被任何其他函数使用或引用。
这些变量是可以在整个程序中访问的变量。每当调用该函数时就无法创建全局变量。
自动递增关键字使用户可以创建一个唯一的数字,只要将新记录插入表中就可以生成该数字。每当使用PRIMARY KEY时,通常都需要此关键字。
在Oracle中可以使用AUTO INCREMENT关键字,在SQL SERVER中可以使用IDENTITY关键字。
数据仓库是指数据的中央存储库,其中数据是从多种信息源中组合而成的。这些数据经过整合,转换,可用于采矿和在线处理。仓库数据也有一个数据子集,称为数据集市。
Windows模式和混合模式– SQL和Windows。您可以转到以下步骤来更改SQL Server中的身份验证模式:
STUFF函数:此函数用于覆盖现有字符或将一个字符串插入另一个字符串。句法:
STUFF(字符串表达式,开始,长度,替换字符)
其中, string_expression:将替换字符的字符串
start:指起始位置 长度:指字符串中要替换的字符数。
replace_string:它们是注入字符串中的新字符。
REPLACE函数:此函数用于替换所有出现的现有字符。句法:
REPLACE(string_expression,search_string,replacement_string)
在这里,string_expression中的每个search_string将被替换为replace_string。