Bootstrap

SQL基础教程,从入门到精通【常用公式大全】


📚前言

随着数据科学与大数据的不断发展,SQL这门技术也越来越重要,很多人都开始了学习,本文就介绍了SQL基础内容。


📚SQL是什么?

SQL (Structured Query Language)是一种用于关系数据库查询或从数据库中获取数据的语言,是其原始名称结构化查询语言的缩写。

📚什么是数据,什么是数据库?

data 数据是以文字、数字甚至图片的形式收集的事实。 数据是所有企业中最重要的资产之一。 它几乎在任何地方都被使用和收集。
database 数据库是数据的存储库。 它是一个存储数据的程序。 数据库还提供添加、修改和查询该数据的功能。 有不同种类的数据库有不同的要求。 数据可以以各种形式存储。 当数据以表格形式存储时,数据会像电子表格一样组织成表格,即列和行。 这是一个关系数据库。 一组用于数据库中数据的软件工具称为数据库管理系统或简称 DBMS。
在这里插入图片描述

📚语句结构

1、数据查询语言(DQL: Data Query Language):

其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用。

① SELECT –查找数据

SELECT语句用于从数据库中提取数据。

SELECT column1, column2, ... FROM table_name; 

实例:

SELECT city FROM placeofinterest; 

② WHERE – 条件过滤

where子句用于仅提取满足指定条件的记录

SELECT column1, column2, ...FROM table_name WHERE condition;

实例:

SELECT * FROM placeofinterest WHERE city == 'Rome'; 

③ COUNT – 计数

COUNT是一个函数,它以列的名称为参数,并在列不为NULL时计算行数。

SELECT COUNT * FROM table_name ; 

实例:

SELECT COUNT(country) FROM placeofinterest WHERE country='Canada'; 

④ AVG – 均值

AVG函数返回数值列的平均值。

SELECT AVG(column_name) FROM table_name WHERE condition; 

实例:

SELECT AVG(salary) FROM employees; 

⑤ SUM – 求和

SUM函数返回一个数字列的总和。

SELECT SUM(column_name) FROM table_name WHERE condition; 

实例:

SELECT SUM(salary) FROM employees; 

⑥ MIN – 求最小值

MIN函数返回被选中列的最小值。

SELECT MIN(column_name) FROM table_name WHERE condition; 

实例:

SELECT MIN(salary) FROM employees; 

⑦ MAX – 求最大值

max函数返回被选中列的最大值。

SELECT MAX(column_name) FROM table_name WHERE condition; 

实例:

SELECT MAX(salary) FROM employees; 

⑧ ROUND – 四舍五入

ROUND函数将数字四舍五入到指定的小数位数。

SELECT ROUND(2number, decimals, operation) AS RoundValue; 

实例:

SELECT ROUND(salary) FROM employees; 

⑨ LENGTH – 字符串长度

LENGTH函数返回字符串的长度(以字节为单位)。

SELECT LENGTH(column_name) FROM table; 

实例:

SELECT LENGTH(f_name) FROM employees; 

⑩ UCASE – 列名大写

UCASE函数,该函数以大写形式显示每个表中的列名。

SELECT UCASE(column_name) FROM table; 

实例:

SELECT UCASE(f_name) FROM employees; 

⑪ DISTINCT – 去重

distinct函数用于指定语句是在指定列中返回唯一值的查询

SELECT DISTINCT column_name FROM table_name;

实例:

SELECT DISTINCT country FROM placeofinterest WHERE type='historical'; 

⑫ LIMIT – 限制

LIMIT是一个子句,用于指定结果集必须具有的最大行数。

SELECT * FROM table_name LIMIT number; 

实例:

SELECT * FROM placeofinterest WHERE airport="pearson" LIMIT 5; 

⑬ LIKE – 运算符

在WHERE子句中使用LIKE运算符来搜索列中的指定模式。
有两个通配符经常与LIKE运算符一起使用,它们是百分号(%)和下划线符号(_)。

SELECT column1, column2, ... FROM table_name WHERE columnN LIKE pattern; 

实例:

SELECT f_name , l_name FROM employees WHERE address LIKE '%Elgin,IL%'; 

⑭ BETWEEN – 运算符

BETWEEN运算符选择给定范围内的值。这些值可以是数字、文本或日期。BETWEEN运算符包含在内:包含开始值和结束值。

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

实例:

SELECT * FROM employees WHERE salary BETWEEN 40000 AND 80000; 

⑮ ORDER BY – 排序

ORDER BY关键字用于按升序或降序对结果集进行排序。默认值为升序。

SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASCDESC; 

实例:

SELECT f_name, l_name, dep_id FROM employees ORDER BY dep_id DESC, l_name; 

⑯ GROUP BY – 分组

GROUP BY子句与SELECT语句一起用于将相同的数据排列到组中。

SELECT column_name(s) FROM 
table_name WHERE condition GROUP BY column_name(s) ORDER BY 
column_name(s); 

实例:

SELECT dep_id, COUNT(*) FROM employees GROUP BY dep_id; 

2、数据定义语言(DDL: Data Definition Language):

常见的 DDL 语句类型包括 CREATE、ALTER、TRUNCATE 和 DROP。CREATE :用于创建表和定义其列ALTER:用于更改表,包括添加和删除列以及修改其数据类型; TRUNCATE:用于删除表中的数据,但不用于删除表本身;DROP:用于删除表;为表加入索引等。

① CREATE TABLE – 创建表

CREATE TABLE语句用于创建表。表中的每一列都指定了其名称、数据类型和可选关键字,该关键字可以是PRIMARY KEY、NOT NULL等。

