2021-09-10 sqlserver 基础增删改查

sqlserver 基础增删改查

答案如下:
–1
create database school
use school
create table student(
Sno char(6) primary key,–学号
Sname varchar(8) ,–姓名
Ssex char(2),–性别
Sage smallint ,–年龄
Sdept varchar(15))–系科
create table Course(
Cno char(4) primary key,–课程号
Cname varchar(20),–课程名
Cpno char(4), --先修课
Ccredit tinyint --学分
)
create table sc(
Sno char(6),
Cno char(4),
Grade decimal(12,2),
primary key(Sno,Cno)
)
–2
insert into student values(‘4001’,‘赵茵’,‘男’,‘20’,‘SX’)
insert into student values(‘4002’,‘杨华’,‘女’,‘21’,‘JSJ’)
–3
delete --delete只是删除记录,不会删除整个表格,而drop table名 会删除整个表
from student
–4
drop table student
–5
alter table student add --在已有表里添加新的属性(add关键字)
sbirthdate datetime

–6
delete
from student
where Ssex='男’and Sdept=‘JSJ’

–7
delete
from Course
where Cname=‘数据库原理’

–8
update student --更新数据
set Sdept=‘JSJ’
where Sno=‘0001’
–9
update student
set Sage+=1,Ssex=‘女’
where Sname=‘陈小明’

–10、修改李文庆的1001课程的成绩为93分。

update sc --多个表之间的关联的更新
set Grade=93
where sc.Cno=‘1001’ and sc.Sno in(
select Sno
from student
where Sname=‘李文庆’
)
–11、把“数据库原理”课的成绩减去1分。
update sc
set Grade-=1
where sc.Cno in(
select Cno
from Course
where Cname=‘数据库原理’
)

–Select 查询语句
–一、单表
–1、查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。
select sno,Sname,sage
from student
where Ssex=‘女’ and Sage between 19 and 21 --默认从大到小ASC 降序用ORDER BY dec,order by还可以加列名,来按列排序

