经过上一篇文章的学习,我们已经会简单创作一个表,接下来,我们就看看如何在一个表里面进行简单的增删改查。
目录
3.6查询数学成绩是58或者59或者98或者99的同学及数学成绩
1.增
我们也可以一句一句的添加,即将三个语句分三次写完,结果是一样的。但是明显一次插入比三次插入的速度要快很多,因此我们一般都是一次插入。
2.查
查找语句是SQL语句中最核心,也是最复杂的操作。下面我们一起来看看
2.1全列查找,直接把一个表的所有列和所有的行都查找出来
select * from 表名
这里的*叫做通配符,表示一个表的所有列。但注意的是当我们把一个表里面所有的行和列都查找到时,查到的结果是一个“临时表”,之前我们建立的表是存储在硬盘上的,而此处的这个查询结果临时表,不是在硬盘上,而是在内存中,随着进行了输出之后,数据也就被释放了。
下面就是我们查询表的一列的全部过程:
注意select * from这个操作也是一个危险操作,因为如果我们在生产环境的服务器中执行select * from这个操作,而此时的生产环境里的服务器的数据都是几个TB级别的,此时就意味着MySQL数据库就会疯狂的来读取硬盘数据,瞬间就会把硬盘的IO吃满,但是硬盘的读取速度是存在上限的,尤其是机械硬盘,同时MySQL服务器还会立即返回响应数据,而且返回的数据也是很大很多,此时就会把网卡的带宽吃满,一旦服务器的硬盘和网络被吃满,此时数据库服务器就很难对对其它用户的请求作出回应。
2.2指定列查询
2.3指定查询字段为表达式
希望查询结果中的语文成绩比真实的多10分
2.4查询每个同学的总分
2.5查询字段指定别名
相当于是给查询结果的临时表指定新的列名:
2.6针对查询结果的去重
2.7排序
针对数学成绩来升序排序:
select 列名.....from 表名 order by 列名 asc/desc;
上面的asc如果不写,默认是升序排序。但是像数据库的查询结果,如果不指定排序,此时查询结果的顺序是不可预期的。因此不省略最好。
如果排序的时候,如果有null空置,则默认为最小的。
排序也可以按照表达式来
排序的时候还可以通过order by来指定多个列进行排序:
这里就是先按照数学排序,如果数学成绩相同,再按照语文排序,因为多个列排序的时候,是有明确优先级的。
3.selset中的条件查询
这就是select后面加上一个where字句,后面跟上一个具体的筛选条件:
在进行条件查询之前,我们先来看看运算符
注意:where()这里的条件中不能使用别名
3.1查询英语成绩 < 60的同学
3.2查询语文成绩 > 英语成绩的人
3.3查询总分 < 200的同学
3.4and和or
表达式里面如果同时有 and 和 or,先计算and,再计算or,如果想要打破优先级,就需要加()
3.5查询语文成绩
3.6查询数学成绩是58或者59或者98或者99的同学及数学成绩
3.7like的使用
%表示任意个任意字符,只要对方的字符串符合你此处描述的一个形式就可以
3.8分页查询
SQL中可以通过limit来实现分页查询
limit搭配条件以及order by等操作一起来使用
查找出总成绩前三名的同学姓名:
4.改
update是改的关键字,注意:update是会修改数据库服务器上的原始数据的
4.1将孙悟空的数学成绩改为80
4.2将总成绩倒数前3的三位同学的数学成绩加上30分
先找出总成绩倒数前三名的同学:
再显示出这三位同学的数学成绩
最后给三位同学的成绩加30
因此,我们加1试试:
4.3将所有同学语文成绩变为原来的一半
5.删
delete from 表名 where 条件
表示删除某个表
6.数据库的约束
约束就是再数据库在使用的时候,对于里面能够存的数据提出的要求和限制
6.1not null
表示某列不能存储null值,也可以给任意个列来设置
6.2unique
表示数据唯一,保证每列的每行必须有唯一的值,重复的话也会报错
6.3Default
约定一个默认值,即MySQL中的默认值是null
我们也可以将默认值改为我们需要的值
6.4primary key
主键约束,是not null和 unique的结合,相当于数据的唯一身份标识,类似于身份证号码,有助于帮助我们快速的找到表中一个特定的记录
6.4.1自增主键的用法
关于自增主键的用法,最典型的就是直接使用1,2,3,4整数递增的方式来进行表示,MySQL里面对于这种递增的主键,是有内置支持的,称为自增主键
当设置好自增主键之后,此时插入的记录就可以不指定自增主键的值了,直接使用null来表示,交给MySQL自行分配即可。
自增主键也是可以指定id的,一旦指定之后,后续插入的数据就都是从指定的id往后开始的,之前的值就不能用了。