sql part3
- 模式的定义和删除
create schema <模式名> authorization <用户名>
这是在sql server 或者是oracle 中的一种,而在mysql 中,数据库说到底就是模式
在MySQL中 创建模式(数据库) create database basename
- 模式的删除
drop database basename;(mysql)
drop schema <模式名> <CASCADE|RESTRICT>
cascade 级联 表示在删除模式的时候,会把数据库中的所有东西都删除(删除所有)
restrict 限制 删除数据库的时候会受到限制
- 如何创建表 删除表
create table tablename(约束)----(各大数据库没有什么区别)
在创建表时,若此表同时含有多个主键需要注意的是--对这俩个属性必须作为表级完整性进行定义也就是说
(Sno Char(9) primary key, (error)
Cno char(40) primary key,(error)
)
------正确写法如下
(Sno Char(9) ,
Cno char(40) ,
primary key(Sno,Cno),
)
drop table tablename <cascade|restrict>
可以看出创建(数据库 表)删除(数据库 表)是在语法上类似的
若选择级联 cascade 那么毫无疑问他是没有任何限制条件的,而restrict(限制)则正好与此相反,若表中存在视图,触发器.....
简言之就是若所删表有限制条件,那么使用restrict就会受限制。
- 修改表(修改的表的结构,而非对表数据的修改)
基本语法 alter table tablename()
添加新的属性 (add Attributename Att-Type 完整性约束条件)
删除已经有的属性(drop Attributename)
- 索引的建与于删除
create [unique] [cluster] index <索引名>
on <tablename>(列名 次序)
eg;1 create unique index one
on Student(Sno)//student表中按照学号升序建立唯一的索引
2 create unique index two
on Course(Cno)//course表中按照课程号建立唯一索引
3 create unique index three
on SC(Sno asc.Cno desc)//在sc表中按照学号升序,课程号降序建立唯一索引
4 删除索引 和其他的删除方式一样,使用drop index name
eg; deop index one;
- 数据的查询的一般格式
select ===
from===
where==
group by()==
order by()==
[简单的单表查询]==只涉及一个表的查询
*在查询可以计算的值得时候,输出列可以控制为表达式(计算的表达式)在对Student表中的年龄进行输出是可以 1995-Sage;
*别名的使用 {原名 as 别名}=={原名 别名}
*消除取值重复的行==关键字 distinct 通常情况下适用于查找单列多行的表
例如在sc表中,查找选课同学,可以看到有很多学生选了不止一门,所以此时可以使用这种方法去查询
从此可以看出缺省值为ALL
*谓词 IN 是用来查询属于指定集合的元组==只要是IN里面有的内容,都是被查找的对象
eg: select *
from student
where Sdep in('cs','ma','is');==简言之就是括号里有的都符合查询条件
与之相反的是 not in
*字符匹配==在模糊查询 或是准确查询之中很重要
[1]:准确查找 like
[2]:% 任意长度的字符
[3]:_任意单个字符
[4]:escape<>表示要查询的字符串本身就含有这些通配符
eg: select *
from course
where Cname like 'DB\_%' escape '\'
查询的字符串包含\
[5]:空值的判断条件是 is null 而非 =null
- order by字句
5:视图
基本语法: create view viewname
as
with check option(增删改的时候满足试图定义时的谓语条件)
试图的where字句中聚合函数是不能作为条件的
行列子集试图==单个基本表导出的视图
查询字句、、字句有的属性是聚合函数查询出来的,所以在定义视图属性的时候属性名必须指明

浙公网安备 33010602011771号