练习用基础SQL语句

本文语句大部分SQL语句来自《数据库系统概论》(第四版)王珊&萨师煊
,是我们上课用的教材,感觉很不错,总结了其中第三章的SQL语句,比较实用,希望对大家有帮助。总结如下,可以用来学习基础的SQL语句。

建立数据库

CREATE DATABASE DB_Student

建立表

CREATE TABLE Student

(Sno CHAR(9) PRIMARY KEY,--主码

Sname CHAR(20) UNIQUE,--唯一值

Ssex CHAR(2),

Sage SMALLINT,

Sdept CHAR(20)

);

CREATE TABLE Course

(Cno CHAR(4) PRIMARY KEY,

Cname char(40),

Cpno CHAR(4),

Ccredit SMALLINT,

FOREIGN KEY (Cpno) REFERENCES Course(Cno)

);

CREATE TABLE SC

(Sno CHAR(9),

Cno CHAR(4),

Grade SMALLINT,

PRIMARY KEY (Sno,Cno),

FOREIGN KEY (Sno) REFERENCES
Student(Sno),--外码

FOREIGN KEY (Cno) REFERENCES
Course(Cno)

);

数据

表操作

alter table Student add S_entrance date--增加列

alter table student alter column Sage int--修改字段类型

alter table course add unique (Cname)--增加唯一性约束

drop table Student--删除基本表

drop table student cascade--删除基本表及相关依赖对象

创建索引

drop index stusname

查询数据

select sno,sname from student

select sname,sno,sdept from student

select sname,2004-sage from student

select sname,‘Year of Birth:‘,2004-sage, lower(sdept) from
student--查询结果第二列是一个算数表达式

select sname name,‘Year of Birth:‘ BIRTH,2004-sage
birthday,LOWER(sdept) department from student--LOWER()小写字母

select sno from sc

select distinct sno from sc--消除重复行

select sno from sc

select all sno from sc

select sname from student where sqept=‘CS‘

--=、>、<、>=、<=、!=、<>、!>、!< 
比较的运算符

select sname,sage from student where sage<20

select distinct sno from sc where sage<20

select sname,sdept,sage from student where sage between 20 and
23

select sname,sdept,sage from student where sage not between 20
and 23

select sname,ssex from student where sdept in
(‘CS‘,‘MA‘,‘IS‘)

select sname,sage from student where sdept not
in(‘CS‘,‘MA‘,‘IS‘)

select * from student where sno like ‘200215121‘

select * from student where sno=‘200215121‘

--字符匹配

--% 任意长度字符串,_ 任意单个字符,ESCAPE 转义字符

select sname,sno,ssex from student where sname like ‘刘%‘

select sname from student where sname like ‘欧阳__‘

select sname,sno from student where sname like ‘__阳%‘

select sname,sno,ssex from student where sname not like ‘刘%‘

select cno,ccredit from course where cname like ‘DB\_design‘
escape ‘\‘

select * from course where cname like ‘DB\_%i__‘ escape ‘\‘

select sno,cno from sc where grade is null --null 空值

select sno,cno from sc where grade is not null

select sname from student where sdept=‘CS‘ and sage<20

select sname,sage from studnet where sdept=‘CS‘ or sdept=‘MA‘ or
sdept=‘IS‘

select sno,grade from sc where cno=‘3‘ order by grade desc --
order by 排序

select * from student order by sdept,sage desc --空值最大

--聚集函数

select count(*) from student -- count() 行数

select count(distinct sno) from sc

select avg(grade) from sc where cno=‘1‘ -- avg() 平均数

select max(grade) from sc where cno=‘1‘ -- max() 最大值

select sum(Ccredit) from sc,course where sno=‘200215012‘ and
sc.cno=course.cno -- sum() 总数

--分组

select cno,count(sno) from sc group by cno

select sno from sc group by sno having count(*) >3 --having
给出选择组的条件

--连接查询

