数据库从零学起

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

idusernamepassdatenow
1mysqlroot2018-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属性加到查询结果中了

扩展:

  • 增加修改字段(在表已经建成的情况下)
// 在数据表customer添加新字段name并设置数据类型
alter table customer add name varchar(10);
// 在数据表customer更新字段image字段为字符串类型,并设置默认值为NULL;
alter  table customer modify  column image  varchar(50) DEFAULT NULL;
  • 查看表所有字段的数据类型
show create table 表名;
  • 导出数据表(命令行中)
mysqldump -u root -p 数据库 表 > dump.sql     // 回车后输入密码即可
  • 导入数据表
//mysql中,也就是在 “mysql > ”环境下
mysql> use database;
mysql> source 文件绝对路径;    // 对于window下的路径,注意把其中的“\”换成“/”,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值