MySQL数据库基础

又名:学了就忘只能再看从头重学😣

01 phpstudy中MySQL的简单使用

在学用MySQL的时候发现自己和学习资料用的不是同一个集成环境,所以打开方式不一样,这种小问题还是难不倒我哒😎

首先开启MySQL服务 好了接下来就不会了

再去小皮官网看看

有一个模块是phpMyAdmin的使用。按照官方教程下载好打开我才发现这是在网页上操作,不是命令行。没关系,下载都下载了,学习一下。

001 图形化界面操作

在软件管理找到phpMyAdmin,点击下载。下载完之后点管理就会自动在浏览器打开,输入用户名和密码就可以使用啦。

用户名和密码没改过的话就都是root

在phpMyAdmin也可以用SQL查询语句嗷

输入SELECT id FROM test ;

使用其他界面操作内容时也可以预览SQL语句

总之就是很简单易上手辣😇

连我都可以无师自通

002 cmd操作

MySQL在phpstudy_pro文件下的Extensions文件夹里

进入bin目录后在此处打开cmd

输入mysql -u[用户名] -p[密码] -h [数据库服务器地址]进入

用户名和密码没改过的话就都是root,打开本地数据库可以不加服务器地址

进入mysql之后就可以快乐使用了

02 关于MySQL

001 MySQL常见符号

->

表示当前命令没有命令执行符或者等待命令执行符;\g,也可以输入\c取消命令直接输入;回车即可执行命令。

‘>或”>

表示当前命令缺少'"

002 MySQL编码规范

  • 关键字与函数名称全部大写;(不大写也可以执行命令)

  • 数据库名称、表名、字段名称全部小写;

  • 必须以分号结尾

003 结构化查询语言

主要分为四类

DDL-数据库定义语言(CREATE DROP ALTER)

DML-数据库操作语言(INSERT DELETE UPDATE)

DQL-数据库查询语言(SELECT WHERE)

DCL-数据库控制语言

说了这么多也没什么用🤪

03 SQL语法

对库的操作

查找库
1
SHOW DATABASE; 
创建库
1
CREATE DATABASE [database_name];

不知道即将创建的库是否存在时,可使用以下命令:如果库不存在就创建,存在则退出命令

CREATE DATABASE IF NOT EXISTS [database_name];

但不建议让MySQL来做判断

删除库
1
DROP DATABASE [database_name];

数据库不能修改名字

对表的操作

查找表
1
SHOW TABLES;         //查找当前库的所有表

创建表
1
2
3
4
CREAT TABLE [table_name](
[column_name] [数据类型] [列的完整性约束],
······
);

name为创建的表格名,可自行更改

空格里填表格表头及数据信息

eg:

1
2
3
4
5
6
7
CREATE TABLE user(
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(18) NOT NULL,
pwd CHAR(32) NOT NULL,
sex TINYINT NOT NULL DEFAULT 0,
age TINYINT UNSIGNED NOT NULL
);

创建新表后,可以使用desc table_name查询表格信息

数据类型

数据类型 说明
Int 整数类型
char(n) 字符/字符串,固定长度
varchar(n) 字符/字符串,可变长度,最大长度为n
numeric(a,b) 精确数值,总位数为a,精确到小数点后第b位
date 时间,存储年月日的值

字段约束

约束类型 说明
UNSIGNED 只能用于数值整型,设置无符号。最大值不能超过255
ZEROFILL 只能用于数值整形,自动用0补全不足位数。eg:001
AUTO_INCREMENT 设置字段的自动增量属性,只能用于设置数值类型。
NULL/NOT NULL 默认为NULL,即没有在此字段插入值。如果设置NOT NULL,则必须在此字段插入相应的值。
DEFAULT 通过此属性设置默认值
PRIMARY KEY 主键约束,主键自动为NOT NULL。

AUTO_INCREMENT必须和PRIMARY KEY一起用。自动增量必须为主键,但主键不一定要自动增量。

备份表
1
CREATE [new_table_name] SELECT * FROM [table_name];
修改表
1
ALTER TABLE [table_name] RENAME [new_table_name];

对字段的操作

添加字段
1
ALTER TABLE [table_name] ADD [column_name] [数据类型] [完整性约束] [位置参数];

位置参数可空默认加在表的最后,也可使用FIRST或AFTER[字段名]

修改字段
1
2
ALTER TABLE [table_name] MODIFY [column_name] [改后数据类型] [改后的完整性约束];
SLTER TABLE [table_name] CHANGE [column_name] [new_column_name] [改后数据类型] [改后的完整性约束];

MODIFY关键字只能改数据类型和完整性约束

删除字段
1
2
ALTER TABLE [table_name] DROP [column_name];
ALTER TABLE [table_name] DROP [column_name1],DROP [column_name2],······;

对内容的操作

添加内容
1
2
3
4
5
6
INSERT INTO [table_name]('[column_name1]','[column_name2]',······) VALUES ('[value1]','[value2]',······);