select student. *,SC.* FROM STUDENT,SC where
student.sno=sc.sno

select student.sno,sname,ssex,sage,sdept,cno,grade from
student,sc where student.sno =sc.sno

select first.cno,second.cpno from course first,course second
fwhere first.cpno=second.cno -- 自身连接

select student.sno,sname,ssex,sage,sdept,cno,grade from student
left out join sc in (student.sno=sc.sno)--外连接

--from student left out join sc using (sno)

select student.sno,sname from student,sc where
student.sno=sc.sno and sc.cno=‘2‘ and sc.grade>90

select student.sno,sname,cname,grade from student,sc,course
where student.sno=sc.sno and sc.cno=course.cno

select sname from student where sno in (select sno from sc shere
con=‘2‘)

select sdept from student where sname=‘刘晨‘

select sno.sname,sdept from student where sdept=‘CS‘

--嵌套查询

select sno,sname,sdept from student where sdept in (select sdept
from studnet where sname=‘刘晨‘)

select sno,sname,sdept from student where sdept in (‘CS‘)

select s1.sno,s1.sname,s1.sdept from student s1,student s2 where
s1.sdept =s2.sdept and s2.sname=‘刘晨‘

select sno,sname from student where sno in (select sno from sc
where cno in(select cno from course where cname=‘信息系统‘))

select student.sno,sname from student ,sc,course where
student.sno=sc.sno and sc.cno =course.cno and course.cname=‘信息系统‘

--内查询的结果是一个值,因此可以用=代替in

select sno,sname,sdept from student where sdpet=(se3lect sdept
from studnet where sname=‘刘晨‘)

select sno,sname,sdept from student
where(select sdept from student where sname=‘刘晨‘)=sdept

select sno,cno from sc x where grade >=(select avg(grade)
from sc y where y.sno=x.sno)

select avg(grade) from sc y where y.sno=‘200215121‘

select sno,cno from sc x where grade>=88

select sname,sage from student where sage <ANY (SELECT sage
from student where sdept=‘CS‘) and sdept <>‘CS‘

select sname,sage from student where sage<(select max(sage)
from student where sdept=‘CS‘) and sdept <> ‘CS‘

select sname,sage from student where sage < all (select sage
from student where sdept =‘CS‘)

select sname,sage from student where sage<(select min(sage)
from student where sdept=‘CS‘) and sdept <>‘CS‘

select sname from student where exists(select * from sc where
sno=student.sno and cno=‘1‘)

select sname from student where not exists (select * from sc
where sno=student.sno and cno=‘1‘)

select sno.sname,sdept from student s1 where exists(select *
from studetn s2 where s2.sdept=s1.sdept and s2.sname=‘刘晨‘)

select sname from student where not exists (select * from course
where not exists(select * from sc where sno=student.sno and cno=course.cno))

select distinct sno frome sc scx where not exists (select * from
sc scy where scy.sno=‘200215122‘ and not exists(select * from sc scz where
scz.sno=scx.sno and scz.cno=scy.cno))

http://zxlovenet.cnblogs.com

集合查询

select * from student where sdept =‘CS‘ union select * from
student where sage<=19 --union并操作

select sno from sc where cno=‘1‘ union select sno from sc where
sc where cno=‘2‘

select * from student where sdept=‘cs‘ intersect select * from
student where sage<=19 --intersect 交操作

select * from student where sdept=‘cs‘ and sage<=19

select sno from sc where cno=‘1‘ intersect select sno from sc
where cno=‘2‘

select sno from sc where cno=‘1‘ and sno in (select so from sc
where cno=‘2‘)

select * from student where sdept=‘cs‘ except select * from
student where sage<=‘19‘ --except 差操作

select * from student where sdept =‘cs‘ and sage>19

插入数据

insert into student(sno,sname,ssex,sdept,sage)
values(‘200215128‘,‘陈东‘,‘男‘,‘IS‘,‘18‘)

