您的位置:首页 > 数据库

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​                      .​​
数据类型:char,varchar,int,smallint(短整数),numeric,double,float,date(YYYY-MM-DD),time(HH:MM:SS)
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息