CREATE TABLE table_name (col1 datatype optional keyword, col2 datatype optional keyword,col3 datatype optional keyword,..., coln datatype optional keyword) 

实例:

CREATE TABLE employee ( employee_id char(2) PRIMARY KEY, first_name varchar(30) NOT NULL, mobile int); 

② ALTER TABLE – 修改表

1. ALTER TABLE – ADD COLUMN

ALTER TABLE语句用于将列添加到表中。

ALTER TABLE table_name ADD COLUMN column_name_l datatype.... ADD COLUMN column_name_n datatype; 

实例:

ALTER TABLE employee ADD COLUMN income bigint; 
2. ALTER TABLE – ALTER COLUMN

ALTER TABLE ALTER COLUMN语句用于修改列的数据类型。

ALTER TABLE table_name ALTER COLUMN column name_1 SET DATA TYPE datatype; 

实例:

ALTER TABLE employee ALTER COLUMN mobile SET DATA TYPE CHAR(20); 
3. ALTER TABLE – DROP COLUMN

ALTER TABLE DROP COLUMN语句用于从表中删除列。

ALTER TABLE table_name DROP COLUMN column_name_l ; 

实例:

ALTER TABLE employee DROP COLUMN mobile ; 
4. ALTER TABLE – RENAME COLUMN

ALTER TABLE RENAME COLUMN语句用于重命名表中的列。

ALTER TABLE table_name RENAME COLUMN current_column_name TO 
new_column_name; 

实例:

ALTER TABLE employee RENAME COLUMN first_name TO name ; 

③ TRUNCATE TABLE – 清除表数据

TRUNCATE TABLE语句用于删除表中的所有行,并不删除表本身。IMMEDIATE指定立即处理该语句,并且该语句不能撤消。

TRUNCATE TABLE table name IMMEDIATE; 

实例:

TRUNCATE TABLE employee IMMEDIATE ;

④ DROP TABLE – 删除表

使用DROP TABLE语句可以从数据库中删除表。如果删除包含数据的表,默认情况下,数据将与表一起删除。

DROP TABLE table_name ; 

实例:

DROP TABLE employee ; 

3、数据操作语言(DML:Data Manipulation Language):

数据操作语言(或 DML)语句用于读取和修改表中的数据。 这些操作有时也被称为 CRUD 操作,即在表中创建、读取、更新和删除行。 常见的 DML 语句类型包括插入、选择、更新和删除。 INSERT:用于向表中插入一行或几行数据;SELECT:从表中读取或选择一行或多行;更新:编辑表中的一行或多行;DELETE:从表中删除一行或多行数据。

① INSERT – 插入数据

INSERT用于在表中插入新行。

INSERT INTO table_name 
(columnl,column2,column3...) VALUES(valuel,value2,value3...); 

实例:

INSERT INTO placeofinterest 
(name,type,city,country,airport) VALUES('Niagara 
Water干alls','Nature','Toronto','Can ada','Pearson'); 

② UPDATE – 更新数据

UPDATE用于更新表中的行。

UPDATE table_name SET[[columnl]= [VALUES]] WHERE [condition]; 

实例:

UPDATE placeofinterest SET name = 'Niagara Falls' WHERE name = 
"Niagara Waterfalls"; 

③ DELETE – 删除数据

DELETE语句用于从表中删除在WHERE条件中指定的行。

DELETE FROM table_name WHERE [condition]; 

实例:

DELETE FRDM placeofinterest WHERE city IN ('Rome','Vienna'); 

4、事务控制语言(TCL:Transaction Control Language):

它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。

① Commit command(在MySQL使用 phpMyAdmin)

COMMIT命令用于将更改持久化到数据库中。COMMIT命令的默认终止符是分号(😉。

DELIMITER // 
CREATE PROCEDURE PROCEDURE_NAME BEGIN 
COMMIT; 
END// 
DELIMITER ; 

实例:

DELIMITER // 
CREATE PROCEDURE TRANSACTION_ROSE() 
BEGIN 
DECLARE EXIT HANDLER FDR SQLEXCEPTION BEGIN ROLLBACK; RESIGNAL; END; 
START TRANSACTION; UPDATE BankAccounts SET Balance = Balance-200 WHERE AccountName = 'Rose'; 
UPDATE BankAccounts SET Balance = Balance-300 WHERE AccountName = 'Rose'; 
COMMIT;
END//
DELIMITER ;\ 

② Rollback command(在MySQL使用 phpMyAdmin)

ROLLBACK命令用于回滚未保存在数据库中的事务。ROLLBACK命令的默认终止符是分号(😉。

DELIMITER // 
CREATE PROCEDURE PROCEDURE_NAME BEGIN 
ROLLBACK; 
COMMIT; 
END// 
DELIMITER ; 

实例:

DELIMITER // 
CREATE PROCEDURE TRANSACTION_ROSE() 
BEGIN 
DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; RESIGNAL; END; 
START TRANSACTION; UPDATE BankAccounts SET Balance = Balance-200 WHERE AccountName = 'Rose'; 
UPDATE BankAccounts SET Balance = Balance-300 WHERE AccountName = 'Rose'; 
COMMIT; 
END// 
DELIMITER ;\ 

学习如何使用高级SQL技术(如视图、事务、存储过程和联接)构建更强大的查询,见附件

总结

以上就是本文主要的内容,本文仅仅简单介绍了SQL的使用,而SQL提供了大量能使我们快速便捷地处理数据的函数和方法。

;