针对MySQL的学习,我整理了一些学习过程中的重点内容,希望给到大家帮助。
目录
MySQL概述及数据存储
SQL是一种编程语言,运行在MySQL上。MySQL作为一种关系型数据库,对于数据存储,在格式上有很严格的要求。
MySQL是一个客户端服务器结构的程序。
![](https://i-blog.csdnimg.cn/blog_migrate/2c4bfd841b36434e0fa74e66ef847c03.jpeg)
服务器是存储数据的本体,数据则存储在主机硬盘上。
存储器分为内存和外存,内存相当于电脑常说的16G内存,外存就是硬盘、软盘、光盘、U盘这一类。
![](https://i-blog.csdnimg.cn/blog_migrate/049d2e4e7387b32e758eea84e1fc4bfd.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/9c0669456d3801a94f2ffa35a2387684.jpeg)
MySQL基础操作
1.创建数据库
create database 数据库名;
2.查看所有数据库
show databases;
3.使用数据库
use 数据库名;
4.删除数据库
drop database 数据库名;
5.查看表结构
desc 表名;
6.创建表
create table 表名(字段1 类型1,字段2 类型2, ...);
7.删除表
drop table 表名;
数据库常用类型
数值类型
int , bigint (整型)
float(M,D)(单精度,M指定长度,D指定小数位数)
double(M,D)
decimal(M,D)(M,D最大值+2)
字符串类型
varchar(size)(可变长度字符串)
text(长文本数据)mediumtext(中等长度文本数据)blob(二进制形式的长文本数据 )
日期类型
datetime(范围从1000到9999年,不会进行时区的检索及转换)
timestamp(范围从1970到2038年,自动检索当前时区并进行转换)
CRUD(增查改删)—— 基础
插入数据:insert
insert into 表名 values (值,值,值);
insert into 表名(字段,字段,字段...) values (值,值,值),(值,值,值),(值,值,值)...;
insert into values (值,值,值),(值,值,值),(值,值,值)...;
基础查询:select
(1)全列查询
select * from 表名;
(2)指定列查询
select 列名 from 表名;
(3)查询列为表达式(进行列与列简单计算)
select 列名,列名+10 from 表名;
#进行表达式查询时,查询结果是一个“临时表”,不写入硬盘当中(select不修改硬盘内容)。
(4)给查询结果列指定别名
select 列名,列名 + 列名 + 列名 as 别名 from 表名;
(5)查询时对列进行去重
select distinct 列名 from 表名;
(6)针对查询结果进行排序
asc 为升序(从小到大),desc 为降序(从大到小),默认为 asc。
select 列名 from 表名 order by 列名; //默认升序(asc)
select 列名 from 表名 order by 列名 desc; //降序
# 没有 order by 的查询,返回顺序未定义,不能依赖。
# 排序中有 NULL,视为最小值。
(7)针对表达式/别名进行排序
select 列名 + 列名 + 列名 as 别名 from 表名 order by 别名;
条件查询:where
根据查询结果,按行进行筛选。通过where指定一个条件(关系,逻辑运算符),查询出的结果带入条件中,看条件真假。条件为真的行保留(作为临时表结果),为假的舍弃。
# where 条件可以使用表达式,但不能使用别名。
# and 的优先级高于or,在同时使用时,需要使用( )包裹优先执行的部分。
分页查询:limit
(1)从 0 开始,筛选 n 条结果
select ... from 表名 where ... order by ... limit n;
(2)从 s 开始,筛选 n 条结果
select ... from 表名 where ... order by ... limit s,n;
(3)从 s 开始,筛选 n 条结果(比第二种用法更明确,建议使用)
select ... from 表名 where ... order by ... limit n offset s;
修改:update
update 表名 set 列名 = 值 where 条件;
update 表名 set 表达式 where 条件;
update 表名 set 列名 = 值,列名 = 值, ... where 条件;
# 修改操作就是在改服务器的硬盘数据了。
update可以搭配 where,order by 和 limit 等子句进行使用
# update属于危险操作。
删除:delete
delete from 表名 where 条件;
# 修改服务器硬盘,持久化删除。
delete也可以搭配 where,order by 和 limit 等子句进行使用。