SQL进阶:索引创建、修改与删除实战

0 下载量 99 浏览量 更新于2024-08-30 收藏 111KB PDF 举报
本篇文档主要介绍了SQL数据库中的索引操作以及元组插入的相关知识点。索引是提高数据库查询性能的关键组成部分,它允许更快地查找数据。以下是关键概念的详细说明: 1. **建立索引** - `CREATE INDEX`命令用于创建索引,其语法包括以下几个部分: - `UNIQUE`:如果指定,索引中的每个值将唯一对应一条数据记录,避免重复值。 - `CLUSTER`:标记为聚簇索引,这意味着表的数据行会根据索引顺序存储,加快查询速度。 - `ON`后跟表名和要建索引的列名,多列索引用逗号分隔,如`CREATE UNIQUE INDEX SCno ON SC (Sno, Cno)`。 **示例**: - 在学生-课程数据库中,为Student、Course和SC表建立了以下索引: - Student表:`CREATE UNIQUE INDEX Stusno ON Student (Sno ASC)`; - Course表:`CREATE UNIQUE INDEX Coucno ON Course (Cno ASC)`; - SC表:`CREATE UNIQUE INDEX SCno ON SC (Sno ASC, Cno DESC)`,即按照学号升序和课程号降序排序。 2. **修改索引** - 修改索引名称涉及到`ALTER INDEX`命令,但在SQL Server中,不能直接使用`RENAME`,而是通过`sp_rename`系统存储过程实现,如`EXEC sp_rename 'SC.SCno', 'SCSno', 'index'`。 3. **删除索引** - 删除索引使用`DROP INDEX`,需指定表名和索引名,如`DROP INDEX Stusno ON Student`。 4. **插入元组** - `INSERT INTO`语句用于向表中插入数据: - 明确指定列名和值:如`INSERT INTO Student (Sno, Sname, Ssex, Sdept, Sage) VALUES ('201215128', '陈冬', '男', 'IS', 18)`; - 如果省略列名,所有列都将按表定义的顺序插入:如插入一个完整元组时,只需提供所有属性值即可。 这些知识点在实际的数据库管理和优化中非常重要,能够提升查询效率,减少数据处理时间,并有助于确保数据的完整性。理解并掌握索引创建、修改和删除,以及元组插入的不同方式,是提高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 上传