还剩58页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《基础教程》SQL本教程将带您踏上学习SQL的旅程,从基础语法到高级应用,逐步掌握这门数据库编程语言通过示例和练习,您将能够高效地管理和分析数据,为您的工作和学习提供强大支持简介SQL什么是SQL SQL的功能SQL StructuredQuery Language是一种结构化查询语言,用SQL可以用于查询、插入、更新、删除数据,创建表、视图和索引,于访问和操作数据库它是一种标准化的语言,几乎所有关系型管理用户权限等数据库管理系统RDBMS都支持什么是SQL结构化查询语言用于访问和操作数据数据库管理系统SQL是一种标准化语言,用于与数据库SQL允许您查询、插入、更新和删除数SQL在关系型数据库管理系统RDBMS进行交互据库中的数据中广泛使用,例如MySQL、PostgreSQL、SQL Server等的历史发展SQL1970s1IBM开发了SQL语言,最初称为SEQUEL StructuredEnglishQuery Language1980s2SQL成为ANSI AmericanNational StandardsInstitute标准1990s3SQL被广泛应用于各种数据库管理系统,并不断发展和完善2000s4SQL的发展更加注重可扩展性、性能优化和安全性在数据库管理系统中的作用SQL数据管理1创建、修改和删除表数据操作2插入、更新和删除数据数据查询3检索和筛选数据数据维护4创建视图、索引和存储过程数据安全5管理用户权限和数据访问控制语句的基础语法SQL关键字1SQL语句中的保留字,例如SELECT、FROM、WHERE表名2数据库中的表名,例如Customers、Orders列名3表中的列名,例如CustomerID、OrderDate数据值4数据本身,例如
123、John Doe、2023-12-15运算符5比较运算符、逻辑运算符等,用于对数据进行比较和操作语句的组成部分SQL12SELECT FROM选择要检索的列指定要查询的表34WHERE ORDER BY筛选符合条件的数据对结果集进行排序语句SELECT检索数据指定列SELECT语句用于从数据库中检索数据可以使用星号*检索所有列,或者指定特定列名筛选条件可以使用WHERE子句筛选符合条件的数据子句FROM指定表名FROM子句用于指定要查询的表FROM Customers从Customers表中检索数据FROM Orders从Orders表中检索数据子句WHERE筛选条件比较运算符WHERE子句用于筛选符合条件使用等于号=、大于号、小的数据于号、大于等于号=、小于等于号=、不等于号!=等进行比较逻辑运算符使用AND、OR、NOT等连接多个条件数据类型数据类型列类型数据类型定义了数据存储的格式和范围,例如整型、浮点型、字符每个列都有一个特定的数据类型,用于确定该列可以存储什么类型型、日期时间型等的值常见的数据类型整型INT浮点型FLOAT字符型VARCHAR日期时间型DATETIME存储整数,例如
1、
2、
3、-10存储带有小数点的数字,例如存储文本数据,例如John
1.
5、-
2.75Doe、Beijing存储日期和时间,例如2023-12-1510:30:00整型INT整型数据类型,用于存储整数范围INT类型的范围取决于具体的数据库系统,通常是-2,147,483,648到2,147,483,647示例CustomerID INT,Age INT浮点型1FLOAT2精度浮点型数据类型,用于存储带FLOAT类型的精度取决于具体有小数点的数字的数据库系统,通常可以存储15-17位有效数字示例3Price FLOAT,Discount FLOAT字符型VARCHAR长度可变长度字符型数据类型,用于VARCHAR类型的长度取决于具体存储文本数据的数据库系统,通常可以存储255个字符示例FirstName VARCHAR50,City VARCHAR100日期时间型日期部分时间部分存储日期,例如2023-12-15存储时间,例如10:30:00日期和时间存储日期和时间,例如2023-12-1510:30:00基本的语句SELECT选择所有列1SELECT*FROM Customers;选择指定列2SELECT CustomerID,FirstName FROM Customers;使用别名3SELECT CustomerIDAS ID,FirstName ASName FROMCustomers;查询所有列SELECT*选择所有列FROM Customers指定要查询的表SELECT*FROM Customers;查询Customers表中的所有数据查询指定列SELECT FROM CustomersCustomerID,指定要查询的表FirstName选择CustomerID和FirstName列SELECT CustomerID,FirstName FROMCustomers;查询Customers表中的CustomerID和FirstName列使用别名AS关键字SELECT CustomerIDASID,FirstName AS使用AS关键字为列指定别名Name为CustomerID列指定别名ID,为FirstName列指定别名NameFROM CustomersSELECT CustomerIDASID,FirstName AS指定要查询的表Name FROMCustomers;查询Customers表中的CustomerID和FirstName列,并分别使用ID和Name作为别名去重查询DISTINCT关键字SELECT DISTINCTCity FROMCustomers;DISTINCT关键字用于去除结果集中的重复数据查询Customers表中的City列,并去除重复的城市名称子句的使用WHERE筛选条件1WHERE子句用于筛选符合条件的数据比较运算符2可以使用等于号=、大于号、小于号、大于等于号=、小于等于号=、不等于号!=等进行比较逻辑运算符3可以使用AND、OR、NOT等连接多个条件LIKE模糊查询4使用LIKE运算符进行模糊查询IN/BETWEEN查询5使用IN和BETWEEN运算符进行范围查询比较运算符等于号=SELECT*FROM Customers WHERE CustomerID=100;大于号SELECT*FROM Customers WHERE Age30;小于号SELECT*FROM CustomersWHERE OrderDate2023-12-15;大于等于号=SELECT*FROM CustomersWHERE Age=25;小于等于号=SELECT*FROM CustomersWHERE OrderDate=2023-12-15;不等于号!=SELECT*FROM CustomersWHERE City!=Beijing;逻辑运算符AND ORSELECT*FROM CustomersSELECT*FROM CustomersWHERE Age30AND City=WHEREAge30OR City=Beijing;Beijing;NOTSELECT*FROM CustomersWHERE NOTCity=Beijing;模糊查询LIKE百分号%下划线_匹配任意多个字符匹配单个字符SELECT*FROM SELECT*FROMCustomers WHERECustomers WHEREFirstNameLIKE FirstNameLIKE%John%;_ohn;查询FirstName中包含John的查询FirstName以ohn结尾的所有记录所有记录查询IN/BETWEENIN运算符BETWEEN运算符示例查询列值是否在指定列表中查询列值是否在指定范围内SELECT*FROM CustomersWHERE CityINBeijing,Shanghai;SELECT*FROM CustomersWHERE AgeBETWEEN25AND35;排序查询ORDER BY子句升序和降序排列ORDER BY子句用于对查询结果集进行排序可以使用ASC关键字进行升序排列,使用DESC关键字进行降序排列子句ORDER BY排序列1指定要排序的列排序方式2可以使用ASC升序或DESC降序指定排序方式示例3SELECT*FROM CustomersORDER BYFirstName ASC;SELECT*FROM CustomersORDER BYAge DESC;升序和降序排列ASC升序排列,从小到大DESC降序排列,从大到小示例SELECT*FROM CustomersORDER BYFirstName ASC;SELECT*FROM CustomersORDERBYAge DESC;聚合函数COUNT SUMAVG计算行数计算列值的总和计算列值的平均值MAX MIN计算列值的最大值计算列值的最小值COUNT统计行数COUNT列名示例COUNT*用于统计所有行数COUNT列名用于统计指定列中非空SELECT COUNT*FROM值的个数Customers;SELECT COUNTOrderIDFROMOrders;SUM计算总和示例SUM列名用于计算指定列值的总和SELECT SUMPriceFROM Orders;AVG计算平均值示例AVG列名用于计算指定列值的平均值SELECT AVGAgeFROM Customers;MAX计算最大值1MAX列名用于计算指定列值的最大值示例2SELECT MAXAgeFROM Customers;MIN计算最小值MIN列名用于计算指定列值的最小值示例SELECT MINAgeFROM Customers;分组查询1GROUP BY子句2HAVING子句GROUP BY子句用于将数据分组HAVING子句用于筛选分组后的数据子句GROUP BY分组列示例指定要分组的列SELECT City,COUNT*FROMCustomers GROUPBY City;将Customers表中的数据按City分组,并统计每个城市的人数子句HAVING筛选分组后的数据示例HAVING子句用于筛选分组后的数据SELECT City,COUNT*FROMCustomers GROUPBY CityHAVINGCOUNT*10;将Customers表中的数据按City分组,并筛选出人数大于10的城市多表查询连接多个表内连接、外连接、交叉连接多表查询用于连接多个表,并检索来自多个表的数据不同的连接方式用于控制数据的连接方式内连接INNER JOIN1INNER JOIN用于连接两个表,并返回两个表中都存在的数据ON条件2ON条件用于指定连接的条件示例3SELECT*FROM CustomersINNER JOINOrders ONCustomers.CustomerID=Orders.CustomerID;查询Customers和Orders表,返回CustomerID匹配的记录外连接LEFT JOINLEFT JOIN用于连接两个表,并返回左表中的所有数据,即使右表中没有匹配的数据RIGHT JOINRIGHT JOIN用于连接两个表,并返回右表中的所有数据,即使左表中没有匹配的数据示例SELECT*FROM CustomersLEFTJOINOrders ONCustomers.CustomerID=Orders.CustomerID;SELECT*FROM CustomersRIGHTJOINOrders ONCustomers.CustomerID=Orders.CustomerID;交叉连接CROSS JOIN示例CROSS JOIN用于连接两个表,SELECT*FROM Customers并返回所有可能的组合CROSS JOINOrders;查询Customers和Orders表,返回所有Customers记录与所有Orders记录的组合子查询嵌套查询单行子查询子查询是嵌套在其他查询语句中子查询返回单个值的查询语句多行子查询子查询返回多个值单行子查询子查询返回单个值示例子查询的结果是一个单个值SELECT*FROM CustomersWHEREAge=SELECT MAXAgeFROMCustomers;查询Customers表中年龄最大的记录多行子查询子查询返回多个值示例子查询的结果是一个值列表SELECT*FROMCustomersWHERE CityIN SELECTCityFROM Orders;查询Customers表中在Orders表中出现过的城市插入数据INSERT INTO语句1INSERT INTO语句用于将数据插入到表中指定列名2可以指定要插入数据的列名VALUES关键字3使用VALUES关键字指定要插入的值语句INSERT INTOINSERT INTO Customers CustomerID,FirstName,LastName,City指定要插入数据的表和列名VALUES101,John,Doe,Beijing;指定要插入的值INSERT INTOCustomers CustomerID,FirstName,LastName,City VALUES101,John,Doe,Beijing;将数据插入到Customers表中批量插入数据VALUES列表示例使用VALUES关键字指定多个要插入的值INSERTINTOCustomers CustomerID,FirstName,LastName,City VALUES102,Jane,Smith,Shanghai,103,Peter,Jones,Guangzhou;更新数据UPDATE语句SET关键字UPDATE语句用于更新表中的数使用SET关键字指定要更新的列和据值WHERE条件使用WHERE子句指定要更新的条件语句UPDATE更新数据示例UPDATE语句用于更新表中的数据UPDATE CustomersSET City=Shenzhen WHERECustomerID=100;更新Customers表中CustomerID为100的记录的City列为Shenzhen条件更新WHERE筛选条件示例WHERE子句用于指定要更新的条件UPDATE CustomersSET Age=35WHERE FirstName=John;更新Customers表中FirstName为John的记录的Age列为35删除数据DELETE语句1DELETE语句用于删除表中的数据WHERE条件2使用WHERE子句指定要删除的条件示例3DELETE FROMCustomersWHERECustomerID=100;删除Customers表中CustomerID为100的记录语句DELETE删除数据DELETE语句用于删除表中的数据WHERE条件使用WHERE子句指定要删除的条件示例DELETE FROMCustomersWHERECity=Beijing;删除Customers表中City为Beijing的所有记录删除整张表TRUNCATETRUNCATE TABLE示例TRUNCATE TABLE语句用于删TRUNCATE TABLE除整张表中的所有数据Customers;删除Customers表中的所有数据视图虚拟表简化查询视图是基于基础表或其他视图的视图可以简化复杂的查询操作虚拟表数据安全视图可以限制用户对数据的访问权限创建视图CREATE VIEW示例CREATE VIEW语句用于创建视图CREATE VIEWCustomerOrders ASSELECT*FROMCustomersINNERJOIN OrdersONCustomers.CustomerID=Orders.CustomerID;创建名为CustomerOrders的视图,该视图包含Customers表和Orders表中CustomerID匹配的记录利用视图查询数据查询视图示例可以使用SELECT语句查询视图中的数据SELECT*FROM CustomerOrders;查询CustomerOrders视图中的所有数据索引加速查询1索引用于加快数据检索的速度创建索引2可以使用CREATE INDEX语句创建索引索引的原理和优缺点3索引通过建立数据的索引结构,可以快速定位数据,从而提高查询效率创建索引CREATE INDEXCREATE INDEX语句用于创建索引索引名称指定索引的名称索引列指定要创建索引的列示例CREATEINDEXidx_CustomerID ONCustomersCustomerID;在Customers表中创建名为idx_CustomerID的索引,该索引基于CustomerID列索引的原理和优缺点原理优点索引类似于书籍的目录,可以快提高查询效率,加快数据检索速速定位数据,从而提高查询效率度缺点增加数据插入、更新和删除操作的时间,占用额外的存储空间。
个人认证
优秀文档
获得点赞 0