INSERT INTO [table_name]('[column_name1]','[column_name2]',······) VALUES ('[value1]','[value2]',······),('[value1]','[value2]',······),······;
//一次插入多条数据

INSERT INTO [table_name] VALUES ('[value1]','[value2]',······);

第二种方法必须严格按照表中顺序一一填写,自增字段可用null占位但不能为空

我的电脑输入字段名不能加引号不然会报错就离谱

查询内容
  • 选择某一行或某一列
1
SELECT [column_name],[column_name] FROM [table_name];
  • 选择整个表格
1
SELECT * FROM [table_name];

删除字段
1
DELECT FROM [table_name] [删除条件]; 

删除可使用where条件。条件可空,为空时全部值被影响。

修改内容
1
UPDATE [table_name] SET [column_name]=[value] [修改条件];

修改条件可空,全部值被影响。

查询语句

distinct

去除重复值

1
SELECT DISTINCT [column_name] FROM [table_name];

where

where语句用于在表中选择指定符合条件的数据

1
SELECT [colum_name] FROM [table_name] WHERE 条件(字段名+运算符+数值);
运算符
运算符 说明
+
-
*
/或DIV
%或MOD 取余
比较运算符
运算符 说明
= 等于
<>或!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
= 等于
between 在某个范围内
like 模糊匹配

可以使用and或or连接多个条件

like符号举例

1
2
3
4
5
like '[查询内容]%'      //表示以[查询内容]开头的数据
like '%[查询内容]' //表示以[查询内容]结尾的数据
like '%[查询内容]%' //表示只要查询内容出现即可
like '_[查询内容]%' //表示查询内容前有一位字符,后有任意字符
like '%[查询内容]_' //表示查询内容前有任意字符,后有一位字符

between用法

between运算符包括起始值和结束值

用于选取两个数值范围之内的值,可以是字符串,数字或者日期

eg:

1
2
3
SELECT [colum_name] FROM [table_name] where [colum_name] BETWEEN [value1] and [value2];

SELECT [colum_name] FROM [table_name] where [colum_name] >= [value1] and [colum_name] <= [value2];
逻辑运算符
符号 说明
NOT或! 逻辑非
AND 逻辑与
OR 逻辑或
XOR 逻辑异或
位运算符
符号 说明
& 按位与
| 按位或
^ 按位异或
! 取反
<< 左移
>> 右移
in

in实际上是多个or的合并

1
2
SELECT [colum_name] FROM [table_name] WHERE
[colum_name] IN([value1],[value2],···);

eg:

1
2
3
4
5
SELECT [colum_name] FROM [table_name] WHERE
[colum_name] IN([value1],[value2],···);

SELECT [colum_name] FROM [table_name] WHERE
[colum_name]=[value1] or [colum_name]=[value2];
subquery

subquery为子查询,用于嵌套在where子句中的查询

1
SELECT [column_name],[column_name],···FROM [table_name] WHERE条件 (子查询)

子查询为一个完整的select语句

as

用as为查找对象起别名,但我没尝试成功🥲

1
SELECT [字段名] FROM [table_name] [条件语句] as [别名]; 

函数

count函数

count函数统计符合条件的记录数

统计表中的记录总数

1
SELECT COUNT(*) FROM [table_name];

统计表中指定字段不为NULL的数据

1
SELECT COUNT([column_name]) FROM [table_name];

统计表中指定字段为NULL的数据

1
SELECT *FROM [table_name] WHERE [column_name] IS NULL;
max函数

max函数返回所选字段最大值

1
SELECT MAX([column_name]) FROM [table_name];
min函数

min函数返回所选字段最小值

1
SELECT MIN([column_name]) FROM [table_name];
avg函数

avg函数返回所选字段的平均值

1
SELECT AVG([column_name]) FROM [table_name];
sum函数

sum函数返回所选按字段的合计值

1
SELECT SUM([column_name]) FROM [table_name];

其他一些条件

having过滤分组
1
- having 统计函数 运算符 value;
group by分组
1
- GROUP BY [column_name];
排序

可分为正序asc和倒序desc两种方法

1
- ORDER BY [column_name] [排序方法],[column_name] [排序方法],······;   
限制查询数量
1
- LIMIT [查询数量]

多表联合

1
SELECT [table_name1].[column_name1],[table_name2].[column_name2] FROM [table_name1],[table_name2] + WHERE子句
jion连接

jion连接是基于多个表之间的共同字段把他们结合起来进行查询的一种方法

1
SELECT [column_name] AS FROM [table_name1] JION [table_name2] + ON 子句;
内连接

列出两个表中都存在的数据jion

左连接

即使没有匹配也要列出左表的数据left jion

右连接

即使没有匹配也要列出右表的数据right jion

总结

SQL语句格式

1
[SELECT语句] [WHERE条件] [GROUP BY条件] [HAVING条件] [ORDER BY条件] [LIMIT条件];

终于把这SQL语句搞完了

撒花🎉


MySQL数据库基础
https://shmodifier.github.io/2023/03/08/MySQL数据库基础/
作者
Modifier
发布于
2023年3月8日
许可协议