insert into student values(‘200215126‘,‘张成敏‘,‘男‘,‘18‘,‘cs‘)

insert into sc(sno,cno) values(‘200215128‘,‘1‘)

insert into sc values(‘200215128‘,‘1‘,null)

更新数据

create table dept_age(sdept char(15) avg_agea smallint)

insert into dept_age(sdept,avg_age) select sdept,avg(sage) from
student group by sdept

update student set sage=22 where sno=‘200215121‘

update student set sage=sage+1

update sc set grade=0 where ‘cs‘=(select sdept from student
where student.sno=sc.sno)

update is_student set sname=‘刘晨‘ where sno=‘200215122‘

update student set sname=‘刘晨‘ where sno=‘200212122‘ and
sdept=‘IS‘

delete from student where sno=‘200215128‘

delete from is_student where sno=‘200215129‘

delete from student where sno=‘200215129‘ and sdept=‘IS‘

delete from sc

delete fro sc where ‘cs‘=(select sdept from student where
student.sno=sc.sno)

删除操作

delete from Student where Sno=’200215128’

delete from SC

delete from SC where ‘cs’ = (select Sdept from Student where
Student.Sno=SC.Sno)

创建视图

create view is_student

as

select sno,sname,sage from student where sdpet=‘IS‘

create view is_student

as

select sno,sname,sage from student where sdept=‘IS‘ with check
option

create view is_s1(sno,sname,grade)

as

select student.sno,sname,grade from student,sc where student,sc
where sdept==‘IS‘ and student.sno=sc.sno and sc.cno=‘1‘

http://zxlovenet.cnblogs.com

create view is_s2

as

select sno,sname,grade from is_s1 where grade>=90

create view bt_s(sno,sname,sbirth)

as

select sno,sname,2004-sage from student

create view s_g(sno,gavg)

as

select sno,avg(grade) from sc group by sno

create view f_student(f_sno,name,sex,age,dept)

as

select * from student where ssex=‘女‘

删除视图

drop view is_s1 cascade

select sno,sage from is_student where sage<20

select sno,sage from student where sdept=‘IS‘ and sage<20

select is_sutdent.sno,sname from is_student,sc where
is_student.sno=sc.sno and sc.cno=‘1‘

select * from s_g where gavg>=90

分组

select sno,avg(grade) from sc group by sno

select sno,avg(grade) from sc where avg(grade)>=90 group by
sno

select sno,avg(grade) from sc group by sno having avg(grade)
>=90

作者: 初行

Q Q: 121866673

QQ群: 313686804(验证:博客园)

来源: http://zxlovenet.cnblogs.com
声明:
本文原创发表于博客园,作者为初行本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

存储过程

CREATE PROCEDURE Insert_pass

@pass NVARCHAR(50)

AS

BEGIN

DECLARE @count INT

SELECT @count = (SELECT
Count(*)

FROM   list

WHERE  pass = @pass)

IF @count = 0

BEGIN

INSERT INTO list

(pass)

VALUES     (@pass)

END

END

执行存储过程

call procedure Insert_pass(2011)

删除存储过程

drop procedure Insert_pass()

触发器

CREATE TRIGGER insert_table1

ON table1

FOR INSERT, DELETE

AS

BEGIN

UPDATE table2

SET    count =
(SELECT Count(*)

FROM   table1)

WHERE  id = 1;

END;

http://zxlovenet.cnblogs.com

游标:游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。用户可以通过游标逐一获取记录,并赋值给主变量,交由主语言进一步处理。

PS:以上来源《数据库系统概论》(第四版)王珊&萨师煊

时间: 2024-08-25 18:04:55

练习用基础SQL语句的相关文章

mysql数据库之基础SQL语句/语法

SQL是现在进入互联网工作人们的必须技能之一,下面分享自己觉得很nice的SQL基本语句,从网上找了,觉得很不错,就分享给大家!简要介绍基础语句: 1.说明:创建数据库  Create DATABASE database-name 2.说明:删除数据库  drop database dbname 3.说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7b

