1.char(n): 固定长度的字符串,输入字符串长度不足时自动在后面加空格。
2.varchar(n):可变长度的字符串,用户指定最大输入长度。不会自动在字符串后添加空格。
3.numeric(p,d):定点数,精度有用户指定。这个数有p为数字,其中d为数字在小数点后边。整数位数+d <= p
4.real, double precision : 浮点数与双精度浮点数,精度与机器有关。
5.float(n):精度至少为n位的浮点数。
6.主键(primary key)属性必须非空且唯一。
7.外键(foreign key)声明表示关系中任意元组在属性上的取值必须对应于关系S中某元组在主键属性上的取值。
8.将查询的结果去重,使用关键字distinct,例如:select distinct name from user。
9.默认查询的结果是不去重的,显示指定不去重,使用关键字all,例如:select all name from user。
10.select 子句还可以带含有 - + * / 运算符的算术表达式,例如:select name salary * 1.5 from user。查询出的工资(salary)是原来的1.5倍。但是不会改变数据库中的salary。并不导致对user关系的任何改变。
11.sql允许在where子句中使用逻辑连词and,or 和 not。逻辑连词的运算对象可以是包含运算符<, <=, >, >=, = 和 <> 的表达式。sql允许使用比较运算符比较字符串,算数表达式,以及特殊类型,例如日期。
二,字符串运算
1.串联:|| ,将字符串转换为大写:upper(String),将字符串转换为小写:lower(String),去掉字符串后面的空格:trim(String)
2.like
2.1. %:匹配任意字符串。'Intro%':匹配以Intro打头的字符串。'%Intro%':匹配任何包含Intro的字符串。
2.2. _ (下划线):匹配任意一个字符。'_ _ _':匹配只含三个字符的字符串。'_ _ _ %':匹配至少含三个字符的字符串。
2.3. 例子:找出所在建筑名称中包含字串'JIM'的所有系名,select dept_name from department where building like '%JIM%';
3.在like运算中使用escape关键字来定义转义字符。例如: like 'ab\%cd%' escape '\',转义字符为'\', like语句的含意是匹配所有以ab%cd打头的字符串。like 'ab\\cd%' escape'\',转义字符为'\',like语句的含义是匹配所有以'ab\cd'打头的字符串。
4.not like 比较运算符搜寻不匹配项。
5.similar to 比like 更强大。他的模式定义语法类似于UNIX中的正则表达式。
三,排列元组的显示次序
1.order by 子句让查询结果中元组按排列顺序显示。默认使用升序。 要说明排序顺序可以使用asc(升序),desc(降序)。例如 select * from tableA order by salary desc, name asc。
2.SQL允许用记号(v1,v2,...vk) 来表示一个分量值分别为v1,v2,..,vk的n维元组。在元组上可以使用比较运算符,
按字典顺序进行比较运算。例如:(a1,a2)<= (b1,b2)在a1 <= b1 且 a2 <= b2 时为真。 where 条件语句
where instructor.ID = teachers.ID and dept_name = 'Biology' 可以换成
where (instructor.ID,dept_name)= (teachers.ID,'Biology')
四,并,交,差运算
1. 并运算 union自动去重,需要保留重复,使用union all。例如:找出在2009年或者在2010年开办的课程。
(select courseName from section where year = 2009)union (select courseName from section where year = 2010)
2. 交运算 intersect 自动去重,需要保留重复,使用intersect all。例如:找出在2009年和2010年同时开办的课程。
(select courseName from section where year = 2009)intersect(select courseName from section where year = 2010)
3.差运算 except自动去重,需要保留重复,使用except all。例如:找出在2009年开办但不在2010年开办的课程。
(select courseName from section where year = 2009)except(select courseName from section where year = 2010)