数据存储:关系型数据管理系统1

本文转载自:http://www.cnblogs.com/gardenofsjw/p/6917495.html


关系型数据管理系统1:SQL概念与操作
目录

一、几个定义注意点

二、SQL操作语句备忘录

三、补充SQL约束

(本文是中科院陈世敏老师课程学习笔记) 

-----------------------------------------

一、几个定义注意点

1.Scheme 对表格每一列的类型声明,只需定义一次 

  eg:新建表格定义scheme

  create table Student (
    ID integer,
    Name varchar(20),
    GPA float
  );

2.Primary Key 可以包含多个属性,即可以是一个组合附补充1-SQL约束

  eg.定义TakeCourse以(Course ID,Student ID)为主键:

  primary key (CourseID,StudentID),

3.Foreign Key引用其他表格,创建联系,跟指针作用类似,所以不能指向空

  eg.TakeCourse引用CourseID

  foreign key(CourseID) reference Course(ID)

                             

 


二、SQL操作语句备忘录

  快记:操作类型 + 表格 + 操作具体信息

1.插入 王小二同学入学信息

  insert into Student Values(12345,‘王小一’,1994/1/1,M,‘计算机科学’,2016);

2.更新 王小二同学入学时候名字被错打为‘王小一’,要求更改

  update Student set Name='王小二' where ID = 12345;

3.删除 王小二同学退学创业 and 王小二同学带领全体计算机科学系同学创业退学

  delete from Student where ID=12345;

  delete from Student where Major=''计算机科学";

4.关系运算一 选择selection 类似过滤

  select * from Student where Major = '计算机科学';

  where 后面条件可以用and or组合

5.关系运算二 投影projection 类似维度切片

  select colum1 ,colum2 from table;

  投影+选择

  select colum1 ,colum2 from table where Major =‘计算机科学’;

6.关系运算三 连接join

  equi-join等值连接,最简单的连接方式

  select Student.Name.Course.Name from Student    ->选出来输出的属性

  from Student,Course,TakeCourse              ->使用的多个表

  where TakeCourse.CourseID = Course.ID  ->连接条件1

  and TakeCourse.StudentID = Student.ID; ->连接条件2 

                     

 

7.简单统计一 分组统计 group by

  select Major ,Count(*)   ->输出  Count(*)统计函数 

  from Student                ->表格

  where Year >= 2013 and Year <= 2014 ->条件

  group by Major;            ->先执行分组操作,输出时候在组内执行Count(*)统计组内所有个数

  SQL定义的统计函数 count.sum.avg.max.min

8.简单统计二  having在group by上选择

  select Major ,Count(*) as cnt   ->输出

  from Student                ->表格

  where Year >= 2013 and Year <= 2014 ->条件

  group by Major             ->分组与操依据属性

  having cnt>=2;            ->count执行完给输出命名cnt

9.简单统计三 Order by排序

  select Major ,Count(*) as cnt   ->输出

  from Student                ->表格

  where Year >= 2013 and Year <= 2014 ->条件

  group by Major             ->分组与操依据属性

  order by cnt desc;        ->desc(descending减少) asc(ascending增加)  

 

补充附录:

 1.SQL约束

(1)主键约束(primary key constraint) 唯一、不能为空

(2)唯一性约束(unique constraint 不能有重复值

(3)外键约束(foreign key constraint) 与另外一张表数据类型要一致,而且必须先定义主表,再定义从表。即:必须先存在这个人,      你才能打电话找他。

(4)检查约束(check constraint) 值需要满足一定范围或要求。

(5)还有不为空约束、默认约束,看名字就知道作用,所有约束都是为为了"规范"表格。

  这里有详解:http://www.runoob.com/sql/sql-constraints.html

猜你喜欢

转载自blog.csdn.net/qq_40981790/article/details/80674159