数据库第三章(SQL)

目录

1.SQL语言

索引


1.SQL语言

sql语言是个非过程性语言

sql的特点

1.综合统一,把增删查改都统一了起来

2.高度非过程化,不关心过程

3.面向集合的操作方式

sql基本语法

数据库第三章(SQL)_第1张图片drop是删除表

delete是删除表的某个元组  

安全方面:grant授权   revoke收回权力

基本表

存储文件

视图view:是个虚表,是从一个表中或者多个表中导入出来的表,并不存真正的数据 ,修改视图就相当于修改基本表

数据库第三章(SQL)_第2张图片

索引index:是为了加快查询速度的 

模式

定义模式

create schema "s-t" authorization wang;

数据库第三章(SQL)_第3张图片

 删除模式
drop schema s-t cascade/restrcit          

cascade连坐删除

restrict 限制删除,先把子孙的表都删完

基本表

 create table studnet(Sno int,primary key ,Sname varchar(50) UNIQUE);数据库第三章(SQL)_第4张图片

如何建立外键约束? 

 create table studnet(Sno int,primary key ,Sname varchar(50) UNIQUE,Grade int

       foreign key(Grade) references SC(Grade)                 );

数据库第三章(SQL)_第5张图片

修改表结构,注意是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中它是去重

条件查询

数据库第三章(SQL)_第6张图片

数据库第三章(SQL)_第7张图片

in (A,B,C)

like模糊匹配 通配符%和_  %标识任意[0,∞]长度  _标识[1,1]长度 

查询排序

order by  grade desc/asc

desc 下降 descend

asc上升 ascend

聚合函数

数据库第三章(SQL)_第8张图片

 聚合函数通常和group by协助 进行分组 

数据库第三章(SQL)_第9张图片

先根据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数据库第三章(SQL)_第10张图片

 group by 用having来筛选不用where

多表连接

多表查询如果直接用

select * from Student,SC直接笛卡尔积的话会产生许多无效数据。需要用where筛选

select * from Student,SC where Student.Sno=SC.sno但是这样的话得到的表的字段有一个学号是重复的数据库第三章(SQL)_第11张图片 

就需要改一下 把select* 改为 

数据库第三章(SQL)_第12张图片

结果

数据库第三章(SQL)_第13张图片

嵌套查询

查询选秀了2号课程的学生的姓名

分析:只根据2号课程从SC表查不出来姓名 需要联合Student表和SC表

select Sname from Student where Sno in ( select Sno from SC where Cno=2);

存在exists

这个比较难理解 需要转好几圈,建议看视频学

集合查询

并集Union

交集 intersect

差集 except

数据库第三章(SQL)_第14张图片

数据插入/更新

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;
数据库第三章(SQL)_第15张图片

数据库第三章(SQL)_第16张图片

with check option 防止用户乱操作 

并不是所有视图都能够更新,只有包含主键的行列子集视图才能更新

删除视图

drop view view_name cascade

视图的作用

数据库第三章(SQL)_第17张图片

 

你可能感兴趣的:(数据库,数据库,sql,mysql)