一、基本建表命令
首先输入show databases; 查看所有数据库
选择数据库use 数据库名;
然后你就可以在这个数据库上做一些你喜欢做的事情了=_=。
例如:查看数据库test中的关系;
1、 建表
create table 表名(
属性名1 属性类型,
属性名2 属性类型
);
2、 描述关系R的属性
desc R;
3、 删除关系R
drop table R;
4、 给关系R添加和删除属性phone
Alter table R add phone Char(11);
Alter table R drop phone;
5、 添加默认值
在相应的属性后面加上default 默认值
Alter table R add phone char(11) default ‘unlisted’;
6、 主键、外键和约束
略,知识点略多,需要的时候可以直接查
二、查询语句
基本格式:Select *或者属性列表
From 关系
Where 条件
1、 连接符 ’||’
‘foo’||’bar’等价于’foobar’,在sql中字符串是用单引号实现的。
2、 字符串模式匹配
s like p ,p是模式
(1)‘_’ 表示任意一个字符
(2)‘%’ 表示任意字符
例如:where title like ‘%’’s%’; 表示标题中有格式 ’s的电影,其中,两个连续的单引号表示一个单引号,而不是字符串的结束符。
3、 转义字符escape
s like ‘x%%x%’ escape ‘x’;
表示x后面的%或者_都表示本身的字符,所以这个命令是查询以%开头和结尾的所有字符串。
4、 日期和时间
日期 Date ‘1948-05-14’;
时间 Time ’15:00:02.5’;
组合Timestamp ‘1948-05-14 12:00:00’;
5、 输出排序order by
order by位于where子句和任何其它子句之后,默认为升序(ASC),改成降序可以加上保留字DESC。
例如:select *
From R
Order by A+B desc;
6、 条件表达式
(1) Exists R,当且仅当R非空时为真
(2) s IN R为真,当且仅当s等于R中的某一个值。
(3) s > ALL R为真,当且仅当s大于R中的任何一个值。>可以换成五个比较符中的任意一个。
(4) s > ANY R为真,当且仅当s至少大于R中的某个值。
7、 连接表达式
(1) 交叉连接(笛卡尔积):R1 cross join R2;
(2) θ连接:R1 join R2 on where <条件>;
(3) 自然连接:R1 natural join R2;
(4) 外连接:R1 natural full/right/left join R2;
8、 聚集操作符
Sum(求和),avg(求平均),min(求最小值),max(求最大值),求个数(count);
例如:select avg(netWorth)
select count(*) from R;
9、 消除重复
在想消除的属性前面加上distinct
例如select distinct name;
selectcount(distinct starName) from R;
10、分组
在where后面加上group by 条件可以根据条件先进行分组。在分组中可以通过having 语句来筛选分组之后需要的组。
例如:选择在1930年之前做过电影的制片人制作的所有电影的总长度。
select name,sum(length)
from MovieExec, Movie
where producer = cert
group by name
having min(year) < 1930;
三、数据库更新
1、 插入
(1) 插入单一数据:
Insert into R(A1,A2,…,An) values(v1,v2,…,vn);
(2) 导入数据,以’,’隔开,’\r\n’分行:
load data infile 'E:\\数据库-本科\\first_data\\data_employees.txt'into table 关系名 fields terminated by ',' lines terminated by '\r\n';
2、 删除
Delete from R where <条件>;
3、 更新
Update R set <新值赋值> where <条件>;
例如:把满足条件的名字前面加上pres
update MovieExec
Set name =’pres’||name
Where cert# in (select presC# fromstudio);