目录
[1.增(insert into ...values)](#1.增(insert into ...values))
[2.查(select ... from)](#2.查(select ... from))
++注:代码关键字均以小写方式呈现,****[]****代表可加,也可不加。++
一、数据库整体操作
1.数据库
1.1创建:
create database [if not exists] 数据库名 [character set utf8mb4];
方框只是标识,不是代码关键字,可加可不加,如果加入if not exists,
存在这个数据库,不会报错。
character set utf8mb4 是用来规定数据库的字符集的,一般使用utf8在中国。
但带MySQL中不能直接支持utf8这套字符集,不过它提供了一个方法可以支持,也就是utf8mb4.
1.2显示:
show databases;
1.3删除
drop database 数据库名;
2.数据表
2.1创建
创建一个表之前,要先创建一个数据库,然后选中(use)这个数据库:
use 数据库名;
表的创建:
create table 表名称(数据名 类型 , 数据名 类型 .......);
MySQL数据类型详解:【MySQL中的基本数据类型 - CSDN 】
在创建表时,可一个字段增加注释(单引号,双引号都可以):
comment '注释'
2.2显示
desc 表的名字;
desc是descrip(形容,修饰)的缩写
如果还要显示刚才增加的注释,还可以这样:
show full columns from 表名;
如果要显示一个数据库中含有那些表可以这样做:
show tables;
2.3修改(很少用,但也要了解)
修改表的操作实际上是很少发生的,而且本身这个操作也非常危险。
这部分内容可以当做一个字典,收藏起来,偶尔用到的话,回来看一下就会了,很简单。
对数据表的修改一般都是使用关键字"alter":
2.4删除
drop table [if exists] 表名;
二、表中数据的增删查改(CURD)
CRUD : Create(增), Retrieve(查),Update(改),Delete(删)
注:
下面的这些操作会创建临时表,不会对数据库中的数据进行修改。
1.增(insert into ...values)
insert into 表名 values(数据1,数据2,.....);
数据插入的类型和顺序一定要和先前定义好的字段匹配。
也可以批量插入:
建议批量插入,因为每一次操作数据库,都是客户端和服务器直接的交互,网络开销会很大,如果频繁收取和发送信息。
insert into 表名 values(数据1,数据2,.....),(数据1,数据2,.....),....;
也可以只插入某几个字段,其他字段不插入,但是没有插入的数据默认为null
insert into student(字段1,字段2,...) values(数据1,数据2),(数据1,数据2),....;
英语和数学默认为null:
2.查(select ... from)
2.1全列查询
select * from 表名
*是通配符,代表查询所有列。
也可以只查询某几列:
select 字段名,字段名,... from 表名;
查询时也可以对列名进行重命名(不会修改数据库中的数据):
select 字段1 [as] 新名字,字段二 [as] 新名字,... from 表名;
注释:
as关键字(改名字)的使用包括但不限于全列查询,只是把他放到了这一小节来讲。
2.2条件查询(where)
可以设置查询条件:
select ... from 表名 where 条件;
例:
条件只要是一个表达式就可以,运算符不局限于'<''>':
|-------------------|------------------------------------------|
| 运算符 | 说明 |
| < ,<=, >, >= | 小于,小于等于,大于,大于等于 |
| = | 等于(null不安全)表格后面具体解释 |
| <=> | 等于(null安全) |
| !=, <> | 不等于 |
| between A0 and A1 | 范围匹配,[A0, A1],如果 A0 <= 值 <= A1,返回 真 |
| in (OPTION, ...) | 如果是 OPTION 中的任意一个,返回 真 |
| is null | 是null |
| is not null | 不是null |
| like | 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字 符 |
| and | 并且:和C语言中的&&一样(MySQL也支持使用&&,不过推荐用and) |
| or | 或者:和C语言中的||一样(MySQL也支持使用||,不过推荐用or) |
| not | 取反:和C语言中的!一样(MySQL也支持使用!,不过推荐用not) |
以上运算符必须和where搭配来使用。
null不安全,如图:
老六的数学成绩是null
使用'='来查询数学成绩为null的学生会怎么样?
有点反常识,没有找到!这就是等号(=)的null不安全
对于'<=>'则不同:
<=>能够查询得到值为null的数据,这就是null安全
注:
条件查询可以和其他查询方式搭配使用!
2.3分页查询(limit)
用法一:
从 0 开始,筛选 s 条结果
select ... from 表名 [where...] [order by...] limit S
S是要筛选出的行数
举例子,如图:
我们想从第五个人,也就是李四开始查询学生,那么可以:
注意:行号,是从0开始算的!
用法二:
从 s 开始,筛选 n 条结果
select .... from 表名 [where...] [order by...] limit s,n;
用法三
从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
select ... from 表名 [where...] [order by...] limit n offset s;
如图为例:
3.改(update...set)
update 表名 set 列名=要更改的值 [where...] [order by...] [limit...];
注意:MySQL中不支持update和offset连用!
如图:
把老六的语文成绩改成83,英语成绩改成33:
把总成绩最低的同学的语文成绩加10分:
注意:order by默认排列升序,如果要排列降序使用 order by desc
desc是下降(descend)的缩写,不要和desc*ribe(查看表的属性字段)搞混*
3.删(delete)
注意:
delete不同于上面的操作,它会真实删除数据库中的数据,操作一定要谨慎,不然进入按分钟计费的阶段了,
这可得不偿失!
delete from 表名 [where...] [order by...] [limit...]
++如果表名后面不存在任何查找条件,那么会把表中所有数据删除,但是这个表仍然存在,变成一个空表。++
如果没有where等条件,会直接把表中的所有数据删除: