2023年6月21日发(作者:)

[SQL]SQL学习笔记之基础操作1 SQL介绍  SQL 是⽤于访问和处理数据库的标准的计算机语⾔。关于SQL的具体介绍,我们通过回答如下三个问题来进⾏。  SQL 是什么?SQL,指结构化查询语⾔,全称是 Structured Query Language。SQL 是⼀种 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语⾔。  SQL 能做什么?SQL ⾯向数据库执⾏查询SQL 可从数据库取回数据SQL 可在数据库中插⼊新的记录SQL 可更新数据库中的数据SQL 可从数据库删除记录SQL 可创建新数据库SQL 可在数据库中创建新表SQL 可在数据库中创建存储过程SQL 可在数据库中创建视图SQL 可以设置表、存储过程和视图的权限  虽然 SQL 是⼀门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语⾔,但是仍然存在着多种不同版本的 SQL 语⾔。然⽽,为了与 ANSI 标准相兼容,它们必须以相似的⽅式共同地来⽀持⼀些主要的命令(⽐如SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。注释:除了 SQL 标准之外,⼤部分 SQL 数据库程序都拥有它们⾃⼰的专有扩展!  在⽹站上如何使⽤ SQL?  要创建⼀个显⽰数据库中数据的⽹站,需要:RDBMS 数据库程序(⽐如 MS Access、SQL Server、MySQL)使⽤服务器端脚本语⾔,⽐如 PHP 或 ASP使⽤ SQL 来获取您想要的数据使⽤ HTML / CSS注释:RDBMS (Relational Database Management System)指关系型数据库管理系统。RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,⽐如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 MicrosoftAccess。RDBMS 中的数据存储在被称为表的数据库对象中。表是相关的数据项的集合,它由列和⾏组成。2 SQL语句  在数据库上执⾏的⼤部分⼯作都由 SQL 语句完成。我们先介绍⼏个有关SQL的注意事项,为我们接下来详细介绍每⼀条SQL做⼀个基础。  1)SQL语句的⼤⼩写问题:  SQL 对⼤⼩写不敏感:SELECT 与 select 是相同的。  2)SQL 语句后⾯的分号问题:  某些数据库系统要求在每条 SQL 语句的末端使⽤分号。  分号是在数据库系统中分隔每条 SQL 语句的标准⽅法,这样就可以在对服务器的相同请求中执⾏⼀条以上的 SQL 语句。  3)⼀些重要的 SQL 命令:SELECT - 从数据库中提取数据UPDATE - 更新数据库中的数据DELETE - 从数据库中删除数据INSERT INTO - 向数据库中插⼊新数据CREATE DATABASE - 创建新数据库ALTER DATABASE - 修改数据库CREATE TABLE - 创建新表ALTER TABLE - 变更(改变)数据库表DROP TABLE - 删除表CREATE INDEX - 创建索引(搜索键)DROP INDEX - 删除索引3 SQL SELECT语句  SELECT 语句⽤于从数据库中选取数据,结果被存储在⼀个结果表中,称为结果集。  SQL SELECT 语法:SELECT column_name,column_nameFROM table_name;  与SELECT * FROM table_name;  本⽂中,我们使⽤众所周知的 Northwind 样本数据库进⾏举例介绍。下⾯是选⾃ "Customers" 表的数据:CustomerID12345CustomerNameAlfreds FutterkisteAna Trujillo Emparedados yheladosAntonio Moreno TaqueríaAround the HornBerglunds snabbköpContactNameMaria AndersAna TrujilloAddressObere Str. 57Avda. de la Constitución2222CityBerlinMéxicoD.F.MéLuleåPostalCodeCountry122WA1 1DPS-958 22GermanyMexicoMexicoUKSwedenAntonio MorenoMataderos 2312Thomas HardyChristinaBerglund120 Hanover svägen 8  下⾯的 SQL 语句从 "Customers" 表中选取 "CustomerName" 和 "City" 列:SELECT CustomerName,City FROM Customers;  下⾯的 SQL 语句从 "Customers" 表中选取所有列:SELECT * FROM Customers;  在表中,⼀个列可能会包含多个重复值,有时也许希望仅仅列出不同(distinct)的值。DISTINCT 关键词⽤于返回唯⼀不同的值。  SQL SELECT DISTINCT 语法:SELECT DISTINCT column_name,column_nameFROM table_name;4 SQL WHERE语句   WHERE ⼦句⽤于提取那些满⾜指定标准的记录。  SQL WHERE语法:SELECT column_name,column_nameFROM table_nameWHERE column_name operator value;  下⾯的 SQL 语句从 "Customers" 表中选取国家为 "Mexico" 的所有客户:SELECT * FROM CustomersWHERE Country='Mexico';  SQL 使⽤单引号来环绕⽂本值(⼤部分数据库系统也接受双引号)。如果是数值字段,请不要使⽤引号。SELECT * FROM CustomersWHERE CustomerID=1;  WHERE ⼦句中的运算符  下⾯的运算符可以在 WHERE ⼦句中使⽤:运算符=<>注释:在 SQL 的⼀些版本中,该操作符可被写成 !=><>=<=BETWEENLIKEIN⼤于⼩于⼤于等于⼩于等于在某个范围内搜索某种模式指定针对某个列的多个可能值  AND & OR 运算符⽤于基于⼀个以上的条件对记录进⾏过滤。  下⾯的 SQL 语句从 "Customers" 表中选取国家为 "Germany" 且城市为 "Berlin" 的所有客户:SELECT * FROM CustomersWHERE Country='Germany'AND City='Berlin';描述等于不等于。  下⾯的 SQL 语句从 "Customers" 表中选取城市为 "Berlin" 或者 "München" 的所有客户:SELECT * FROM CustomersWHERE City='Berlin'OR City='München';  下⾯的 SQL 语句从 "Customers" 表中选取国家为 "Germany" 且城市为 "Berlin" 或者 "München" 的所有客户:SELECT * FROM CustomersWHERE Country='Germany'AND (City='Berlin' OR City='München');  ORDER BY 关键字⽤于对结果集按照⼀个列或者多个列进⾏排序。ORDER BY 关键字默认按照升序对记录进⾏排序。如果需要按照降序对记录进⾏排序,您可以使⽤ DESC 关键字。  ORDER BY语法:SELECT column_name,column_nameFROM table_nameORDER BY column_name,column_name ASC|DESC;  下⾯的 SQL 语句从 "Customers" 表中选取所有客户,并按照 "Country" 列升序排序:SELECT * FROM CustomersORDER BY Country;  下⾯的 SQL 语句从 "Customers" 表中选取所有客户,并按照 "Country" 列降序排序:SELECT * FROM CustomersORDER BY Country DESC;  下⾯的 SQL 语句从 "Customers" 表中选取所有客户,并按照 "Country" 和 "CustomerName" 列排序:SELECT * FROM CustomersORDER BY Country,CustomerName;7 SQL INSERT INTO语句  INSERT INTO 语句⽤于向表中插⼊新记录。  INSERT INTO 语句可以有两种编写形式。第⼀种形式⽆需指定要插⼊数据的列名,只需提供被插⼊的值即可:INSERT INTO table_nameVALUES (value1,value2,value3,...);  第⼆种形式需要指定列名及被插⼊的值:INSERT INTO table_name (column1,column2,column3,...)VALUES (value1,value2,value3,...);  假如插⼊操作前的表如下所⽰:CustomerID8788899091CustomerNameWartian HerkkuWhite Clover MarketsWilman KalaWolskiContactNameAddressRua do Mercado, 12CityOuluPostalCodeCountry9-012FinlandBrazilUSAFinlandPolandPirkko KoskitaloTorikatu 38Karl JablonskiZbyszekWellington ImportadoraPaula ParenteResende08737-363Helsinki21240Walla305 - 14th Ave. S. Suite 3BSeattleul. Filtrowa 68Matti KarttunenKeskuskatu 45  我们要向 "Customers" 表中插⼊⼀个新⾏。我们可以使⽤下⾯的 SQL 语句:INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');  执⾏插⼊操作以后的表如下所⽰:CustomerID878889909192

注释:我们⽆需插⼊CustomerID列,它是⾃动更新的。  我们也可以在指定的列插⼊数据。  下⾯的 SQL 语句将插⼊⼀个新⾏,但是只在 "CustomerName"、"City" 和 "Country" 列插⼊数据(CustomerID 字段会⾃动更新):CustomerNameWartian HerkkuWhite Clover MarketsWilman KalaWolskiCardinalContactNameAddressRua do Mercado, 12CityOuluPostalCodeCountry94001-012FinlandBrazilUSAFinlandPolandNorwayPirkko KoskitaloTorikatu 38Karl JablonskiZbyszekWellington ImportadoraPaula ParenteResende08737-363HelsinkiWalla305 - 14th Ave. S. Suite 3BSeattleul. Filtrowa 68Matti KarttunenKeskuskatu 45Tom B. ErichsenSkagen 21Stavanger4006INSERT INTO Customers (CustomerName, City, Country)VALUES ('Cardinal', 'Stavanger', 'Norway');  插⼊后的表如下所⽰:CustomerID878889909192

注释:没有复制的列被⾃动填充为null。8 SQL DELETE语句  DELETE 语句⽤于删除表中的⾏。  SQL DELETE 语法:DELETE FROM table_nameWHERE some_column=some_value;CustomerNameWartian HerkkuWhite Clover MarketsWilman KalaWolskiCardinalContactNameAddressRua do Mercado, 12CityOuluPostalCodeCountry94001-012FinlandBrazilUSAFinlandPolandNorwayPirkko KoskitaloTorikatu 38Karl JablonskiZbyszeknullWellington ImportadoraPaula ParenteResende08737-363HelsinkiWalla305 - 14th Ave. S. Suite 3BSeattleul. Filtrowa 68nullMatti KarttunenKeskuskatu 45Stavangernull请注意 SQL DELETE 语句中的 WHERE ⼦句!WHERE ⼦句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE ⼦句,所有的记录都将被删除!  假设我们要从 "Customers" 表中删除客户 "Alfreds Futterkiste"。我们使⽤下⾯的 SQL 语句:DELETE FROM CustomersWHERE CustomerName='Alfreds Futterkiste' AND ContactName='Maria Anders';  您可以在不删除表的情况下,删除表中所有的⾏。这意味着表结构、属性、索引将保持不变:DELETE FROM table_name;orDELETE * FROM table_name;注释:在删除记录时要格外⼩⼼!因为不能重来!9 SQL UPDATE语句  UPDATE 语句⽤于更新表中已存在的记录。  SQL UPDATE语法:UPDATE table_nameSET column1=value1,column2=value2,...WHERE some_column=some_value;请注意 SQL UPDATE 语句中的 WHERE ⼦句!WHERE ⼦句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE ⼦句,所有的记录都将被更新!  假设我们要把客户 "Alfreds Futterkiste" 更新为⼀个新的联系⼈和城市。CustomerIDCustomerNameContactNameAddress1CityPostalCodeCountryGermanyAlfreds FutterkisteMaria AndersObere Str. 57Berlin12209  我们使⽤下⾯的 SQL 语句:UPDATE CustomersSET ContactName='Alfred Schmidt', City='Hamburg'WHERE CustomerName='Alfreds Futterkiste';更新后结果:CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry1Alfreds FutterkisteAlfred SchmidtObere Str. 57Hamburg12209Germany10

  [1]

2023年6月21日发(作者:)

[SQL]SQL学习笔记之基础操作1 SQL介绍  SQL 是⽤于访问和处理数据库的标准的计算机语⾔。关于SQL的具体介绍,我们通过回答如下三个问题来进⾏。  SQL 是什么?SQL,指结构化查询语⾔,全称是 Structured Query Language。SQL 是⼀种 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语⾔。  SQL 能做什么?SQL ⾯向数据库执⾏查询SQL 可从数据库取回数据SQL 可在数据库中插⼊新的记录SQL 可更新数据库中的数据SQL 可从数据库删除记录SQL 可创建新数据库SQL 可在数据库中创建新表SQL 可在数据库中创建存储过程SQL 可在数据库中创建视图SQL 可以设置表、存储过程和视图的权限  虽然 SQL 是⼀门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语⾔,但是仍然存在着多种不同版本的 SQL 语⾔。然⽽,为了与 ANSI 标准相兼容,它们必须以相似的⽅式共同地来⽀持⼀些主要的命令(⽐如SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。注释:除了 SQL 标准之外,⼤部分 SQL 数据库程序都拥有它们⾃⼰的专有扩展!  在⽹站上如何使⽤ SQL?  要创建⼀个显⽰数据库中数据的⽹站,需要:RDBMS 数据库程序(⽐如 MS Access、SQL Server、MySQL)使⽤服务器端脚本语⾔,⽐如 PHP 或 ASP使⽤ SQL 来获取您想要的数据使⽤ HTML / CSS注释:RDBMS (Relational Database Management System)指关系型数据库管理系统。RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,⽐如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 MicrosoftAccess。RDBMS 中的数据存储在被称为表的数据库对象中。表是相关的数据项的集合,它由列和⾏组成。2 SQL语句  在数据库上执⾏的⼤部分⼯作都由 SQL 语句完成。我们先介绍⼏个有关SQL的注意事项,为我们接下来详细介绍每⼀条SQL做⼀个基础。  1)SQL语句的⼤⼩写问题:  SQL 对⼤⼩写不敏感:SELECT 与 select 是相同的。  2)SQL 语句后⾯的分号问题:  某些数据库系统要求在每条 SQL 语句的末端使⽤分号。  分号是在数据库系统中分隔每条 SQL 语句的标准⽅法,这样就可以在对服务器的相同请求中执⾏⼀条以上的 SQL 语句。  3)⼀些重要的 SQL 命令:SELECT - 从数据库中提取数据UPDATE - 更新数据库中的数据DELETE - 从数据库中删除数据INSERT INTO - 向数据库中插⼊新数据CREATE DATABASE - 创建新数据库ALTER DATABASE - 修改数据库CREATE TABLE - 创建新表ALTER TABLE - 变更(改变)数据库表DROP TABLE - 删除表CREATE INDEX - 创建索引(搜索键)DROP INDEX - 删除索引3 SQL SELECT语句  SELECT 语句⽤于从数据库中选取数据,结果被存储在⼀个结果表中,称为结果集。  SQL SELECT 语法:SELECT column_name,column_nameFROM table_name;  与SELECT * FROM table_name;  本⽂中,我们使⽤众所周知的 Northwind 样本数据库进⾏举例介绍。下⾯是选⾃ "Customers" 表的数据:CustomerID12345CustomerNameAlfreds FutterkisteAna Trujillo Emparedados yheladosAntonio Moreno TaqueríaAround the HornBerglunds snabbköpContactNameMaria AndersAna TrujilloAddressObere Str. 57Avda. de la Constitución2222CityBerlinMéxicoD.F.MéLuleåPostalCodeCountry122WA1 1DPS-958 22GermanyMexicoMexicoUKSwedenAntonio MorenoMataderos 2312Thomas HardyChristinaBerglund120 Hanover svägen 8  下⾯的 SQL 语句从 "Customers" 表中选取 "CustomerName" 和 "City" 列:SELECT CustomerName,City FROM Customers;  下⾯的 SQL 语句从 "Customers" 表中选取所有列:SELECT * FROM Customers;  在表中,⼀个列可能会包含多个重复值,有时也许希望仅仅列出不同(distinct)的值。DISTINCT 关键词⽤于返回唯⼀不同的值。  SQL SELECT DISTINCT 语法:SELECT DISTINCT column_name,column_nameFROM table_name;4 SQL WHERE语句   WHERE ⼦句⽤于提取那些满⾜指定标准的记录。  SQL WHERE语法:SELECT column_name,column_nameFROM table_nameWHERE column_name operator value;  下⾯的 SQL 语句从 "Customers" 表中选取国家为 "Mexico" 的所有客户:SELECT * FROM CustomersWHERE Country='Mexico';  SQL 使⽤单引号来环绕⽂本值(⼤部分数据库系统也接受双引号)。如果是数值字段,请不要使⽤引号。SELECT * FROM CustomersWHERE CustomerID=1;  WHERE ⼦句中的运算符  下⾯的运算符可以在 WHERE ⼦句中使⽤:运算符=<>注释:在 SQL 的⼀些版本中,该操作符可被写成 !=><>=<=BETWEENLIKEIN⼤于⼩于⼤于等于⼩于等于在某个范围内搜索某种模式指定针对某个列的多个可能值  AND & OR 运算符⽤于基于⼀个以上的条件对记录进⾏过滤。  下⾯的 SQL 语句从 "Customers" 表中选取国家为 "Germany" 且城市为 "Berlin" 的所有客户:SELECT * FROM CustomersWHERE Country='Germany'AND City='Berlin';描述等于不等于。  下⾯的 SQL 语句从 "Customers" 表中选取城市为 "Berlin" 或者 "München" 的所有客户:SELECT * FROM CustomersWHERE City='Berlin'OR City='München';  下⾯的 SQL 语句从 "Customers" 表中选取国家为 "Germany" 且城市为 "Berlin" 或者 "München" 的所有客户:SELECT * FROM CustomersWHERE Country='Germany'AND (City='Berlin' OR City='München');  ORDER BY 关键字⽤于对结果集按照⼀个列或者多个列进⾏排序。ORDER BY 关键字默认按照升序对记录进⾏排序。如果需要按照降序对记录进⾏排序,您可以使⽤ DESC 关键字。  ORDER BY语法:SELECT column_name,column_nameFROM table_nameORDER BY column_name,column_name ASC|DESC;  下⾯的 SQL 语句从 "Customers" 表中选取所有客户,并按照 "Country" 列升序排序:SELECT * FROM CustomersORDER BY Country;  下⾯的 SQL 语句从 "Customers" 表中选取所有客户,并按照 "Country" 列降序排序:SELECT * FROM CustomersORDER BY Country DESC;  下⾯的 SQL 语句从 "Customers" 表中选取所有客户,并按照 "Country" 和 "CustomerName" 列排序:SELECT * FROM CustomersORDER BY Country,CustomerName;7 SQL INSERT INTO语句  INSERT INTO 语句⽤于向表中插⼊新记录。  INSERT INTO 语句可以有两种编写形式。第⼀种形式⽆需指定要插⼊数据的列名,只需提供被插⼊的值即可:INSERT INTO table_nameVALUES (value1,value2,value3,...);  第⼆种形式需要指定列名及被插⼊的值:INSERT INTO table_name (column1,column2,column3,...)VALUES (value1,value2,value3,...);  假如插⼊操作前的表如下所⽰:CustomerID8788899091CustomerNameWartian HerkkuWhite Clover MarketsWilman KalaWolskiContactNameAddressRua do Mercado, 12CityOuluPostalCodeCountry9-012FinlandBrazilUSAFinlandPolandPirkko KoskitaloTorikatu 38Karl JablonskiZbyszekWellington ImportadoraPaula ParenteResende08737-363Helsinki21240Walla305 - 14th Ave. S. Suite 3BSeattleul. Filtrowa 68Matti KarttunenKeskuskatu 45  我们要向 "Customers" 表中插⼊⼀个新⾏。我们可以使⽤下⾯的 SQL 语句:INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');  执⾏插⼊操作以后的表如下所⽰:CustomerID878889909192

