基本模式定义+

SQL支持许多不同的完整性约束。

  not null, 在该属性上不允许空值

  primary key 是否是是主码,主码必须非空且唯一

  foreign key

  check(P),P是谓词条件

Create Table instructor (ID char(5),

name varchar(20) not null,

            dept_name varchar(20),

            salary numeric(8,2),

            primary key(ID),

            check(salary>=0));

Create Table instructor (ID char(5), primary key,

name varchar(20),

            dept_name varchar(20),

            salary numeric(8,2),

            check(salary>=0));

在SQL server2000中,与WHERE子句不同的是:它能为空

Drop table instructor

Alter Table instructor add birthday,增加新的属性

Alter Table instructor drop A,去掉某些属性,不用某个属性就好,误操作引起

Alter table instructor modify(ID char(10));

SQL是具有影响力的商用市场化的关系查询语言

  数据定义语言(DDL)

  数据操纵语言(DML)

  数据控制语言(DCL)

SQL查询基本结构

  select

  from

  where

去除重复: select distinct dept_name from instructor

选择所有属性:select * from instructor;

where子句

  select name frome instructor where dept_name ='Comp.Sci' and salary>70000;

逻辑连接符:and or not <= >= ><

from 子句

找出关系instructor 和teachers 的笛卡尔积

select *

from instructor, teaches;

例子:找出Computer Science系的教师名称和课程名称

instructor(ID,name,dept_name,salary)  teaches(ID,course_id,sec_id,semester,year)

select name,course_id

from instructor, teaches

where instructor.ID = teachers.ID and instructor.dept_name = 'Comp. Sci';

【笛卡尔积】

在数学中,两个集合XY的笛卡儿积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。
假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。A表示所有声母的集合,B表示所有韵母的集合,那么A和B的笛卡尔积就为所有可能的汉字全拼。
 
设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB.
笛卡尔积的符号化为:
A×B={(x,y)|x∈A∧y∈B}
例如,A={a,b}, B={0,1,2},则
A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}

运算性质

1.对任意集合A,根据定义有
AxΦ =Φ , Φ xA=Φ
2.一般地说,笛卡尔积运算不满足交换律,即
AxB≠BxA(当A≠Φ ∧B≠Φ∧A≠B时)
3.笛卡尔积运算不满足结合律,即
(AxB)xC≠Ax(BxC)(当A≠Φ ∧B≠Φ∧C≠Φ时)
4.笛卡尔积运算对并和交运算满足分配律,即
Ax(B∪C)=(AxB)∪(AxC)
(B∪C)xA=(BxA)∪(CxA)
Ax(B∩C)=(AxB)∩(AxC)
(B∩C)xA=(BxA)∩(CxA)

SQL重命名机制

  old name as new name

    select name as instructor_name

【E】找出所有教师名,他们的工资至少比Biology系的某一个教师的工资要高:

select distinct T.name

from instructor as T,instructor as S

where T.salary >S.salary and S.dept_name = 'Biology';

字符串运算

  like的模式匹配

  百分号(%)匹配字符串通配符

  下划线(_)匹配任意一个字符

转义字符

  ‘ab\%cd%’

排序

  按照字母顺序列出在Physics习的所有老师

  select name

  from instructor

  where dept_name = 'Physics'

  order by name;//按照name字段进行排序;

升序&降序(ordered by salary desc, name asc)//如果工资相同,那么按照name字母进行升序。

集合运算

except,剔除掉

聚集函数

  平均值(avg)

  最小值(min)

  最大值(Max)

  综合(sum)

分组聚集

  group by 分组概念

  having对分组再进行选择

select avg(salary) as avg_salary

from instructor

where dept_name = 'Comp.Sci';

找出每个系的平均工资

select dept_name avg(salary) as avg_salary

from instructor

group by dept_name;

找出平均工资超过42000美元的系

select dept_name avg(salary) as avg_salary

from instructor

group by dept_name

having avg(salary) > 42000

空值

select name from instructor where salary is null;

空值的存在给聚集运算带来了麻烦,聚集函数根据以下原则处理空值

除了count *外,所有的函数都忽略空值

