天天看点

大数据学习之路——MySQL基础(一)——MySQL的基础知识与常见操作

一、存储引擎

1.含义

存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。

2.常用存储引擎

(1)InnoDB(MySQL5.1版本之后的版本默认的是InnoDB):优势在于提供了良好的事务处理,崩溃修复能力和并发控制,缺点是读写效率较差,占用数据空间较大。

1.事务处理、回滚、崩溃修复能力和多版本并发控制

2.自增长(可以思考索引的数据结构)

3.外键(多张表之间的关联,如主表和从表)

(2)MyISAM(MySQL5.1版本之前默认):优势在于占用空间小,处理速度快,缺点是不支持事物完整性和并发性

(3)Memory:数据全部放在内存中,采用哈希索引;但如果内存出现异常就会影响数据,重启或关机所有数据都会消失,因此其生命周期很短,一般是一次性的。

二、数据类型

主要为数值型、字符串、和日期时间类型

(1)数值型:

整数型:

int:正常大小的整数,可以带正负号,范围为-2147483648-2147483647;约-21亿到+21亿

tinyint(非常小的整数,可以带正负号,范围为-128-127;不带符号的话为0-255),

bigint(非常大的整数,可以带正负号)

小数型:

float(m,d):m参数为显示长度,d参数为小数位数,默认为10,2

double(m,d):m参数为显示长度,d参数为小数位数,默认为16,4。双精度浮点小数(比float范围更广);

(2)字符串类型:

普通类型:

char(m):m表示字符串的固定长度:例如:sex char(1) , 表示的是性别这列的字符串只能为1个,如男/女

varchar(m):m表示字符串的可变长度,例如:cname varchar(5), 表示的则是cname列的字符串的长度最长不能超过5

###注意:

char:如果固定长度为5,但是只输入了一个字符,会浪费空间,整体匹配时查询效率高。适合于有固定长度的字符串

vchar:可以节省空间,但是逐个字符匹配,查询效率较低。所以适合在一定范围内有变化长度的字符串。

可变类型:字段的最大长度约为6万5千

text:存储较大的文本数据。

blob:用来存储较大的二进制数据,例如图像等数据,不用指定长度或大小

###两者的区别:在排序或比较上存储的数据时,blob大小写敏感,而text不用区分大小写。

特俗类型:set,enmu

(3)日期和时间类型:

date:日期 yyyy-mm--dd 如:2021-01-01;

datetime:具体时间 yyyyy-mm-dd hh:mm:ss 如:2021-01-01 12:00:00

timestamp:时间戳 yyyymmddhhmmss 如: 20210101120000

year(m): m表示显示长度,默认为4,

三、常见的数据操作方式:

(1)CRUD:增删改查

C:create

R:retrieve --获取/查询

U:update

D:delete

(2)按照功能分类:

新建数据库——新建表——插入数据/更新数据/删除数据

下面的几类SQL语句就是帮组我们完成上面个的流程

DDL:(data definition languate:数据定语言)

创建库

创建表

修改表结构

DML:(data Manipulation languate:数据操纵言)

DQL:(data Query languate:数据查询言)

DCL:(data Controll languate:数据控制言)

四、SQL语句操作

1.SQL通用语法:

(1)SQL可以单行或者多行书写,以分号结尾(Sqlyog中可以不用写分号);

(2)可以使用空格和缩进来增加语句的可读性

(3)MySQL中不区分大小写,一般是关键字大写,数据库名、表名、列名小写。有代码美化功能

2.注释方式

(1)单行注释:

--注释内容

或者: #注释内容 (#为MySQL数据库中特有的单行注释方式)

(2)多行注释:

/*

注释内容

*/

3.对数据库的常见操作

(1)创建数据库

create database 数据库名称;

create database 数据库名称 character set utf8; (大写的字符虽然运行稍微快一点,但小写清晰。)

(2)切换数据库:

use 数据库名称;

(3)查看当前所使用的数据库

select database();

查看mysql中所有的数据库

show databases;

查看数据库定义信息(创建时的信息)

show create database 数据库名称;

(4)删除数据库和表

drop database 数据库名称;

(5)修改数据库

alter databse 数据库名称 character set utf8;

4.对表的常见操作

一个数据库中可以有多个表,表中又有字段,在建表的时候需要定义好字段(指定字段属性——字段类型+字段长度)

(1)创建表:

create table 表名(

字段名称1 字段类型(长度),

字段名称1 字段类型(长度) 注意最后一列不要加逗号

);

快速创建一个类似表(只复制表结构:字段,结构一样)

cteate table 新表名 like 旧表名;

(2)删除表

drop table 表名称;

drop table if exists 表名称;

(3)查看表结构

desc 表名称;

(4)修改表:

修改表名:

rename table 旧表名 to 新表名

添加字段:

alter table 表名 add 字段名称 字段类型(长度)

修改字段类型或长度

alter table 表名 modify 字段名称 字段类型(长度)

修改字段名称及类型

alter table 表名 change 旧字段名称 新字段名称 新字段类型(长度)

删除字段

alter table 表名 drop 字段名称;

5.DML进行数据的增删改操作

(1)插入数据

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

<1>插入部分字段需要加字段名,且值得部分按照字段名得顺序(对应);

<2>插入全部字段时,可以不用写字段名

(2)修改数据:

update 表名 set 字段1(列)=‘修改后的数据’ where 字段二(定位到具体行)=‘’

update 表名 set 字段1(列)=‘修改后的数据’ (将这一列全部进行修改)

(3)删除数据

delete from 表名 (删除整个表格,效率较低)

delete from 表名 where 字段名 =(<,>) 条件

truncate table 表名 当一个表中条数较多,又要做删除动作时delete会比较慢,可以选择这个方法。

6.DQL查询语句

select *(表示所有字段) from 表名;

select 字段名 from 表名;

select 字段名1 as 指定别名1,字段名2 as 指定别名2 from 表名;(as可以省略)

去重操作

select distinct 字段名 from 表名

select 字段名*2 from 表名 (对字段直接进行操作)

条件查询

select 字段名 from 表名 where 条件表达式

先取出表中的每条数据,满足条件的返回,不满足的就过滤掉。

7.运算符:

(1)逻辑运算符:

and: 同时成立

or: 成立一个即可

not: 不成立

(2)通配符:

%:代表所有字符

-:代表一个字符

select * from mytable where ename like \'%张%\';

select * from mytable where ename like \'-张%\'; 表示第二个字为张的

(3)比较运算符:

大于、小于、等于、大于等于等。其中不等于为:!= 或则可以写<>

beteween A and B :在A和B之间

in(集合):只要判定在里面就会显示

is null: 查询某一列为null

like \'%张%\':模糊查询

例如:

where age>=18;

where age between 18 and 30;

where name in(\'张三\',\'李四\')

where name like \'%王%\' name中有王这个字

where name like \'王%\' name中有王字开头

where name like \'%王\' name中有王字结尾

where name is nul;

where name is not nul; 不是空值

例如:

select * from mytable m where m.age>=18;