Mysql

Mysql

4.1 概述

Mysql 是一种关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言:结构化查询语言
SQL)进行管理。支持实时的增删改查。拥有体积小,速度快,成本低等特点。
Sql 语句不区分大小写
SQL 是一种面向集合的编程语言

4.2 存储引擎

Innodb 支持事务,查询没有 myisam
索引:b+树,上层
Myisam 查询快,但不支持事务

4.3 索引

Mysql 目前主要有以下 4 种索引类型
FullText
全文索引,目前只有 myisam 引擎支持,在 charvarchartext 上可以创建全文索引
Hash
Hash 索引可以一次定位,适合等值和 in 条件下进行查询,对于范围查询、排序效率不高
Btree
Mysql 默认是这种索引类型,它将索引值按一定算法存入二叉树中,每次查询都从入口开始依次遍历
node 获取 leaf
Rtree
Rtree mysql 中很少使用,仅支持 geometry 类型,相对于 btreertreee 的优势在于范围查找。

4.4 对数据库操作

1.使用默认的字符集与校对创建数据库

create database 数据库名;

2. 可以指定数据库字符

create database 数据库名 CHARACTER set gbk

3 查看当前数据库服务器下所有数据库

show databases;

4 查看创建数据库的语句

show create database 数据库名;

5 删除数据库

drop database 数据库名

6.切换数据库

use 数据库名称

7 查看当前所使用的事数据库

select database();

4.5 对表操作

4.5.1 常用数据类型

Int 整型;

double 浮点型;

decimal 浮点型(用于保存准确精度值);

varchar(可变长度字符串);

date 日期类型,格式为 yyyy-MM-dd

time 时间类型,格式为 hhmmss

时间戳类型,格式为 yyyy-MM-dd hhmmss

char 与 varchar 区别:char 是一个定长字符串,指定长度后不会随着内容的不足而改变

varchar 是一个可变长度字符串,它根据信息自动改变长度。(只在字符串长度小于指定长度的情况
下)

4.5.2 约束

1. 主键约束 primary keyprimary keyid
2. 唯一约束 某一列的值不为重复可以使用唯一约束 unique
3. 非空约束 not null
4. 默认值约束 default
5. 外键约束

4.5.3 对表

1. 创建表
Create table 表名(
字段 1 数据类型 约束 1 约束 2,
字段 2 约束类型 约束,
) character set 字符集(utf8);
2. 查看表
查看表结构:desc 表名;
查看当前数据库下的表:show tables;
查看表的字符编码集(表的创建语句):show create table 表名;
3. 修改表(很少使用)
add 添加列 alter table 表名 add 列名 类型;
modify--修改列的类型 alter table 表名 modify 列名 类型;
drop --删除列 alter table 表名 drop 列名.
change--修改列名称 alter table 表名 change 旧列名 新列名 类型;
4. 删除表
drop table 表名
truncate table 表名
区别:前者有条件,自增主键不初始化
后者不可回退,速度快,相当于新建一个空表

4.5.4 对单表数据