【数据库(一)】SQL语言-表定义、查询的更多相关文章

  1. Sybase数据库常用sql语言

    Sybase数据库常用sql语言 1,表备份: --table_name1:需要备份的表; table_name2:备份后的表 SELECT * into table_name2 from table ...

  2. 数据库系统学习(七)-SQL语言之复杂查询与视图

    第七讲 SQL语言之复杂查询与视图 基本内容 子查询 IN与NOT IN谓词子查询 判断某一表达式的值是否在子查询的结构中 非相关子查询 相关子查询 theta some /theta all谓词子查 ...

  3. MySQL入门——MySQL数据库和SQL语言

    MySQL入门——MySQL数据库和SQL语言 摘要:本文主要了解了MySQL关系型数据库和SQL语言的基本知识. MySQL数据库 简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB ...

  4. 架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO

    ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口,它显露了 Microsoft ...

  5. 避免SQL全表模糊查询查询 下载文件时-修改文件名字

    避免SQL全表模糊查询查询   1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like %...%(全模糊)这样的条件,是无法使用索引的,全表扫描自然效 ...

  6. 架构-数据库访问-SQL语言进行连接数据库服务器-OLE:OLE

    ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器-OLE:OLE Object Linking and Embedding,对象连接与嵌入,简称OLE技术.OLE 不仅是桌面应用程序集 ...

  7. SQL多表连接查询

    SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际 ...

  8. 图解SQL多表关联查询

      图解SQL多表关联查询     网上看了篇文章关于多表连接的,感觉很好,记录下来,以便日后自己学习  内连接     左连接     右连接       全外连接   1. 查两表关联列相等的数据 ...

  9. 架构-数据库访问-SQL语言进行连接数据库服务器:SQL语言进行连接数据库服务器

    ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器:SQL语言进行连接数据库服务器 数据库和应用服务器的连接. 在基于三层构架的信息系统开发中,应用服务器要利用SQL语言进行连接数据库服 ...

随机推荐

  1. activiti5/6 系列之--流程复用技术 callActivity

    定义:当流程执行到callActivity,会创建一个新分支,它是到达调用节点的流程的分支. 这个分支会用来执行子流程,默认创建并行子流程,就像一个普通的流程. 上级流程会等待子流程完成,然后才会继续 ...

  2. D8 双连通分量

    记得有个梗那一天,zw学生zzh大佬说逃不掉的路变成a不掉的题哈哈哈哈: 分离的路径: BZOJ 1718POJ 3177LUOGU 286: 思路:在同一个边双连通分量中,任意两点都有至少两条独立路 ...

  3. Guitar Pro 添加装饰音

    在使用Guitar Pro进行乐谱弹唱或者自己作曲时,我们经常会碰到在乐谱上出现一些装饰音,那么大家肯定会有问题了,装饰音是什么?如何使用Guitar Pro来添加装饰音呢? 装饰音是用来装饰旋律的临 ...

  4. JS求任意字符串中出现最多的字符以及出现的次数

    我爱撸码,撸码使我感到快乐!大家好,我是Counter本节讲讲如何利用JS来查找任意给定的字符串,求字符串中出现次数最多的字符,出现的次数.直接上代码了,该注释的都注释啦.非常轻松加愉快.效果如下: ...

  5. 缓存算法(FIFO 、LRU、LFU三种算法的区别)

    FIFO算法 FIFO 算法是一种比较容易实现的算法.它的思想是先进先出(FIFO,队列),这是最简单.最公平的一种思想,即如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小.空间满的时 ...

  6. vue-cli 构建项目在IE中无法运行解决方式(build之后可运行)

    IE浏览器(只考虑IE11,更低版本我没考虑)运行时报 Promise未定义的错误 解决办法: 1. 安装babel-polyfill (1.)  npm install babel-polyfill ...

  7. PIL PNG格式通道问题的解决方法

    近来研究图片的剪切拼接,用到PIL,在打开PNG格式保存为JPEG格式的图片发现报错: import os from PIL import Image im = Image.open(r'E:\wor ...

  8. Globecom 2018 投稿过程

    Globecom 2018 投稿过程 IEEE 通信领域旗舰型会议 Globecom 2018 将于近日提交 Camera-Ready 稿件.回顾今年投稿过程,虽麻烦不断但也不算特别曲折,本篇随笔记录 ...

  9. Ubuntu 停止 mydesktop 服务

    systemctl list-unit-files | grep mydesktop systemctl disable mydesktop.service

  10. Caused by: java.lang.NoClassDefFoundError: com/google/common/base/MoreObjects

    环境:jdk1.8 开发工具:IDEA 说明:今天在做springboot集成swagger2的时候,在启动程序的时候,报错 报错信息: Error starting ApplicationConte ...