JSP&Servlet--SQL语句基础
2017-02-10 15:46
489 查看
操作对象\操作方式 | 创建 | 删除 | 修改 |
---|---|---|---|
数据库 | create batabase | drop database | alter table |
表 | create table | drop table | |
视 图 | create view | drop view | |
索 引 | create index | drop index | . |
1.创建数据库
create database EDUC
on primary
(
name=student_data,
filename='D:\sql_data\student_date.mdf',
size=10MB,
maxsize=10MB,
filegrowth=1MB
)
log on{}添加日志文件
2.增加辅助数据文件
use JXGL
go
alter(切换) database JXGL
add file
(
name=JXGL_data,
filename-'d:\sql_data\JXGL_data.ndf',
size=3MB,
filegrowth=10MB
)
go
3.增加日志文件
use JXGL
go
alter database JXGL
add log file
(
name=XS_log,
filename='D:\sql_data\XS_data.ldf',
filegrowth=10%
)
go
4.修改数据库文件
use JXGL
go
alter database JXGL
modify(修改) file
(
name=XS_log,
size=3MB,
maxsize=5MB
)
go
5.删除日志文件
use JXGL
go
alter database JXGL
remove(删除) file XS_log
go
6.修改数据库名称
alter database EDUC
modify name=XJGL
go
7.删除数据库
drop(删除) database EDUC
8.创建学生信息表
CHECK约束
限制输入到一列或多列的值的范围,即一个列的输入内容必须满足CHECK约束的条件,否则数据无法输入。
DEFAULT约束
如果没有为列指定数据,系统将默认值赋给列。
唯一性约束: UNIQUE
use EDUC
go
create table Student_info
(
Sno char(8) primary key,
Sname char(16) not null,
Sbirthday smalldatetime,
Dno char(4),
Classno char(4),
Tel char(12) unique,
foreign key(Dno) references Dept_info(Dno)(设置外键)
)
go
9.在学生表添加家长行
use EDUC
go
alter table Student_info
add Parentname char(8)
go
10.修改学生表家长行
use EDUC
go
alter table Student_info
alter column(列) Parentname char(10)
go
11.删除学生表家长行
use EDUC
go
alter table Student_info
drop column Parentname
go
12.向表中添加记录
(1).use JXGL
go
insert(插入) into S(Sno,Sname,Sage,Sex,Sdept)
values('s10',魏丽晨',18,'女','cs')
go
(2).插入子查询结果
对每一个系,求学生的平均年龄,并把结果存入数据库。
INSERT
INTO Deptage(Sdept, Avgage)
SELECT Sdept, AVG(Sage)
FROM Student
GROUP BY Sdept;
13.将学号为s10课程号为c10的课程成绩改为80分
(1).use JXGL
go
up date SC
set Greade=80
where Sno='s10' and Cno='c10'
go
(2).将信息系所有学生的年龄增加1岁.
UPDATE Student
SET Sage= Sage+1
WHERE Sdept=' IS ';
(3).带子查询的修改语句
将计算机科学系全体学生的成绩置零。
UPDATE SC
SET Grade=0
WHERE 'CS'=
(SELETE Sdept
FROM Student
WHERE Student.Sno = SC.Sno);
(4).删除
删除学号为95020的学生记录。
DELETE
FROM Student
WHERE Sno='95020';
删除所有的学生选课记录。
DELETE
FROM SC;
删除计算机科学系所有学生的选课记录。
DELETE
FROM SC
WHERE 'CS'=
(SELETE Sdept
FROM Student
WHERE Student.Sno=SC.Sno);
14.查询语句
SELECT [ALL\DISTINCT短语的作用范围是所有目标列] <目标名> [, <目标列表达式>] …
FROM <表名或视图名>[, <表名或视图名> ] …
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
[ ORDER BY <列名2> [ ASC\DESC ] ];
SELECT子句: 指定要显示的属性列
FROM子句: 指定查询对象(基本表或视图)
WHERE子句: 指定查询条件
GROUP BY子句: 对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。
HAVING短语: 筛选出只有满足指定条件的组。
ORDER BY子句: 对查询结果表按指定列值的升序或降序排序
(1).查询全体学生的详细记录
SELECT *
FROM Student;
(2).查询全体学生的姓名、出生年月和所在的院系,要求用小写字母表示所有系名
SELECT Sname,2015-Sage As Birthday,LOWER(Sdept) As DEPT
FROM student;
生成Sname,Birthday(2015减年龄),DEPT的表
(3).where子句常用查询条件
=,>=,<=,!=,!>,!<,not 上述字符
between and,not between and,in,not in,like,not like,and,or,not
例如:SELECT Sname, Sdept, Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;
SELECT Sname, Ssex
FROM Student
WHERE Sdept IN ( 'IS', 'MA', 'CS' );
在使用LIKE中:
% (百分号)代表任意长度(可以为0)的字符串。
例: a%b表示以a开头, 以b结尾的任意长度的字符串。如acb, addgb, ab 等都满足该匹配串。
_ (下横线) 代表任意单个字符
例: a_b表示以a开头, 以b结尾的长度为3的任意字符串。 如acb, afb等都满足该匹配串。
查询名字中第2个字为"阳"字的学生的姓名和学号.
SELECT Sname, Sno
FROM Student
WHERE Sname LIKE ‘_ 阳%’;
关于%,_的处理:
查询DB_Design课程的课程号和学分。
SELECT Cno, Ccredit
FROM Course
WHERE Cname LIKE 'DB\_Design'
ESCAPE ‘\’;
ESCAPE ‘\’定义\为转义字符, 它使其后的_不再具有通配符含义, 而作为通常字符。
(4).方法,使用谓词IS NULL或IS NOT NULL
“IS NULL” 不能用“= NULL” 代替
查询缺少成绩的学生的学号和相应的课程号。
SELECT Sno, Cno
FROM SC
WHERE Grade IS NULL;
(5).多重条件查询方法用逻辑运算符AND和OR来联结多个查询条件
AND的优先级高于OR,可以用括号改变优先级,可用来实现多种其他谓词[NOT] IN,[NOT] BETWEEN … AND …
SELECT Sname, Sdept, Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;
可改写为:
SELECT Sname, Sdept, Sage
FROM Student
WHERE Sage>=20 AND Sage<=23;
(6).对查询结果排序
使用ORDER BY子句可以按一个或多个属性列排序:升序: ASC;降序: DESC;缺省值为升序,当排序列含空值时,ASC: 排序列为空值的元组最后显示,DESC: 排序列为空值的元组最先显示
查询全体学生,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。
SELECT *
FROM Student
ORDER BY Sdept, Sage DESC;
(7).
计数
COUNT(*) 统计元组个数
COUNT([DISTINCT\ALL] <列名>)统计一列中值的个数
还有SUM,AVG,MAX,MIN
查询学生总人数。
SELECT COUNT(*)
FROM Student;
查询选修了课程的学生人数。
SELECT COUNT(DISTINCT Sno)
FROM SC;
计算C01号课程的学生平均成绩。
SELECT AVG(Grade)
FROM SC
WHERE Cno= ' C01 ';
查询选修C01号课程的学生最高分数。
SELECT MAX(Grade)
FROM SC
WHER Cno= ' C01 ';
求各个课程号及相应的选课人数.
SELECT Cno as 课程号, COUNT(Sno) as 人数
FROM SC
GROUP BY Cno;
查询选课人数超过1人的课程号.
SELECT Cno as 课程号, COUNT(Sno) as 人数
FROM SC
GRO
b00f
UP BY Cno
HAVING COUNT(Sno)>1
查询有3门以上课程在90分以上的学生的学号及90分以上的课程数。
SELECT Sno, COUNT(*)
FROM SC
WHERE Grade>=90
GROUP BY Sno
HAVING COUNT(*)>=3;
15.连接查询
查询每个学生及其选修课程的情况。
使用自然连接:
SELECT Student.Sno, Sname, Ssex, Sage,
Sdept, Cno, Grade
FROM Student, SC
WHERE Student.Sno=SC.Sno;
16.镶嵌查询
查询与“陈杰”在同一个系学习的学生
SELECT Sno, Sname, Sdept
FROM Student
WHERE Sdept IN
(SELECT Sdept
FROM Student
WHERE Sname= ‘ 陈杰 ’);
17.集合查询
查询计算机科学系的学生或年龄不大于19岁的学生.
SELECT *
FROM Student
WHERE Sdept= 'CS'
UNION
SELECT *
FROM Student
WHERE Sage<=19;
查询计算机科学系的学生与年龄不大于19岁的学生的交集。
查询计算机科学系的学生与年龄不大于19岁的学生的交集。
SELECT *
FROM Student
WHERE Sdept= ‘CS’
INTERSECT
SELECT *
FROM Student
WHERE Sage<=19;
查询计算机科学系的学生与年龄不大于19岁的学生的差集。
SELECT *
FROM Student
WHERE Sdept= 'CS'
EXCEPT
SELECT *
FROM Student
WHERE Sage<=19;
相关文章推荐
- Servlet&jsp基础:第一部分
- Servlet&JSP基础
- Servlet&jsp基础:第三部分
- Head First Servlet&Jsp 学习笔记(一) 一些基础知识
- Servlet&JSP (一)基础
- 【JAVAWEB基础】JSP & Servlet开发讲解
- JSP&Servlet学习笔记(1)Web开发基础理论
- Servlet&JSP学习笔记:Web应用程序基础知识
- Orcle SQL基础命令语句
- jsp&servlet基础知识
- 解决Hibernate 3不支持 "&" 运算的SQL语句
- coreservlet&JSP核心编程总结(1)
- JSP&Servlet核心介绍
- jsp防止sql语句注入
- Web开发中一种用sql语句完成分页的高效率方法,以jsp/asp为例
- Jsp&Servelet 学习笔记-编译一个servlet
- 【Java基础】第十讲 JSP与Servlet
- kshen转Struts+Hibernate模式: jsp->servlet->session bean->DAO->Hibernate->Database 各层面的功能及其实现
- jsp/servlet基础
- 解决Hibernate 3不支持 "&" 运算的SQL语句