首先得安装好MySQL——推荐安装phpstudy来配置环境,万一~万一以后要学php捏
进入自己的MySQL
我的是安装在D盘里的,然后通过Phpstudy配置下载的,所以我的mysql就在phpstudy的配置文件夹中:给出我的mysql命令行启动指令

注意:如图中所示,第一次cd到文件所在位置只能到bin文件夹,不能够直接到运行程序,也就是.exe后缀的文件,显示到第四行这种状态时再输入mysql.exe -uroot -proot (意思是运行mysql.exe文件,用户名root,密码root)即可启动mysql
如果不输入-p后面的内容会进行密文输入,即对密码隐藏,系统会继续要求您输入密码,此刻显示为密文
MySQL数据库指令
接下来的各种指令除了exit一定记得加分号,指令字母不区分大小写
- 使用某个名字的数据库:mysql>use mysql_name;
- 创建某个名字的数据库:mysql>create database mysql_name;
- 显示MySQL中所有的数据库:mysql>show database;
- 退出mysql:mysql>exit 或者 mysql>quit
- 查看数据库版本:mysql>select version();
- 查看当前使用的哪个数据库:mysql>select database();
注意:mysql命令行中的命令不见分号不会往下执行或者输入\c强行终止输入
数据库中最基本的单元:table
什么是表?为什么用表来存储数据呢?
因为表比较直观,任何一张表都有行和列:
行 row:被称为数据/记录
列 column :被称为字段
每一个字段都有:字段名、数据类型、约束等属性
数据类型:字符串,数字,日期等
约束:约束也有很多,其中一个叫做唯一性约束这种约束添加之后,该字段的数据不能重复
查看数据库下有那些表show tables;
SQL语句
分类
SQL语句与很多,最好分门别类记忆
- DQL:数据查询语言(凡是带有select关键字的都是查询语句)select...
- DML:数据操作语言(凡是对表中的数据进行增删改的都是DML)
insert delete update
insert 增 delete删 update改
- DDL:数据定义语言(凡是带有create、drop、alter
DDL主要操作的是表的结构,不是表中的数据
create:新建,等同于增
drop:删除 alter:修改
这个增删改和DML不同,这个主要是对表结构进行操作
- TCL:事务控制语言
包括:事务提交:commit;事务回滚:rollback;
- DCL:数据控制语言
例如:授权grant、撤销权限revoke
此篇主讲的是作者目前所学到的DQL查询语句知识
最基础的查询语句:
- 怎么查一个表中数据:select * from 表名;(*代表所有)
- 怎么只查表的结构而不查数据:desc 表名;
(先瞅一眼结构再写SQL语句)
- 查询一个字段?select 字段名 from 表名;
其中select和from都是关键字,字段名和表名都是标识符
- 查询两个字段或者多个字段:使用逗号隔开
- 查询所有字段:1.把每个字段都写上 2.用 * 号(因为它可读差,效率低,实际开发中少用)
- 给查询的列起别名:mysql>select a,b as c from 表名;
a的名字不会变,只会改变b显示出的名字,不会实际改变名字
as可以用空格代替,起别名的时候别名里不能有空格或者
可以将别名加上单引号或双引号
- 字段可以使用数学表达式,可以参与数学运算,显示的时候可以起别名,别名为中文时要用单引号括起来
条件查询

查null需要写is null
查非null写is not null
多个条件同时查询可以添加括号提高优先级
(and和or同时出现时,and优先级比较高)(开发中不确定优先级加小括号就行了)

in不是一个区间,in后面跟的是具体的值,只找具体的值,不是范围
模糊查询
用百分号%代表任意多个字符,用下划线_代表任意一个字符


找出名字中含有下划线的~这个比较特殊,因为本身可以用下划线表示一个字符,但我们要查这个字符的话就需要改变它原本的意义,即用转义字符 ' \ ' 写成 '%\_%'
按顺序查询:
select a,b from c order by d (desc);
在c表中查a,b列,按照d升序(默认为升序或者写asc表示升序)(desc降序)的方式查询
可以多字段排序吗?select a,b from c order by d asc,f asc;
在上面的基础上,先按d升序排,d相同的话按f升序排
从左到右优先级降低,多个字段间用逗号隔开
d,f均为表中的字段(列)
<了解>根据字段的位置也可以排序
select a,b from c order by 2;
按照查询结果的第2列排序,不建议在开发中这样写,因为列的顺序很容易发生改变,列顺序修改之后2就废了
综合条件写法:关键字顺序不能变
以上语句的执行顺序必须掌握,
第一步from
第二步where
第三步select
第四步order by(排序总在最后)
单表数据查询时常用函数
- 数据处理函数又称为单行处理函数
单行处理函数的特点:一个输入对应一个输出
多行处理函数特点:多个输入对应一个输出

函数名后面加字段(列)select lower(a) from c;
从c表中找出a字段并转化为小写

转化完后名字不好看同样可以后跟as起别名
这是14个输入,最后得到14个输出

- concat函数进行字符串拼接,按顺序接concat(a,b,...)
首字母大写,多函数嵌套:

select后面如果没跟字段,跟的是字面量或者字面值-->数据,那么mysql会根据表的结构显示一列相同的字面量

四舍五入函数round(a,b)表示输入数据,b表示要保留的小数位数
b为负数则向整数位保留,-1表示保留到十位,-2表示保留到百位...

rand用于生成0到1之间的随机数 rand()
ifnull可以将null转换成一个具体值
ifnull是空处理函数,专门处理空的
在所有数据库当中,只要有Null参与的数学运算,最终结果就是NULL,为了避免这个现象,需要使用ifnull函数
ifnull用法:ifnull(字段,被当作的值)
如果字段数据为NULL的时候,把这个数据当作这个值
(case 字段 when .. then .. when .. then .. else .. end )

分组函数(多行处理函数)
count记数 sum求和 avg平均值 max/min最大最小值
注意:分组函数在使用的时候必须先进行分组,然后才能用,如果没有对数据进行分组,那么默认整张表为一组
注意:
- 分组函数自动忽略NULL,不需要提前对NULL进行处理,count也会忽略NULL,只会统计非NULL数据个数
- 分组函数中count(*)和count(具体字段)有什么区别? count(具体字段):表示统计该字段下所有不为NULL元素的总数 count(*):数据库表中不会出现每个字段都为NULL的所以count(*)统计的就是表的总行数,该行有某一个字段有有效数据,该行才会存在。有一行数据就count++
- 分组函数不能够直接使用在where子句中。 原因是分组函数要在分组之后才能运行,而分组操作group by是在where之后操作,也就是说执行了where然后再执行分组函数,但此时还没分组,分组函数执行不了
- 所有的分组函数可以组合起来一起用
分组查询
在实际的应用中,可能需要先进行分组,然后对每一组的数据进行操作。这时候需要我们使用分组查询。

执行顺序1.from 2.where 3.group by 4.select 5.order by

group by不写的话默认整张表为一组
重点结论:
![]()
加别的字段在mysql中不会报错,但额外添加的字段显示会毫无逻辑,而在oracle中会直接报错
group by后面可以加多个字段,从而select后面也能跟上同样的字段和分组函数,优先级按group by后面的从高到低
使用having增加附加条件(执行顺序在group by之后select之前)效率太低
优化策略:where和having优先使用where,优先选择where,where实在完成不了再选择having

去除重复记录:
原表数据不会改变,只是查询结果去重
去重需要使用一个关键字:distinct


联合去重:选取的多个字段均相同才会被去除
可以select count(distinct(a))
表示a中去除重复元素后的个数
可以用于统计员工表中工作岗位的个数
文章介绍了如何安装和启动MySQL,通过phpstudy配置环境。讲解了MySQL的基本命令,如使用数据库、创建数据库、显示数据库列表以及退出命令。接着讨论了SQL语句的分类,如DQL、DML、DDL和TCL,以及一些基本的查询和数据操作。文章还提到了表的概念,字段的属性,以及如何进行条件查询、模糊查询和排序。此外,还介绍了数据处理函数和分组函数的使用。
4752

被折叠的 条评论
为什么被折叠?



