MySQL学习指南

一、数据库的相关概念

DBMS、DB、SQL

DB:database数据库,存储一系列有组织数据的容器

DBMS:数据库管理系统,使用DBMS管理和维护DB

SQL:结构化查询语言,程序员用户和DBMS通信的语言

二、初始MySQL

1, MySql服务的启动和终止

方式一:图形化

计算机管理——服务——mysql服务

方式二:通过管理员身份运行dos

net start 服务名

net stop 服务名

2,MySQL服务的登录和退出

方式一:通过dos命令

mysql -h主机名 -p端口号 -u用户名 -p密码

注意:

①如果是本机,则-h可省略

②如果端口号是3306,则-p可省略

方式二:通过图形化界面登录客户端

通过sqlyog等输入用户名和密码登录

设置密码:set password=password(‘12345’);

3,MySQL的常见命令和语法规范

① 常见命令

show databases 显示当前连接下的所有数据库

show tables 显示当前库中的所有表

show tables from 库名 显示指定库中的所有表

show colums from 表名 显示当前表中的所有列

use 库名 打开/使用指定库

② 语法规范

不区分大小写

每条命令结尾建议使用分号

注释:

#单行注释

–单行注释

/多行注释

三、 DQL语言的学习

1、基础查询

select 查询列表 from 表名;

特点:

①查询结果是一个虚拟表

② 查询列表可以是单个字段、多个字段、常量、表达式、函数、可以上上述组合

引申1:起别名

引申2:加法运算

  • 如果两个操作都是数值型,则直接做加法运算

  • 如果其中一个为非数值型,则将强制转换为数值型,如果转换失败则当做0

‘123’+4===>127

‘abc’+4===>4

  • 如果其中一个为null,则结果为null

引申3:去重

select distinct department_id from employees;

引申4:补充函数

select database();

select user();

select ifnull(字段名,表达式);

select concat(字符1,字符2,字符3,100);

select length(字符/字段);获取字节长度

2、条件查询

select 查询列表

from 表名

where 筛选条件

筛选条件的分类:

① 按条件表达式筛选

关系运算符:<, >, =, <=, >=, <>(!=)

② 按逻辑表达式筛选

逻辑运算符:and or not

③ 模糊筛选

like:一般和通配符搭配使用

​ -任意单个字符

​ %任意多个字符

​ between and:一般用于指定某字段是否在指定区间(包含临界值)

​ a between 10 and 20;

​ in:一般用于判断某字段是否在指定列表

​ a in(10,20,40);

3、排序查询

select 查询列表

from表名

where 筛选条件

order by 排序列表

特点:

① 排序列表可以是单个字段、多个字段、函数、表达式、别名、列的索引、以上组合

② 升序:通过asc

降序:通过desc

4、常见函数

说明:sql中的函数分为单行函数和分组函数

调用语法:select 函数名(实参列表);

1,字符函数

concat(str1,str2):拼接字符

substr(str,pos):截取从pos开始的字符,起始索引从1开始

substr(str,pos,len):截取len个从pos开始的字符,起始索引从1开始

length(str):获取字节个数

char_length():获取字符个数

upper(str):变大写

low(str):变小写

trim( 【substr from】str):去前后指定字符,默认是空格

left(str,len):从左边截取指定len个数的字符

right(str,len):从右边截取指定len个数的字符

lpad(str,substr,len):左填充

rpad(str,substr,len):右填充

strcmp(str1,str2):比较两个字符大学

instr(str, substr):获取substr中str第一次出现的索引

2,数学函数

ceil(x):向上取整

floor(x):向下取整

round(x,d):四舍五入

mod(x,y):取模/求余

truncate(x,d):截断,保留小数点后d位

abs(x):求绝对值

3,日期函数

now():获取当前时间

curtime():只有时间

curdate():只有日期

date_format(date,格式):格式日期为字符

str_to_date(str,格式 ):将字符转换为日期

datediff(date1,date2):获取两个日期之间的天数差

year(date)

month(date)

4,流程控制函数

①if(条件,表达式1,表达式2) :如果条件成立,返回表达式1,否则返回表达式2

case 表达式

when 值1 then 结果1

when 值2 then 结果2

else 结果n

end

case

when 条件1 then 结果1

when 条件2 then 结果2

else 结果n

end

5,分组函数

sum()求和

avg()平均

max()最大

min()

count()个数

特点:

1》实参的字段的类型,sum和avg只支持数值型,其他是三个可以支持任意类型

2》这5个函数都忽略null值

3》count可以支持一下参数

count(字段):查询该字段非空值的个数

count(*):查询结果集的行数

count(1):查询结果集的行数

4》分组函数也可以和distinct搭配使用,实现去重的统计

select count(distinct 字段) from 表;

6,分组查询

语法:

select 分组函数,分组的字段,

from 表名

where 分组前的筛选条件

group by 分组列表

having 分组后的筛选条件

order by排序列表

特点:

1》分组列表可以是单个字段、多个字段

2》筛选条件分为两类:

​ 筛选的基表 使用的关键字 位置

分组前筛选: 原始表 where group by前面

分组后筛选: 分组后的结果集 having group by后面

7、连接查询 *

说明:当查询中涉及到多个字段 ,则需要通过多表连接

笛卡尔乘积:

​ 出现原因:没有有效的连接条件

​ 解决办法:添加有效的连接条件

------------------------sql92语法-----------------

语法:

select 查询列表

from 表1 别名,表2 别名,表3 别名…

where 连接条件

and 筛选条件

group by 分组列表 ⑤

having 分组后筛选 ⑥

order by 排序列表;⑦

执行顺序:②,③,④,⑤,⑥,①,⑦

------------------------sql99语法-----------------

1》内连接

语法:

select 查询列表 ①

from 表1 别名 ②

【inner 】join 表2 别名 on 连接条件 ③

【inner 】join 表3 别名 on 连接条件

where 筛选条件 ④

group by 分组列表 ⑤

having 分组后的筛选条件 ⑥

order by 排序列表 ⑦

**执行顺序:**②,③,④,⑤,⑥ ,①,⑦

2》外连接

语法:

select 查询列表 ①

from 表1 别名 ②

right |left|full 【outer 】join 表2 别名 on 连接条件 ③

where 筛选条件 ④

group by 分组列表 ⑤

having 分组后的筛选条件 ⑥

order by 排序列表 ⑦

特点:

① 外连接的查询结果= 内连接才查询结果+主表有但从表没有的记录

② 区分主从表

left join 左边为主表

right join 右边为主表

③ 一般来讲,外连接往往用来查询主表有, 但从表没有的记录

案例:

查询哪个女生没有男朋友

查询哪个部门没有员工

8,子查询 √

说明:

在一个select语句中,又嵌套了另一个完整的select语句

里面的select语句成为内查询或子查询,外面的select语句称为外查询或主查询

分类:

  • 放在select后面

  • 放在from后面

  • 放在where或having后面

  • 放在exists后面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值