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字句中聚合函数是不能作为条件的

行列子集试图==单个基本表导出的视图

查询字句、、字句有的属性是聚合函数查询出来的,所以在定义视图属性的时候属性名必须指明

 

posted @ 2017-06-22 09:53  独头茧  阅读(147)  评论(0)    收藏  举报