DDL
创建数据库:
xxxxxxxxxx
CREATE DATABASE 数据库名;
创建Table
xxxxxxxxxx
CREATE TABLE 表名 (
列名 数据类型 [Primary Key | Unique][Not null],
列名 数据类型,
......
列名 数据类型
);
由[]括起来的可以省略, |表示隔开的两项可选其一
- Primary Key:主键约束,每个表只能一个
- Unique:唯一约束(候选键),可以有多个唯一性约束
- Not null:非空约束,该列不允许有空值出现
数据类型:
- char(n), n个字符
- varchar(n), 可边长字符串
- int, 整形
- numeric(p, q):固定精度数字,小数点左边p位,右边p-q位
- real:浮点精度数字,小数点后保留n位
- date:日期(如 2003-09-12)
- time:时间(如 23:15:003)
xxxxxxxxxx
CREATE TABLE Teacher (
Tnum char(11),
Tname varchar(4),
Tage int(2),
Tgender char
);
DML
向表中追加元组
xinsert into 表名 values('','',...); //以默认列追加
insert into 表名(列1,列2,列3...) values('','','',...); //以指定列追加
检索
Select 列名 from 表名 where 检索条件;
select相当于投影,where相当于sigma,为检索条件
示例:检索学生表中所有年龄小于等于19岁的学生的年龄及姓名
xxxxxxxxxx
Select Sage,Sname
From Student WhereSage
Where Sage <= 19;
结果唯一性问题
在Table中要求无重复元组是通过定义Primary Key或Unique来保证的,而在检索结果中要求无重复元组,是通过distinct保留字的使用来实现的。
示例:在选课表中,检索成绩大于80分的所有学
xxxxxxxxxx
Select S#
From SC
Where Score > 80 ;
如果有同学两门课程大于80,那么重复,解决办法:
x
Select DISTINCT S#
From SC
Where Score > 80;
结果排序
DBMS可以对检索结果进行排序,可以升序排列,也可以降序排列
Select语句中结果排序是通过order by子句实现的
xxxxxxxxxx
Order by 列名 asc或desc
示例:按学号由小到大显示所有学生的学号和姓名
xxxxxxxxxx
Select S#, Sname From Student
Order by S# desc;
示例:检索002号课大于80分的所有同学学号并按成绩由高到低顺序显示
xxxxxxxxxx
Select S# From SC
Where C# = '002' and Score > 80
Order By Score desc;
模糊查询
在Select语句中,通过检索条件中引入运算符like来表示
- 含有like运算符的表达式
xxxxxxxxxx
列名 [not] like "字符串"
匹配规则:
- % 匹配零个或多个字符
- - 匹配任意单个字符
- \ 转义字符,用于去掉一些特殊字符的特定含义,使其被作为普通字符看待
示例::检索所有姓张的学生学号及姓名
xxxxxxxxxx
Select S#, Sname From Student
Where Sname Like '张%';
示例::检索不含姓张的学生姓名
Select Sname From Student
Where Sname Not Like '张%';
Comments NOTHING