目录
1.SQL语言
索引
1.SQL语言
sql语言是个非过程性语言
sql的特点
1.综合统一,把增删查改都统一了起来
2.高度非过程化,不关心过程
3.面向集合的操作方式
sql基本语法
drop是删除表
delete是删除表的某个元组
安全方面:grant授权 revoke收回权力
基本表
存储文件
视图view:是个虚表,是从一个表中或者多个表中导入出来的表,并不存真正的数据 ,修改视图就相当于修改基本表
索引index:是为了加快查询速度的
模式
定义模式
create schema "s-t" authorization wang;
删除模式
drop schema s-t cascade/restrcitcascade连坐删除
restrict 限制删除,先把子孙的表都删完
基本表
create table studnet(Sno int,primary key ,Sname varchar(50) UNIQUE);
如何建立外键约束?
create table studnet(Sno int,primary key ,Sname varchar(50) UNIQUE,Grade int
foreign key(Grade) references SC(Grade) );
修改表结构,注意是Mysql
给表加个字段Sage
alter table Student add column Sage int;
改变表的字段类型
alter table Student modify column Sage varchar(20);
删除表
当表被引用的时候不能普通删除,只能级联删除。引用包括,不能有视图,不能有触发器,不能有存储过程或函数。
索引
索引的创建和删除
CREATE INDEX index_name
ON table_name (column1, column2, ...)
create unique index SuoYin on Student(Sno,....);
修改索引的名字
alter index SuoYin rename to sy;
数据字典:数据字典是DBMS中的系统表,它记录了数据库中的所有定义信息
查询语句
distinct 独一无二的
在SQL中它是去重
条件查询
in (A,B,C)
like模糊匹配 通配符%和_ %标识任意[0,∞]长度 _标识[1,1]长度
查询排序
order by grade desc/asc
desc 下降 descend
asc上升 ascend
聚合函数
聚合函数通常和group by协助 进行分组
先根据Cno分组 在count数每个Cno里的Sno的个数(也就是学生个数)
select Cno ,count(Sno) from sc group by Cno;
关键词 每个,各个
如果在对分组的进行条件筛选用having
selct Cno ,count(Sno) from sc group by Cno having Count(Sno)>30
group by 用having来筛选不用where
多表连接
多表查询如果直接用
select * from Student,SC直接笛卡尔积的话会产生许多无效数据。需要用where筛选
select * from Student,SC where Student.Sno=SC.sno但是这样的话得到的表的字段有一个学号是重复的
就需要改一下 把select* 改为
结果
嵌套查询
查询选秀了2号课程的学生的姓名
分析:只根据2号课程从SC表查不出来姓名 需要联合Student表和SC表
select Sname from Student where Sno in ( select Sno from SC where Cno=2);
存在exists
这个比较难理解 需要转好几圈,建议看视频学
集合查询
并集Union
交集 intersect
差集 except
数据插入/更新
insert into Student (key,...)values (value,....) 键值对要对应上
更新
update Student set sage=80 where sno='123456';
update student set sage=sage+1;
删除元组
delete from student where sname='zhangsan'
视图
视图是个虚表 ,它真正的数据还是在基本表上的
create view ShiTu Student as
select column1,column2 from student Where .....;
eg:
CREATE VIEW view_students AS
SELECT name, age
FROM students
WHERE age >= 18;with check option 防止用户乱操作
并不是所有视图都能够更新,只有包含主键的行列子集视图才能更新
删除视图
drop view view_name cascade
视图的作用