MySQL基础笔记(一)

入门

MySQL服务启动和停止

# 启动服务
net start <服务名> 

# 停止服务
net stop <服务名>

连接MySQL

# 携带地址端口连接
mysql -h localhost -P 3306 -u root -p *****

# 本机连接
mysql -u root -p *****

# 退出
exit
或者 ctrl + c

MySQL基本命令

# 列出所有数据库
show databases;

# 打开数据库
use 数据库名;

# 列出数据库所有表
show tables; -- 列出当前数据库所有表

show tables from; <数据库名> -- 列出指定数据库所有表

# 查看所在的库
select database();

# 创建表
create table <表名>(
	id int,
	name varchar(20)
);

# 查看表结构
desc <表名>;

# 查看数据库版本
select version();

MySQL语法规范

  • 不区分大小写,但是建议关键字大写,表名、列名小写
  • 每条命令最好用分号结尾
  • 每条命令根据需要,可以进行缩进或换行
  • 注释
    • 单行注释:# 注释文字
    • 单行注释:-- 注释文字
    • 多行注释:/* 注释文字 */

MySQL介绍

MySQL分类

DQL语言(数据查询)

  • 基础查询
  • 条件查询
  • 排序查询
  • 常见函数
  • 分组函数
  • 分组查询
  • 连接查询
  • 子查询
  • 分页查询
  • union联合查询

DML语言(数据操纵)

  • 插入语句
  • 修改语句
  • 删除语句

DDL语言(数据定义)

  • 库和表管理
  • 常见数据类型
  • 常见约束

TCL语言

  • 事务和事务处理

MySQL语法

SELECT基础查询

# 查询单表信息
select 
	<查询列表>
from 
	<表名>;
	
-- 查询列表可以是:表中字段、常量值、表达式、函数
-- 查询的结果是一个虚拟的表格
-- 多个字段用逗号隔开

起别名

# 查询后起别名
select <字段名> as <别名名称> from <表名>;
-- as可以省略

去重

# distinct关键字
select distinct <字段名> from <表名>;
-- 在字段前加上关键字

“+”作用

-- 两个为数值型,做加法运算
100 + 90	= 190

# 有一方为字符型,试图将字符型数值转换成数值型。
'123' + 90	= 213
-- 如果转换成功,继续做加法运算

'john' + 90	= 90
-- 如果转换失败,则将字符型数值转换成0,再做加法

null + 10	= null
-- 只要一方为null,则结果为null
  • null+任意值为null,可以使用ifnull()函数:ifnull(a,b),如果a为null,则显示b
  • 如果使用字符串拼接,可以使用concat()函数:concat(a,b)

条件查询

select 
	<查询列表>
from
	<表名>
where
	<筛选条件>;
	

条件分类

  • 1.条件表达式筛选
    • 简单条件运算符:> < = != <> >= <=
  • 2.按逻辑表达式筛选
    • 逻辑运算符:&& || ! and or not
  • 3.模糊查询
    • like
    • between and
    • in
    • is null

排序查询

  • order by子句中支持单个字段、多个字段、表达式、函数、别名
  • order by子句一般放在查询语句最后面,但是limit子句除外
select
	<查询列表>
from
	<表名>
where
	...
order by
	<排序列表> [asc|desc]

# 多个排序字段使用逗号隔开
-- asc升序 默认
-- desc降序

MYSQL常见函数

函数分类

  • 单行函数:concat、length、ifnull等
  • 分组函数
    • 功能:做统计使用,又成为统计函数、聚合函数、组函数

单行函数

1、字符函数

length() -- 获取参数值的字节个数

concat() -- 拼接字符串

upper() -- 字符变大写
lower() -- 字符变小写

substr()、substring() -- 字符串截取(索引从1开始)

instr() -- 返回子串第一次出现的索引,找不到返回0

trim() -- 去除前后字符,默认去除空格

lpad() -- 用指定字符实现左填充指定长度

rpad() -- 用指定字符实现右填充指定长度

replace() -- 替换
 

2、数学函数

round() -- 四舍五入

ceil() -- 向上取整

floor() -- 向下取整

truncate() -- 截断

mod() -- 取余
-- 求余原理:
-- mod(a,b) : a-a/b*b

3、日期函数

now() -- 返回当前系统日期+时间

curdate() -- 返回当前系统日期,不包含时间

curtime() -- 返回当前时间,不包含日期

year() -- 获取年

month() -- 月

monthname() -- 获取英文的月

str_to_date('','') -- 将日期格式字符转换成指定格式日期

date_format() -- 将日期转换成字符

 

在这里插入图片描述

四、函数

version()

database()

user()

五、流程控制函数

if('表达式', 'true', 'false')	-- 判断效果

case() -- switch case效果
/*
	case 要判断的字段或表达式
	when 常量1 then 要显示的值1或语句1;
	when 常量2 then 要显示的值2或语句2;
	...
	else 要显示的值n或语句n;
	end

*/

case函数使用二: 类似多重if
/*
	case
	when 条件1 then 要显示的值1或语句1
	when 条件2 then 要显示的值2或语句2
	...
	else 要显示的值n或语句n
	end
*/

分组函数

用于统计使用

sum() -- 求和

avg() -- 平均值

max() -- 最大值

min() -- 最小值

count() -- 计算个数

参数支持的类型

1、sum、avg一般用于处理数值型
max、min、count可以处理任何类型
2、以上分组函数都忽略null值
3、可以和distinct搭配使用
4、count函数的单独介绍:一般使用count(*)用作统计行数
5、和分组函数一同查询的字段要求是group by后的字段

分组查询

select 分组函数,(要求出现在group by后面)
from[where 筛选条件]
group by 分组的列表
[order by 子句]

注意: 查询列表必须特殊,要求是分组函数和group by后出现的字段

在这里插入图片描述
2、group by子句支持单个字段分组,多个字段分组(多个字段之间用逗号隔开没有顺序要求),表达式或函数(用得较少)
3、也可以添加排序(排序放在整个分组查询最后)

having

对分组后的条件进行筛选,在group by 之后

连接查询

又称多表查询,当查询的字段来自于多个表

笛卡尔积先写:表1有m行 表2有n行 结果为m*n行
当没有添加有效连接条件时会出现笛卡尔积

连接分类:
	年代分类:
		sq192标准:仅仅支持内连接
		sql99标准【推荐】支持内连接+外连接(左右)+交叉连接

	按功能分类:
		内连接:
			等值连接
			非等值连接
			自连接
		外连接:
			左外连接
			右外连接
			全外连接
		交叉连接

如果给表起了别名,则查询的字段就不能使用原来的表名去限定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanlin-hl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值