sql教案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“sql数据库教案”。
SQL2005教案(40课时)第一节课
sql2005的安装,数据库和表的创建以及基本概念
1.图示说明
2.基本概念
数据库(DB,Database):数据库是长期储存在计算机内,有组织,可共享的大量数据的集合.数据(Data):数据是数据库中存储的基本对象,它是描述事物的符号记录.数据是信息的载体,信息是数据反映出的一种关系.数据库管理系统(DBMS,Database Management System):是数据库的机构,是一种软件,负责数据库中的数据组织,数据操作,数据维护,控制及保护和数据服务等.数据库系统(DBS):包含数据,数据库,数据库管理系统,数据管理员等.3.数据库系统的发展
人工管理阶段
文件系统阶段
数据库系统阶段
4.SQL2005的版本及常用数据库
SQL2005版本:
* SQL Server Enterprise Edition:具有企业级功能的SQL Server版本,适用于
大型企业以及大型数据库或数据仓库的服务器版本。
* SQL Server Standard Edition:具有标准功能的SQL Server版本,适用于一般企业的服务器版本。
* SQL Server Workgroup Edition:自SQL Server 2000开始才有的版本,专为工作组群或部门所设计,适用于较小规模的组织。
* SQL Server Web Edition:自SQL Server 2008开始才有的版本,专为Web 服务器与Web Hosting所设计,功能上较Workgroup Edition少一些。
* SQL Server Expre Edition:免费的SQL Server版本,适用于小型应用程序或是单机型应用程序,但在功能上有设限,如只能使用一颗处理器,以及最大数据库大小为4GB等。请见SQL Server Expre。
目前常用数据库:
开源公司的mysql
微软的mql我们也经常说是SQL SERVER
oracle公司的oracle
SYBASE的powerbuilder
IBM的DB2
BORLAND公司的产品interbase,美国Informix软件公司的Informix
数据库,表的创建
1.创建数据库goods 2.创建3个表
Users表(用户表)
Ware表(商品信息表)
Shopping表(商品销售表)
3.基本概念: 表、行、列、属性、字段、域、实体.4.数据库重命名,表结构的修改.5.SQL(Structured Query Language-结构化查询语言):是由IBM公司在70年代开发的关系型数据库原型System R的一部分,现在已成为关系型数据库系统通用的查询语言,它是数据库系统的通用语言.SQL语言主要包括数据定义,数据控制,数据操纵和数据查询等功能,其中最重要的是数据查询功能.6.数据定义语言DDL(Data Definition Language)创建数据库
create database goods
选择数据库
use goods 创建表
create table users(User_ID int, User_Name nvarchar(50), Email nvarchar(50), Card nvarchar(50), Tell nvarchar(50), Addre nvarchar(50))修改表
--添加一列
alter table users add remark varchar(50)--修改一列的数据类型
alter table users alter column remark varchar--删除一列
alter table users drop column remark 删除表
drop table Users 删除数据库(注意确定一下当前正在使用的数据库)drop database t
第二节课
数据处理语句DML(Data Manipulation Language)1.插入数据
insert into users(user_id,user_name,user_age,email,card,tell, addre)values(1234,'jodon',35,'jodon123@sina.com','1234567890','138888888','美国')注意:
(1)必须用逗号将各个数据分开,字符型数据要用单引号括起来,且into可以省略。(2)INTO子句中没有指定列名,则新插入的记录必须在每个属性列上均有值,且VALUES子句中值的排列顺序要和表中各属性列的排列顺序一致。
(3)将VALUES子句中的值按照INTO子句中指定列名的顺序插入到表中。
(4)对于INTO子句中没有出现的列,则新插入的记录在这些列上将取空值(remark).(5)当插入的数据包含了每一个列,则可以省略列名.如下: Insert into users values(1234,'jodon',35,'jodon123@sina.com','1234567890', '138888888','美国')
2.修改记录
update users set user_age=20 update users set user_age=26 where user_id=1234 update users set user_age=user_age+5
3.删除记录
delete
from users where user_id=4321
delete
from users 4.主键约束
create table users(User_ID int primary key, User_Name nvarchar(50), Email nvarchar(50), Card nvarchar(50), Tell nvarchar(50), Addre nvarchar(50))
5.上机练习
练习课堂内容
建立学生数据库student,并建立四张表:学生基本信息表,课程设置表,选课表,成绩表,并练习所学的SQL语句
第三节课
简单查询语句
1.查询users表中所有记录的所有字段
select *--也可以把所有的列都写上
from users 注释补充:--注释一行 /*……*/注释一段
2.查询所有记录的姓名和年龄
select user_name,user_age from users 别名补充: select user_name as 姓名,user_age as 年龄
from users--其中as可以省略
3.查询年龄超过20的所有记录
select * from users where user_age>20-->=!= =
4.查询年龄在20和50之间的记录
select * from users where user_age>=20 and user_ageselect * from users where user_age between 20 and 50
5.查询年龄大于30或年龄小于20的记录
select * from users where user_age 30 6.查询年龄不等于30的记录
select * from users where user_age 30--!= select * from users where not user_age =30
7.查询年龄不等于20也不等于30的记录 select * from users where user_age!=30 and user_age20
select * from users where not(user_age =30 or user_age=20)
8.查询年龄等于20或者等于30的记录 select * from users where user_age =30 or user_age=20 select * from users where user_age in(20,30)上面7也可以用下面方式实现
select * from users where user_age not in(20,30)—not 也可以放在user_age之前
9.查询users表中有多少条不同的记录
select distinct * from users 10.查询users表中都有哪些年龄的记录
select distinct user_age from users 模糊查询(通配符’_’,’%’)
11.查询所有姓姚且名字为两个字的记录
select * from users where user_name like '姚_'
12.查询所有姓姚的记录
select * from users where user_name like '姚%'
13.查找第二个字为“小”的所有记录
select * from users where user_name like '%小%'
14.查询所有不姓姚的记录
select * from users where user_name like '[^姚]%'
15.查询所有姓姚或姓王的记录
select * from users where user_name like '[姚,王]%'
16.查询所有姓姚且第二个字不为大或小的记录
select * from users where user_name like '姚[^大,小]%' 17.查询姓名不为空的记录 select * from users where user_name is not null 上机练习:
1〉 练习课堂所讲内容
2〉2人一组以student数据库为例互相设计题
第四节课
1.修改users表,添加新列users_sex(性别)
alter table users add user_sex nchar(10)
2.查询出前两条记录
select top 2 * from users
3.查询users表中的所有记录,并按年龄降序或升序排列
select * from users order by user_age asc—asc可以省略不写,默认即为asc
select * from users order by user_age desc
4.查询所有记录,并按年龄升序排列,年龄相同按card降序排列
select * from users order by user_age asc , card desc
5.查询users表中男女各多少人
select count(*)from users group by user_sex
注意:使用分组的时候,查询的列必须出现在聚合函数中或者必须出现在group by 后面,下面的写法是错误的: select user_name,user_sex from users group by user_sex
6.查询users表中男女各多少人,且只有当人数超过3人才输出信息
select count(*)from users group by user_sex having count(*)>3
7.查询users表中最大的年龄是多少
select max(user_age)from users 8.查询users表中最小的年龄是多少
select min(user_age)from users 9.求users表中所有人年龄的总和
select sum(user_age)from users 10.求users表中所有人的平均年龄
select avg(user_age)from users
连接查询
1.笛卡尔积
select * from ware,shopping
2.等值连接
select * from ware,shopping where ware_code=code
select * from ware join shopping on ware_code=code 3.不等值连接
select * where ware_codecode from ware,shopping
select * from ware join shopping on ware_codecode
4.查询所有已销售商品的名称,进价,销售价,销售数量和日期
select name,startprice,saleprice,shopping.amount,shopping.date from ware join shopping on ware_code=code
注意:当连接的表中出现相同列名时,必须加表名来区分
5.查询所有已销售商品的名称,进价,销售价,销售数量和盈利额
select name,startprice,saleprice,shopping.amount, shopping.amount*(saleprice-startprice)盈利 from ware join shopping on ware_code=code
6.查询所有已销售商品且盈利的名称,进价,销售价,销售数量和盈利额 select name,startprice,saleprice,shopping.amount, shopping.amount*(saleprice-startprice)as 盈利 from ware join shopping on ware_code=code where saleprice-startprice>0 7.自然连接(特殊的等值连接,去掉了重复的列)
select ware.*,shopping.amount,shopping.saleprice,shopping.date from ware inner join shopping on ware_code=code 补充:inner join 也叫内连接,inner也可以省略不写,即默认为内连接
第五节课
外连接
1.左外连接
select * from ware left join shopping on ware_code=code
2.右外连接
select * from ware right join shopping on ware_code=code
3.全外连接
select * from ware full join shopping on ware_code=code
4.自连接
查找年龄比姚明的所有记录
select a.* from users as a,users as b where a.user_age查找年龄不比姚明大的所有记录
错误写法: select a.* from users as a,users as b where a.user_ageb.user_name and a.user_age
select * from ware cro join shopping 说明:其实就是笛卡儿积
6.集合查询
并(union)select ware_code,date from ware union select code,date from shopping--注意:所查询的目标列必须相同
交(intersect)select ware_code from ware intersect select code from shopping 差(minus)—说明:SQL2005不支持minus运算,oracle支持
第六节课
复习
以student数据库为例复习前面所讲内容
第七节课
子查询
1.第八节课 第九节课
第十节课 第十一节课
第十二节课 第十三节课
第十四节课 第十五节课
第十六节课 第十七节课
第十八节课 第十九节课
第二十节课