–2、查询姓名中第2个字为“明”字的学生学号、性别。
select sno,Ssex
from student
where Sname like '明%‘–like 为模糊查询,’ '是单个字符的代替符,‘%’是任意字符的通配符
–3、查询 1001课程没有成绩的学生学号、课程号。
select Sno,Cno
from sc
where Cno='1001’and Grade=null
–4、查询JSJ 、SX、WL 系的年龄大于25岁的学生学号,姓名,结果按系排列。
select sno,Sname --不用分组就不用group by
from student
Where (Sdept=‘JSJ’ or Sdept=‘SX’ or Sdept=‘WL’) and Sage>25
Order by sdept
----5、查询 student 表中的学生共分布在那几个系中。(distinct)(
–distinct用来查询不重复记录的条数,即用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段。

–注意事项
–distinct 【查询字段】,必须放在要查询字段的开头,即放在第一个参数;
–只能在SELECT 语句中使用,不能在 INSERT, DELETE, UPDATE 中使用;
–DISTINCT 表示对后面的所有参数的拼接取 不重复的记录,即查出的参数拼接每行记录都是唯一的
–不能与all同时使用,默认情况下,查询时返回的就是所有的结果

select COUNT(distinct Sdept)
from student

–6、查询0001号学生1001,1002课程的成绩。
select grade
from sc
where sno='0001’and cno in (1001,1002)
–二、统计
–1、查询姓名中有“明”字的学生人数。
select COUNT(Cname)–*的效率远低于具体指定某一列的效率
from Course
where Cname like ‘%明%’
–2、计算‘JSJ’系的平均年龄及最大年龄。
select AVG(Sage),Max(Sage)–聚合函数不能用在where后面能放在having里,与sql的执行顺序有关,但可以放在select后面,这时两者都能用
from student
–where Sage=‘JSJ’

group by Sage
having Sage=‘JSJ’
–3、查询学生中姓名为张明、赵英的人数。
select COUNT(Sname)
from student
Where Sname ='张明’or Sname =‘赵英’

–group by Sname
–having Sname ='张明’or Sname =‘赵英’
–4、计算每一门课的总分、平均分,最高分、最低分,按平均分由高到低排列
select SUM(grade),avg(grade),max(grade),MIN(grade)
from sc --快速注释ctrl+k.c 快速解除注释ctrl+k.u
group by Grade

在数据库school中有student , sc, course 表,每张表的含义及列的属性如下:
Student:学生表

Course:课程表

SC:学生选课表

1、写出使用Create Table 语句创建表student , sc, course 的SQL语句。
Create table student
2、在student表中插入信息

3、删除student表中的全部记录
4、在数据库school中删除关系student
5、在student表添加属性sbirthdate ,类型datetime
6、删除所有JSJ 系的男生。
7、删除“数据库原理”课的选课纪录。
8、修改0001 学生的系科为JSJ
9、把陈小明的年龄加1岁,性别改为女。
10、修改李文庆的1001课程的成绩为93分。
11、把“数据库原理”课的成绩减去1分。

Select 查询语句
一、单表
1、查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。
2、查询姓名中第2个字为“明”字的学生学号、性别。
3、查询 1001课程没有成绩的学生学号、课程号。
4、查询JSJ 、SX、WL 系的年龄大于25岁的学生学号,姓名,结果按系排列。
5、查询 student 表中的学生共分布在那几个系中。(distinct)
6、查询0001号学生1001,1002课程的成绩。
二、统计
1、查询姓名中有“明”字的学生人数。
2、计算‘JSJ’系的平均年龄及最大年龄。
3、查询学生中姓名为张明、赵英的人数。
4、计算每一门课的总分、平均分,最高分、最低分,按平均分由高到低排列

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Javaweb 实现增删改查是 Web 开发中非常基础的操作,通常使用的是 Java Servlet 和 JSP 技术。 以下是一个简单的示例,实现了一个学生信息管理统的增删改查功能: 1. 创建数据库表 首先,我们需要在数据库中创建一个表来存储学生信息。例如,我们可以创建一个名为 `student` 的表,包含以下字段: ``` id int 学生编号 name varchar 学生姓名 gender varchar 学生性别 age int 学生年龄 ``` 2. 创建 JavaBean 为了方便操作学生信息,我们可以创建一个 JavaBean 来表示学生对象: ```java public class Student { private int id; private String name; private String gender; private int age; // 省略 getter 和 setter 方法 } ``` 3. 创建 DAO 类 DAO(Data Access Object)是数据访问对象,用于封装对数据库的访问操作。我们可以创建一个 `StudentDAO` 类来实现对学生信息的增删改查操作。 ```java public class StudentDAO { // 数据库连接参数 private String url = "jdbc:mysql://localhost:3306/test"; private String username = "root"; private String password = "123456"; // 增加学生信息 public void add(Student student) { try { // 连接数据库 Connection conn = DriverManager.getConnection(url, username, password); // SQL 语句 String sql = "INSERT INTO student(id, name, gender, age) VALUES (?, ?, ?, ?)"; // 预编译 SQL 语句 PreparedStatement pstmt = conn.prepareStatement(sql); // 设置参数 pstmt.setInt(1, student.getId()); pstmt.setString(2, student.getName()); pstmt.setString(3, student.getGender()); pstmt.setInt(4, student.getAge()); // 执行 SQL 语句 pstmt.executeUpdate(); // 关闭连接 pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } // 删除学生信息 public void delete(int id) { try { // 连接数据库 Connection conn = DriverManager.getConnection(url, username, password); // SQL 语句 String sql = "DELETE FROM student WHERE id = ?"; // 预编译 SQL 语句 PreparedStatement pstmt = conn.prepareStatement(sql); // 设置参数 pstmt.setInt(1, id); // 执行 SQL 语句 pstmt.executeUpdate(); // 关闭连接 pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } // 修改学生信息 public void update(Student student) { try { // 连接数据库 Connection conn = DriverManager.getConnection(url, username, password); // SQL 语句 String sql = "UPDATE student SET name = ?, gender = ?, age = ? WHERE id = ?"; // 预编译 SQL 语句 PreparedStatement pstmt = conn.prepareStatement(sql); // 设置参数 pstmt.setString(1, student.getName()); pstmt.setString(2, student.getGender()); pstmt.setInt(3, student.getAge()); pstmt.setInt(4, student.getId()); // 执行 SQL 语句 pstmt.executeUpdate(); // 关闭连接 pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } // 查询学生信息 public List<Student> query() { List<Student> list = new ArrayList<>(); try { // 连接数据库 Connection conn = DriverManager.getConnection(url, username, password); // SQL 语句 String sql = "SELECT * FROM student"; // 创建 Statement 对象 Statement stmt = conn.createStatement(); // 执行 SQL 语句 ResultSet rs = stmt.executeQuery(sql); // 处理结果集 while (rs.next()) { Student student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); student.setGender(rs.getString("gender")); student.setAge(rs.getInt("age")); list.add(student); } // 关闭连接 rs.close(); stmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return list; } } ``` 4. 创建 Servlet 类 Servlet 类是 Web 应用程序的控制器,用于接收和处理 HTTP 请求。我们可以创建一个 `StudentServlet` 类来实现学生信息的增删改查功能。 ```java @WebServlet("/student") public class StudentServlet extends HttpServlet { private StudentDAO dao = new StudentDAO(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String action = req.getParameter("action"); if ("add".equals(action)) { add(req, resp); } else if ("delete".equals(action)) { delete(req, resp); } else if ("update".equals(action)) { update(req, resp); } else { query(req, resp); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } // 增加学生信息 private void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { int id = Integer.parseInt(req.getParameter("id")); String name = req.getParameter("name"); String gender = req.getParameter("gender"); int age = Integer.parseInt(req.getParameter("age")); Student student = new Student(); student.setId(id); student.setName(name); student.setGender(gender); student.setAge(age); dao.add(student); resp.sendRedirect("student"); } // 删除学生信息 private void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { int id = Integer.parseInt(req.getParameter("id")); dao.delete(id); resp.sendRedirect("student"); } // 修改学生信息 private void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { int id = Integer.parseInt(req.getParameter("id")); String name = req.getParameter("name"); String gender = req.getParameter("gender"); int age = Integer.parseInt(req.getParameter("age")); Student student = new Student(); student.setId(id); student.setName(name); student.setGender(gender); student.setAge(age); dao.update(student); resp.sendRedirect("student"); } // 查询学生信息 private void query(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { List<Student> list = dao.query(); req.setAttribute("list", list); req.getRequestDispatcher("student.jsp").forward(req, resp); } } ``` 5. 创建 JSP 页面 JSP(JavaServer Pages)页面用于呈现 HTML 页面,并与 Servlet 进行交互。我们可以创建一个 `student.jsp` 页面来显示学生信息列表,并提供添加、删除和修改学生信息的表单。 ```html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>学生信息管理统</title> </head> <body> <h1>学生信息列表</h1> <table border="1"> <thead> <tr> <th>学生编号</th> <th>学生姓名</th> <th>学生性别</th> <th>学生年龄</th> <th>操作</th> </tr> </thead> <tbody> <c:forEach items="${list}" var="student"> <tr> <td>${student.id}</td> <td>${student.name}</td> <td>${student.gender}</td> <td>${student.age}</td> <td> <a href="student?action=delete&id=${student.id}">删除</a> <a href="update.jsp?id=${student.id}&name=${student.name}&gender=${student.gender}&age=${student.age}">修改</a> </td> </tr> </c:forEach> </tbody> </table> <hr> <h1>添加学生信息</h1> <form action="student?action=add" method="post"> <table> <tr> <td>学生编号:</td> <td><input type="text" name="id" required></td> </tr> <tr> <td>学生姓名:</td> <td><input type="text" name="name" required></td> </tr> <tr> <td>学生性别:</td> <td> <input type="radio" name="gender" value="男" required>男 <input type="radio" name="gender" value="女" required>女 </td> </tr> <tr> <td>学生年龄:</td> <td><input type="text" name="age" required></td> </tr> <tr> <td></td> <td><input type="submit" value="添加"></td> </tr> </table> </form> </body> </html> ``` 6. 部署项目 最后,我们需要将项目部署到 Web 服务器中。可以使用 Tomcat 或者 Jetty 等 Web 服务器来运行项目。 部署完成后,在浏览器中访问 `http://localhost:8080/项目名/student` 即可打开学生信息管理统,并进行增删改查操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值