4.5.4.1insert 插入操作
插入所有列值:insert into 表名(列名 1,列名 2,..)values(列值 1,列值 2,..);
表名后括号内是所有字段名称
插入部分列值:insert into 表名(列名 1,列名 2,..)values(列值 1,列值 2,..)
表名后括号内是部分字段名称
不指定列名:insert into 表名 values(列值 1,列值 2,..);
没有给出要插入的列,表示插入所有列
值的个数必须是该表的列的个数
值的顺序必须与创建表时给出的列的顺序相同
4.5.4.1.1注意事项
1. 插入的数据应与字段的数据类型相同
2. 数据的大小应在该列的长度范围内
3. values 中列出的数据位置必须与被加入的排列位置相对应
4. 除了数值类型外,其他字段类型的值必须使用引号引起。
5. 如果要插入空值,可以不写字段,或者插入 null
6. 注意:对于自动增长的列在操作时,直接插入 null 值即可
4.5.4.2Update 更新操作
用于修改表中的数据
Update 表名 set 列名 = 新值,列名 = 新值, .. where 列名 = 某值;
4.5.4.3Delete 删除操作
Delete 用于删除表中的行(数据)
删除某行 Delete from 表名 where 列名 = ;
删除所有行 delete from table 表名 或 delete * from table 表名;
删除表中数据 truncate table 表名;
4.5.4.4Selete 基本查询
格式:
SELECT(选择)
字段,常量,变量运算,函数
FROM (数据)
WHERE 条件[筛选过滤]
查询指定列:select 字段 1,字段 2,.. from 表名;
查询所有列:select * from 表名;
注意:“*”在练习学习过程中可以使用,在实际开发中不常使用
4.5.4.4.1Distinct
去掉重复记录 select distinct 字段 from 表名;
4.5.4.4.2as
使用别名 select 列名 as 别名 from 表名;
或者直接用空格隔开, select 列名 别名 from 表名;
4.5.4.4.3ifnull 函数
在对数值类型的列做运算时,如果运算的列的值为 null 时,运算结果都为 null,为了解决这一问题使用
ifnull 函数
Select 列名,数值列*(数值列+ifnull(数值列,0)) from 表名;
如果函数内数值列为 null,则按 0 计算。
4.5.4.4.4常用运算符
>,>=,<,<=,=,!=,between(在某个范围内),like(搜索某种模式)
Sql 使用单引号来环绕文本值(大部分数据库也支持双引号),如果是数值,就不要使用引号
4.5.4.4.5逻辑运算符
and 与,or 或,between 小值 and 大值,in(数值 1,2,3..)匹配多个值,like 模糊查询 %匹配多个,
_匹配一个。
4.5.4.4.6null
is null;判断为空。Is not null;判断不为空。
4.5.4.4.7order by 排序
select 字段 from 表名 where 条件 order by 字段 asc/desc(升序降序),字段 asc/desc
4.5.4.4.8聚合函数
Count:统计指定列不为 null 的记录行数;
Sum:计算指定列的数值和,如果指定列数据类型不为数值,计算结果返回 0
Max:计算指定列的最大值,如果指定列是字符串类型,使用字符串排序运算;
Min:计算最小值,字符串同上。
Avg:计算指定列平均值,如果不为数值类型,返回 0
4.5.4.4.9分组操作
Group by 用于结合聚合函数,根据一个或多个列进行分组。
分组操作中用 having 对分组后的数据进行过滤,作用类似于 where
Having where 的区别:
Having 是在分组后对数据进行过滤,where 是在分组前对数据进行过滤
Having 后面可以使用分组函数(统计函数)where 后面不可以使用分组函数
4.5.5 对多表数据
4.5.5.1外键约束
表与表之间的关系包括:一对一,一对多,多对多。表与表之间的关系通过外键维护。
将两张表关联在一起。
外键约束特性如下:
外键必须是另一张表或者自身表的主键的值。
外键可以重复
外键可以为空
一张表中可以有多个外键
4.5.5.2多表关联操作
4.5.5.2.1.1 交叉连接
Select * from AB
Select * from A cross join B
原理为笛卡尔积
4.5.5.2.1.2内连接
内连接为两张表同时满足一定条件的结果
显式内连接:select * from A inner join B on(连接条件[外键字段名 = 另一个表的主键字段]
隐式内连接:select * from AB where 条件
4.5.5.2.1.3外连接
分左外连接和右外连接
分别用 left join right join
4.5.5.2.1.4联合查询
Select 字段 from A where 条件
Union
Select 字段 from B where 条件
可以自动消除重复记录
4.5.5.2.1.5子查询
将一次的查询结果作为条件或数据集,外面再包一层查询(父查询)。
Select * from A where
字段 in
Select 字段 from B where 条件;
);
4.5.5.2.1.6补充函数
Now()函数 :生成当前时间
Year(now())取出年份
Md5()给字段加密
Limit 起始行数或每页显示行数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值