python基础---sql语句

数据库系统: 数据库:文件夹 数据表:文件 表记录:一条数据 sql语句规范 sql是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言 <1> 在数据库系统中,SQL语句不区分大小写(建议用大写) .但字符串常量区分大小写.建议命令大写,表名库名小写: <2> SQL语句可单行或多行书写,以";"结尾.关键词不能跨多行或简写. <3> 用空格和缩进来提高语句的

Oracle 基础 —SQL语句优化的途径

一:SQL语句的优化途径 1.选择合适的Oracle优化器 (1).RBO 基于规则进行优化的优化器   --Oracle 10G 后被抛掉 (2).CBO基于成本(CPU 和 内存的占用率)优化的优化器  --优化器使用的模式根据目标而定 CBO 的优化模式: Rule:基于规则 Choose:默认,表或者索引有统计信息,走CBO模式,否则走RBO 模式 First row:表中有统计信息时,以最快方式返回查询的前几行,总体减少响应时间 All row:表中有统计信息时,以最快方式返回表的所有

T-SQL - 记录01_基础sql语句操作

时间:2017-12-25 整理:byzqy 最近详细学习了一下MS SQL Server相关的知识,收获不小,在此记录一下,可能有点零散,后续会慢慢整理! 1.对数据库的一些认识 数据库中只认命令(脚本),所有的可视化操作实质上都是执行的SQL命令. 2.简单复习 1.数据库(要是使用数据库,首先需要打开服务),表(即数据表) 安装了几个数据库实例,就有几个数据库服务(服务器名称,貌似就是数据库实例名称) 2.创建数据库,创建表 3.数据类型 --带var表示不固定长度,不带var表示固定长度

Mysql之基础sql语句

密码修改:mysqladmin -uroot -p(原始密码) password "123"查看用户信息:select user(); 跳过正常登录:mysqld_safe --skip-grant-tables,然后打开另外一个终端然后更改密码:update mysql.user set password=password("") where user="root" and host="localhost";最后刷新: fl

MySQL管理一些基础SQL语句

1 1.进入information_schema 数据库(存放了其他的数据库的信息) 2 use information_schema; 3 4 2.查询所有数据的大小: 5 select concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.tables; 6 7 3.查看指定数据库的大小: 8 比如查看数据库home的大小 9 select concat(round(sum(data_

mysql使用基础 sql语句(一)

命令行输入mysql -u root -p,回车再输入密码,进入mysql. 终端命令以分号作为一条语句的结束,可分为多行输入,只需在最后加上分号即可.如下图: 一.DDL:数据定义语言 Data Definition Language 作用:定义数据库或者表结构的. 操作的对象:数据库或表的结构的. 关键字:CREATE ALTER DROP ①查询数据库: 显示目前有几个库,输入: mysql>SHOW DATABASES; ②创建数据库: 创建一个名称为mydb1的数据库: mysql>

mysql使用基础 sql语句与数据完整性(二)

二.DML:Data Manipulation Language 数据操作语言 作用:操作表中的数据的. 关键:INSERT UPDATE DELETE 注意:日期或字符串.字符要使用单引号引起来. 假设已经存在表user : 1 mysql>CREATE TABLE uesr( 2 id int, 3 username varchar(200), 4 gender varchar(10), 5 birthday date, 6 entry_date date, 7 job varchar(20

mysql 基础sql语句

1.mysqladmin语句:  # 查看mysql版本 mysqladmin version  # 更改root用户密码 mysqladmin -u root -p原密码 password '新密码' # 查看数据库是否可用 mysqladmin -uroot -p ping # 创建数据库 mysqladmin -uroot -p create my_test # 显示服务器上的所有数据库 mysqlshow -uroot -p # 显示数据库my_test下有些什么表: mysqlshow