注释:我们⽆需插⼊CustomerID列,它是⾃动更新的。  我们也可以在指定的列插⼊数据。  下⾯的 SQL 语句将插⼊⼀个新⾏,但是只在 "CustomerName"、"City" 和 "Country" 列插⼊数据(CustomerID 字段会⾃动更新):CustomerNameWartian HerkkuWhite Clover MarketsWilman KalaWolskiCardinalContactNameAddressRua do Mercado, 12CityOuluPostalCodeCountry94001-012FinlandBrazilUSAFinlandPolandNorwayPirkko KoskitaloTorikatu 38Karl JablonskiZbyszekWellington ImportadoraPaula ParenteResende08737-363HelsinkiWalla305 - 14th Ave. S. Suite 3BSeattleul. Filtrowa 68Matti KarttunenKeskuskatu 45Tom B. ErichsenSkagen 21Stavanger4006INSERT INTO Customers (CustomerName, City, Country)VALUES ('Cardinal', 'Stavanger', 'Norway');  插⼊后的表如下所⽰:CustomerID878889909192

注释:没有复制的列被⾃动填充为null。8 SQL DELETE语句  DELETE 语句⽤于删除表中的⾏。  SQL DELETE 语法:DELETE FROM table_nameWHERE some_column=some_value;CustomerNameWartian HerkkuWhite Clover MarketsWilman KalaWolskiCardinalContactNameAddressRua do Mercado, 12CityOuluPostalCodeCountry94001-012FinlandBrazilUSAFinlandPolandNorwayPirkko KoskitaloTorikatu 38Karl JablonskiZbyszeknullWellington ImportadoraPaula ParenteResende08737-363HelsinkiWalla305 - 14th Ave. S. Suite 3BSeattleul. Filtrowa 68nullMatti KarttunenKeskuskatu 45Stavangernull请注意 SQL DELETE 语句中的 WHERE ⼦句!WHERE ⼦句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE ⼦句,所有的记录都将被删除!  假设我们要从 "Customers" 表中删除客户 "Alfreds Futterkiste"。我们使⽤下⾯的 SQL 语句:DELETE FROM CustomersWHERE CustomerName='Alfreds Futterkiste' AND ContactName='Maria Anders';  您可以在不删除表的情况下,删除表中所有的⾏。这意味着表结构、属性、索引将保持不变:DELETE FROM table_name;orDELETE * FROM table_name;注释:在删除记录时要格外⼩⼼!因为不能重来!9 SQL UPDATE语句  UPDATE 语句⽤于更新表中已存在的记录。  SQL UPDATE语法:UPDATE table_nameSET column1=value1,column2=value2,...WHERE some_column=some_value;请注意 SQL UPDATE 语句中的 WHERE ⼦句!WHERE ⼦句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE ⼦句,所有的记录都将被更新!  假设我们要把客户 "Alfreds Futterkiste" 更新为⼀个新的联系⼈和城市。CustomerIDCustomerNameContactNameAddress1CityPostalCodeCountryGermanyAlfreds FutterkisteMaria AndersObere Str. 57Berlin12209  我们使⽤下⾯的 SQL 语句:UPDATE CustomersSET ContactName='Alfred Schmidt', City='Hamburg'WHERE CustomerName='Alfreds Futterkiste';更新后结果:CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry1Alfreds FutterkisteAlfred SchmidtObere Str. 57Hamburg12209Germany10

  [1]