SQL教程:基础到进阶操作指南

需积分: 50 3 下载量 8 浏览量 更新于2024-09-20 收藏 318KB PDF 举报
"这是一个关于SQL语句的经典教程,涵盖了从基础到进阶的各种SQL操作,适合初学者和需要复习的数据库专业人士。教程包括SQL指令、表格处理、进阶SQL和SQL语法四大模块,通过实例帮助读者理解并掌握SQL的使用。" 在SQL世界里,SELECT语句是最基础也是最重要的组成部分,它用于从数据库中提取数据。SELECT允许我们指定要从表格中选取的特定列(栏位名),而FROM关键字则指定了要从中选取数据的表格(表格名)。一个简单的SELECT语句的基本结构是: ```sql SELECT "栏位名" FROM "表格名"; ``` 例如,如果我们有一个名为`Sales`的表格,包含`store_name`、`Sales`和`Date`三个列,我们可以这样选取所有商店名称: ```sql SELECT store_name FROM Sales; ``` 在实际应用中,SQL还提供了许多其他功能强大的关键字和操作符,如: 1. **DISTINCT** - 用于去除重复的记录。 2. **WHERE** - 设置条件以过滤出满足特定要求的行。 3. **AND, OR** - 逻辑操作符,用于组合多个条件。 4. **IN** - 检查值是否在指定的列表中。 5. **BETWEEN** - 选择介于两个值之间的数据。 6. **LIKE** - 使用模式匹配进行筛选。 7. **ORDER BY** - 对结果进行排序。 8. **函数** - 如COUNT()用于计算行数,GROUP BY和HAVING用于分组和条件过滤。 9. **ALIAS** - 给列或表格设置别名,使得查询语句更易读。 10. **表格链接** - 使用JOIN操作连接多个表格。 11. **外部链接** - LEFT JOIN, RIGHT JOIN等处理不完全匹配的数据。 12. **CONCATENATE, SUBSTRING, TRIM** - 字符串操作函数,合并、截取和修剪字符串。 13. **表格处理** - 包括CREATE TABLE创建新表,CONSTRAINT定义约束(如NOT NULL, UNIQUE, CHECK),以及主键和外来键的设置。 14. **CREATE VIEW** - 创建视图,虚拟表。 15. **CREATE INDEX** - 提高查询性能,创建索引。 16. **ALTER TABLE, DROP TABLE, TRUNCATE TABLE** - 修改、删除和清空表格。 17. **INSERT INTO, UPDATE, DELETE FROM** - 插入、更新和删除数据。 进阶SQL涉及更多复杂的操作,如: 1. **UNION, UNION ALL, INTERSECT, MINUS** - 合并或对比多个查询的结果集。 2. **子查询** - 在一个查询中嵌套另一个查询。 3. **EXISTS** - 检查子查询是否存在匹配的行。 4. **CASE** - 条件表达式,根据条件返回不同结果。 5. **算排名, 算中位数, 算总合百分比, 算累积总合百分比** - 数据统计和分析。 通过学习这些概念和实践,你可以掌握SQL的基础,从而有效地管理和操作数据库,无论是简单的数据检索还是复杂的分析任务。记住,尽管深入理解SQL可能需要时间,但基本概念的掌握并不复杂,通过持续学习和实践,你将成为SQL的熟练使用者。

// Java Web应用开发技术教程 // 张庆华 // 清华大学出版社 // 2022年3月第一版 // ver 1.0 // 4.3.3 JDBC访问数据库的基本步骤 // 程序 4-1:JDBC连接数据库基本步骤 package chap4samp; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Chap4JDBC { public void testJDBC() { Connection dbConn = null; Statement stmt = null; ResultSet rs = null; try { // 1加载驱动程序 String DBDRIVER = "com.mysql.cj.jdbc.Driver";// MySQL Class.forName(DBDRIVER); // 2建立连接 String url = "jdbc:mySql://localhost:3306/javawebdb?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false";// 此条语句在一行,无空格。 String userName = "root"; String password = "123456"; dbConn = DriverManager.getConnection(url, userName, password); // 3创建SQL数据库操作对象 stmt = dbConn.createStatement(); // 4生成SQL语句,在本例中,为了展示JDBC数据库连接和操作,需要用到创建数据表、添加记录、查询记录等几条SQL语句 String createtablesql = "create table studentinfo(stdNo varchar(10) not null,stdName varchar(20),stdAge int(11),stdMajor varchar(255), stdHometown varchar(255),PRIMARY KEY(stdNo))";// 创建表SQL语句 String insertsql = "insert into studentinfo values('2017001','张琴',18,'物流工程','襄阳')";// 添加记录SQL语句 String querysql = "select * from studentinfo";// 查询记录SQL语句 // String deletetablesql="DROP TABLE studentinfo";//删除表SQL语句 // 5执行SQL语句 stmt.executeQuery(createtablesql);// 创建表 stmt.executeQuery(insertsql);// 添加记录,多次运行会提示记录已存在 rs = stmt.executeQuery(querysql);// 查询记录 // 6处理结果集 while (rs.next()) { String stdNo = rs.getString("stdNo"); String stdName = rs.getString("stdName"); int stdAge = rs.getInt("stdAge"); String stdHometown = rs.getString("stdHometown"); System.out.println("学号:" + stdNo + ", 姓名:" + stdName + ", 年龄:" + stdAge + ", 生源地:" + stdHometown); } // stmt.executeUpdate(deletetablesql);//删除表 } catch (Exception e) { e.printStackTrace(); } finally { // 7关闭所有数据库资源 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (dbConn != null) { try { dbConn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } public static void main(String[] args) { Chap4JDBC mytest = new Chap4JDBC(); mytest.testJDBC(); } }仍然有错,该怎么修改

2023-06-02 上传