数据库从零学起

本篇博客如果没有特别说明的话,皆以下面的表为例

id username pass datenow
1 mysql root 2018-01-10

建表(使用sql命令实现)

新建查询 --> 输入以下格式的代码:

create table customer(
	id int not null primary key,
	username char(20) not null,
	pass char(20) default "123456",
	datenow date null
	)character set utf8;

详细介绍一下上面的代码,第一行就是创建一个名字为customer的表,下面的四行都是在设定表的字段(也就是每列所代表的属性)首先是属性名,例如id,username这些。下来是属性的类型,也就是int,char这些,char(20)代表该属性的存储上限为20个字符。下来的null和not null 可写可不写,是用来规定该字段是否必须填写,至于再后面的primary key是用来设置关键字的,也可以另起一行写primary key (要作为关键字的字段名称,如id)也是可以起到相同的效果的,default是用来设置默认值的,最后代码是设置编码格式的,如果不设置成utf8的话可能会存在不能输入中文的情况。

增加记录(增加行)

基本语法格式:

insert into 表名(字段1, 字段2values (字段1的值,字段2的值)

在具体使用时的样子:

insert into customer(id, username, pass, datenow) 
values (1, "lisa", "66666", now())

格式就是这个格式,只需要把values和你要添加的字段名称对应起来就行了,值得注意的是可以不用全部字段都写上,但是如果表中指定not null 的话,想要添加一条记录就必须要把这些字段加上。

删除记录(删除行)

基本语法格式:

delete from 表名 [where + 条件];

具体使用:

delete from customer where id = 1;

更改记录

语法格式:

update 表名 set 字段名 = 属性值 [where + 条件]

具体使用:

update customer set id = 666, pass = "521" where id = 1;

查询记录(重点)

语法格式:

select 字段名 from 表名 [where + 条件]
select id, pass from customer where id = 1;

1.对结果排序:如果要使查询结果排序,可以在where条件之后加上order by 字段名 [asc/desc],asc代表升序,desc代表降序,默认为asc,如果该字段有多个值相同的话,还可以指定在值相同的情况下优先按照其他某个字段排序,也是默认升序。
举个例子:

select * from customer where id > 1 order by id desc, datenow desc

这个就是按照降序排列id,在id都相同的情况下按照datenow降序排列
2.分页查询:一次查询的结果可能很长,可以把结果分成若干页,也就是限制在一个页面显示的结果数量
用法:在where条件之后设置,LIMIT 3 OFFSET 0;这就代表对结果集从0号记录开始,最多取3条。注意SQL记录集的索引从0开始。
3.聚合查询: 如果我们要统计查询结果的条数,总不可能一条一条去数,所以就用到了聚合函数
上例子:

select count(*)  num from customer where id > 1;

这就是统计id > 1的结果的条数,num的存在是给得出的值起了一个别名。
除此之外,还有一些常用的聚合函数:

函数 说明
SUM 计算某一列的合计值,该列必须为数值类型
AVG 计算某一列的平均值,该列必须为数值类型
MAX 计算某一列的最大值
MIN 计算某一列的最小值

当然我们也可以分组聚合查询,比如说我在一张名为students表中存放了学生的班级,性别,成绩等信息,我要查询每个班的平均成绩,可以用以下查询:

select 班级, avg(成绩) avge from students group by 性别

其他的小用法也有很多,不再细说。
4.连接查询: 连接查询是一种多表查询。就是先确定一个主表作为结果集,然后,把其他表的行有选择性地“连接”在主表结果集上
例子:假设有students表,有name, id, score, class_id字段,有class表,有class_id, class_name字段

select student.id, student.name, student.class_id, class.class_name 
from student
inner join class
on class.id = student.id

这样就能把class表中的classs_name依照class_id属性加到查询结果中了

扩展:

增加字段(在表已经建成的情况下)

alter table customer add sex char(20) null;

猜你喜欢

转载自blog.csdn.net/aqa2037299560/article/details/87471053