1、什么是SQL?
结构化查询语言。
2、数据库模式?
3、SQL的数据定义功能包括?
4、一个模式下通常包括?
一个模式下通 常包括多个表、视图和索引等数据库对象。
5、如何定义模式?
create schema 模式名 authorization 用户名;
为用户WANG定义一一个学生-课程模式S-T。
create schema authorization wang;
该语句没有指定<模式名>,所以<模式名>隐含为用户名WANG。
6、为用户ZHANG创建一个模式 TEST,并且在其中定义一个表 TAB1。
create schema test authorization zhang
create table(
col1 smallint,
col2 int,
col3 char(20),
);
7、如何删除模式?
drop schema zhang cascade;//cascade,删除模式并且将所有数据库对象全部删除。
8、如何定义表?
create table 表名
(
列名 类型 [列级完整性约束条件],
列名 类型,
[表级完整性约束条件]
);
9、学生表?
create table Student
(
Sno char(9) primary key,
Sname char(20) unique,
ssex char(2),
sage smallint,
sdept char(20)
);
10、课程表
create table Course
(
Cno char(4) primary key,
cname char(4) not null,
ccredit smallint,
Cpno char(4),
foreign key(cpno) references Course(Cno)
);
11、外码,用于一个表中的一列,指向另外一个表中的另外一列。
单个
create table t1
(
foreign key (id) references t2(id);
);
多个,起名字,会更加容易方便删除。
create table t1
(
constraint fk foreign key (id1,id2)
references t2(id1,id2);
ON DELETE CASCADE–级联删除
);
创建表后,增加外键约束。
alter table t1
add foreign key(id)
references t2(id);
删除有命名外键。
ALTER TABLE t1
DROP FOREIGN KEY fk;
12、选课表SC
create table sc
(
sno char(9),
cno char(4),
grade smallint,
primary key (sno,cno),//表级完整性定义
foreign key(sno) references student(sno),
);
13、用的比较多的数据类型有哪些?
int 长整数4字节
smallint 短整数2字节
varchar 最大长度为n的变长字符串
char 长度为n的定长字符串
date 日期,年月日
time 事件,时分秒
timestamp 时间戳
14、修改基本表
向Student表增加“入学时间”列,其数据类型为日期型。
alter table Student
add entran date;
将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
alter table Student
alter column sage int;
增加课程名称必须取唯一值的约束条件。
ALTER TABLE Course ADD UNIQUE(Cname);
15、如何删除表?
drop table 表名 restrict | cascade;
16、有 restrict,cascade 有什么区别?
有 restrict,如果有视图、触发器则不能被删除。
有cascade ,如果有视图,则一起删除。
17、视图?
create view 视图名
as
select ssss;
18、如何建立索引?
Student表按学号升序建唯一索引,
create unique index stuno on student(Sno);
SC表按学号升序和课程号降序建唯一索引。
create unique index scno on sc(sno asc,cno desc);
create unique index 名 on 表(列);
19、修改索引、删除
alter index oldname rename to newname;
drop index name;
—————————————————————————————————————————————————————————————
3.4节数据查询
1、select语句一般格式?
select distinct col
from table
where
group by col1 having
order by col2 asc desc;
含义是?
从table表中找出符合where条件的元组,
如果有group by,则按照col1,进行分组,相同的为一组。如果有having,则符合条件才分为一组。
如果有order by,则按照col2,进行排序。
2、查询某列、查询全部。
select col
from t1;
select *
from t2;
select sage-2000
from stu;
3、确定集合
select sname
from table
where dept in (‘cs’);
4、字符匹配 like
什么是通配符?%_
%?代表任意长度。
a%b什么意思?
a开头,b结尾的字符串。
?代表单个字符。
查询所有姓刘的学生的姓名、学号和性别。
找欧阳,三个字的?
select name,no,sex
from stu
where name like ‘刘%’;
where name like '欧阳’
5、转义字符 \
查询DB_Design 课程的课程号和学分
select cno,ccredit
from course
where col like ‘DB_Design’ escape’’’;
6、聚集函数
7、
查询学生总人数。
select count(*)
from stu;
查询选修了课程的学生人数。
一个人可以选修多门课程。
select count(distinct sno)
from sc;
计算选修了1号课程的学生的平均成绩。
select avg(grade)
from sc
where sno = ‘1’;
8、聚集函数不能用于where子句,能够用于select/group by 中的having。
9、求各个课程号及相应的选课人数。
select cno, count(sno)
from c
group by cno;
10、查询选修了三门以上课程的学生学号。
select sno
from stu
group by sno
having count(*)>3;
这里先用GROUP BY子句按Sno进行分组,再用聚集函数COUNT对每一组 计数;HAVING短语给出了选择组的条件,只有满足条件( 即元组个数>3,表示此学生选修的课超过3门)的组才会被选出来。
11、where和having 的区别?
where作用于基本表和试图。
having作用于组(group by),从中选出满足条件的组。
12、查询平均成绩大于等于90分的学生学号和平均成绩。
select sno,avg(grade)
from stu
group by sno
having avg(grade)>90;
13、左外连接?
在内连接的基础上,还包含左表中所有不符合条件的数据行,并在其中的右表列填写NULL。关键字:left join … on。
——————
按照数据库机考复习:
1、mysql如何引入数据?
source e:\db2019\tradedbsq2.txt
2、展示数据库
show databases;
3、创建表
create table t1
(
sno char(10),
sname char(20),
ssex char(4),
phone char(11),
primary key(sno)
);
4、如何插入数据?
insert into t1 valuse();
5、如何添加外键?
alter table t1
add constraint fk foregin key()
references t2();
6、添加外键时,需要注意什么?
有一个必须是另外一个的主键。
7、级联更新、级联删除
alter table Products
add constraint fkk181110065 foreign key(CategoryID)
references Categories(CategoryID)
on update cascade
on delete cascade;
8、如何建立视图?
create view v1
as
正常查询
8、join t1 on 怎么用的?
求两个的交集。
select col
from t1
inner join t2
on t1.key=t2.key
where 条件;
——————