数据库的操作:
Create database 数据库名;
显示所有数据库:
show databases;
使用数据库:
use 数据库名;
创建一个表:
create table 表名(
rNo char(10) primary key, //创建一个属性并设置为主键
rName char(6) not null, //创建一个非空属性集
rAge char(10));
设置一个主键:
rnoCHAR(5) PRIMARYKEY
设置多个主键:
CREATETABLE borrow(
rno CHAR(5),
bisbn CHAR(11),
startdate DATE,
enddate DATE,
fine NUMERIC(7,2) ,
PRIMARYKEY(rno,bisbn,startdate)
);
实现完整性约束:
CONSTRAINT bookkey PRIMARY KEY(bisbn)
设置NOT NULL 与 DEFAULT
设置该属性不为空
bauthorCHAR(40) NOTNULL
属性默认为0
Fine Numeric(7, 12) Default 0;
Check检查约束:
也称为检查约束,它对属性列取值进行约束
rgenderCHAR(2) CHECK(rgenderIN('男','女')),
rage INT CHECK(rage BETWEEN 0 AND 100),
bcategoryCHAR(2) CHECK(bcategoryIN('理','工','文'))
UNIQUE约束
根据 UNIQUE 约束,表中的任何两行都不能有相同的列值。另外,主键也强制实施唯一性,但主键不允许 NULL 作为一个唯一值。
删除一个表:
DROP TABLE 表名
查看数据表结构:
DESC 表名
在表中插入一行数据:
insert into 表名 values(属性1, 属性2, ....), (属性1, 属性2, ....)
对一个表进行更改:
alter table 表名 add gender char(1); //增加一列属性
alter table 表名 drop column gender; //删除一个属性
alter table 表名 add gender char(1) default 'M'; //该属性全部默认为M
删除完整性约束:
ALTER TABLE borrow DROP CONSTRAINT borrowreader //删除一个属性
修改属性列的取值:
Select操作
select * from 表名
select * from 表名 where gender = 'm' //依据条件筛选
select * from 表名 where gender = 'm' order by age //根据年龄进行排序
双条件查询:
求最大值和平均值:
select avg(rage) as avgAge from reader; //求年龄的平均值
select max(rage) as avgAge from reader; //求年龄的最大值
寻找所有并集
select distinct(属性名) from reader //寻找一个属性名中所有不同的字段
表达式型查询:
select rname, 2014-rage from reader; //得到一个表达式型的查询结果
不出现重复值的查询:
select distinct rno from reader; //此时出现的distinct不会重复
用逻辑表达式对结果进行查询:
SELECTrno,rname
FROM reader
WHERE rspecialty='CP' OR rspecialty='IF' ANDrgender='男';
查询不属于两个属性间的内容
select * from reader where rage not between 16 and 20;
查询两个日期间的内容:
SELECTrno ,bisbn
FROM borrow
WHERE startdate BETWEEN '2013/5/1' AND '2013/10/31';
IN查询:
SELECTrname,rage
FROM reader
WHERE rspecialtyIN('CP', 'IF', 'MA');
设置一个外键:
FOREIGN KEY(rno) REFERENCES reader(rno) //设置两个表中的外键约束
删除一个外码
ALTERTABLE borrow DROP CONSTRAINT borrowReader;
修改一列的属性:
alter table borrow alter column XXX 属性;
聚集函数:
查询一共有多少人,并把该属性列描述为people
SELECTCOUNT(DISTINCT rno) people
FROM borrow;
查询大于16岁的一共有多少人
select count(*) amount from reader where rage > 16;
查询平均年龄:
select AVG(rage) aveAge from reader;
根据年龄降序排列:
select * from reader order by rage;
分组查询:
select count(salary), degreed_need from job group by degreed_need;
//查询每个分组的元素数量
HAVING语句的使用: 用于将聚集函数整合进WHERE
SELECTrno, SUM(fine) fee
FROM borrow
GROUP BY rno HAVING SUM(fine)>3;
//一个会员可能会有多次转账记录 分组后将每个转账记录分组后筛选
涉及空值的查询:
select * from reader where rphone is NULL;