MySQL基础命令-学习的时候记录一下

MySQL基础命令

DDL—操作数据库命令

R(Retrieve):查询功能

① 查询所有数据库
SHOW DATEBASES;
② 查询数据库的创建语句
SHOW CREATE DATABASE db1;
# 查看创建db1的语句
③ 使用数据库
USE db1;
# 使用db1数据库

C(Create):创建功能

① 创建数据库
CREATE DATABASE db1;
# 创建db1数据库
② 创建数据库(判断,如果不存在则创建)
CREATE DATABASE IF NOT EXTSTS db1;
# 判断是否存在db1数据库,如果不存在则创建
③ 创建数据库,指定字符集
CREATE DATABASE db1 CHARACTER SET utf8;
# 创建db1数据库并指定他的字符集为utf8

U(Update):修改

① 修改标准数据库字符集
ALTER DATABASE db1 CHARACTER SET utf8;
# 修改db1的数据库字符集为utf8

D(Delete):删除

① 删除数据库
DROP DATABASE db1;
# 删除db1数据库
② 删除数据库(判断,如果存在则删除)
DROP DATABASE IF EXISTS db1;
# 判断db1数据库是否存在,如果存在则删除。

③ 查询当前正在使用的数据库
SELECT DATABASE();

DDL—操作数据表

R(Retrieve):查询功能

① 查询所有的数据表
SHOW TABLES;

② 查询表结构
DESC USER;
# 查询user的表结构

③ 查询表字符集
SHOW TABLE STATUS FROM db1 LIKE 'user';
# 查询db1数据库中user表格的字符集是什么

C(Create):创建

① 创建数据表
CREATE TABLE student(						
	id INT,
	NAME VARCHAR(10)
);
# 创建student表格,内部包含id与name两个列,数据类型分别为int和字符串,字符串的长度被指定最大为10

② 常用数据类型
  1. int:整数类型
  2. double:小数类型
  3. date:日期,只包含年月日 yyyy-MM-dd
  4. datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
  5. timestamp:时间戳类型,包含年月日时分秒,如果不给这个字段赋值,或者赋值为null,则默认使用当前的系统时间来自动赋值
  6. varchar:字符串,后面可以跟括号指定最大字符个数
③ 复制数据表
CREATE TABLE student1 LIKE student;
# 创建一个student1的数据表,他的所有内容是赋值student的

U(Update):修改

① 修改表名
ALTER TABLE student1 RENAME TO student2;
# 将student1的这个数据表的名字修改成sutdent2

② 修改表的字符集
ALTER TABLE student2 CHARACTER SET utf8;
# 将student2的字符集修改成utf8

③ 给数据表添加一列数据
ALTER TABLE student2 ADD age int;
# 为student2数据表添加一列数据,名字是age,类型是int

④ 修改列的数据类型
ALTER TABLE student2 MODIFY age VARCHAR(10);
# 修改student2数据表中的age数据列的数据类型为字符串,并指定最大长度为10

⑤ 修改列名和数据类型
ALTER TABLE student2 CHANGE age age1 int;
# 修改student2数据表中的age数据列的名称为age1,并修改他的数据类型为int

⑥ 删除列
ALTER TABLE student2 DROP age;
# 删除student2中的age数据列

D(Delete):删除

① 删除数据表
DROP TABLE student2;
# 删除student2数据表

② 删除数据表(判断,如果存在则删除)
DROP TABLE IF EXISTS student2;
# 如果student2数据表存在则删除

DML—表数据的增删改

INSERT:新增表数据

① 给指定列添加数据
INSERT INTO student(id,NAME) VALUES (1,'杨凯歌');
# 为student这个表的两个列添加数据,注意这里数据类型要跟数据列的类型一一对应

② 给全部列添加数据
INSERT INTO student VALUES(2,'杨鸽鸽');
# 如果表名后不填写指定列的话会变成给全部列添加数据,
# 这个时候VALUES里面的值的数据要跟数据列的类型一一对应

③ 批量添加数据
INSERT INTO student VALUES(3,'鸽鸽杨'),(4,'鸽杨鸽'),(5,'萌神');
# 这里的表名后没有填写指定列,所以是给全部列添加数据,而且值
#后面跟了三个括号,代表批量添加,注意这里的数据类型要一一对应。

④ 给指定列批量添加数据
INSET INTO student (NAME) VALUES('阿萌'),('小萌'),('萌萌');
# 这里与上面一样,注意数据类型的一一对应

UPDATE:修改表数据

① 修改表数据
UPDATE student SET id=9 WHERE NAME='小萌';
# 修改student数据表中NAME为小萌的那一行数据,将他的id列数据改为9。
# SET后的修改可以批量修改,用英文逗号隔开就可以了
# WHERE后的判断条件也可以跟多条,用英文逗号隔开就可以了,多条件需要全部满足

注意事项:修改语句中必须加条件,如果不加条件,则将所有的数据都修改。这个比较严重,有这个操作的建议祭天。

DELETE:删除表数据

① 删除表数据
DELETE FROM student WHERE NAME='阿萌';
# 判断student表中NAME为阿萌的表数据,将那一行全部删除

注意事项:删除语句中也需要加条件,不加则删除所有表数据,建议祭天。

DQL表数据的查询

① 表数据准备

用来演示查询的数据

-- 创建db1数据库
CREATE DATABASE db1;

-- 使用db1数据库
USE db1;

-- 创建数据表
CREATE TABLE product(
	id INT,				-- 商品编号
	NAME VARCHAR(20),	-- 商品名称
	price DOUBLE,		-- 商品价格
	brand VARCHAR(10),	-- 商品品牌
	stock INT,			-- 商品库存
	insert_time DATE    -- 添加时间
);

-- 添加数据
INSERT INTO product VALUES (1,'华为手机',3999,'华为',23,'2088-03-10'),
(2,'小米手机',2999,'小米',30,'2088-05-15'),
(3,'苹果手机',5999,'苹果',18,'2088-08-20'),
(4,'华为电脑',6999,'华为',14,'2088-06-16'),
(5,'小米电脑',4999,'小米',26,'2088-07-08'),
(6,'苹果电脑',8999,'苹果',15,'2088-10-25'),
(7,'联想电脑',7999,'联想',NULL,'2088-11-11');

上面命令包含了创建并使用一个数据库,为这个数据库创建数据表并为其添加数据。供接下来的MySQL语句操作。

② 查询语法

  1. select 字段列表
  2. from 表名列表
  3. where 条件列表
  4. group by 分组字段
  5. having 分组之后的条件
  6. order by 排序
  7. limit 分页限定

③ 查询全部

SELECT * FROM product;
# * 代表全部,意思是查询product数据表中的全部数据

在上面的笔记中已经有这个命令了,所以这个是重复的,归类在这里。

④ 查询指定字段

SELECT NAME,price,brand FROM product;
# 查询product表格中的NAME,price,brand三个列的数据

⑤ 去除重复查询

SELECT DISTINCT brand FROM product;
# 查询product数据表中的brand数据,会去除重复的数据。
# 如果DISTINCT后面跟的列名有多个,则需要三个列名的数据全部一致才会判断为重复

⑥ 列数据的计算

SELECT NAME,stock+10 FROM product;
# 查询product数据表中的stock数据,并在原有的数据上+10与NAME列的值一起输出

注意:如果stock有值为null,则计算之后依旧为null

⑦ 列数据包含null值的计算

SELECT NAME,IFNULL(stock,0) FROM product;
# 查询product数据表中的stock数据,如果为null,则替换为0与NAME列的值一起输出

注意:这里输出的stock的列的数据名称为IFNULL(stock,0)这是一个新列,是替换后新生成的,并不是直接从数据库查询到输出的。

⑧ 起别名

SELECT NAME,IFNULL(stock,0) AS stock FROM product;
# 执行⑦里面的操作后将IFNULL(STOCK,0)的表名称替换为stock输出

SELECT NAME,IFNULL(stock,0) stock FROM product;
# 执行⑦里面的操作后将IFNULL(STOCK,0)的表名称替换为stock输出,这里省略了as命令,是允许的

⑨ 条件查询

1、条件分类

条件分类
>						大于
<						小于
>=						小于等于
<=						大于等于
=						等于
<>或!=				   	不等于
BETWEEN...AND..			在某个范围之内
IN(...)					多选一
LIKE 占位符			  模糊查询
IS NULL					是NULL
IS NOT NULL				不是NULL
AND 或 &&				并且
OR 或 ||					或者
NOT 或 !				   非,不是

2、条件查询语法

SELECT * FROM product WHERE stock>10;
# 查询product表格中stock大于10的表数据,将符合条件的行全部输出

SELECT * FROM product WHERE price >= 4000 && price <=6000;;
# 查询product表格中price值大于4000并且小于6000的表数据,将符合条件的行全部输出

SELECT * FROM product WHERE price BETWEEN 4000 AND 6000;;
# 与上一条结果一样,不过使用的是在某个范围之内的语句

SELECT * FROM product WHERE stock=14;
# 查询product表格中stock值为14的表数据,将行全部输出

SELECT * FROM product WHERE stock IN (14,30,23);
# 与上面结果一样,使用了多选一的语法

SELECT * FROM product WHERE stock IS NULL;
# 查询product表格中stock为NULL的表数据,将那一行输出

SELECT * FROM product WHERE stock IS NOT NULL;
# 查询product表格中stock不为NULL的表数据,将符合的行全部输出

SELECT * FROM product WHERE NAME LIKE '小米%';
# 查询以小米开头的信息,这里使用了字符串,顶头两个字符串是小米,后面以通配符匹配。

SELECT * FROM product WHERE NAME LIKE '_为%';
# 查询第二个字是为的信息,这里使用了下划线占一位字符用来匹配,后面使用%匹配

SELECT * FROM product WHERE NAME LIKE '____';
# 查询名字是四个字的信息,这里使用了四个下划线表示占位四个字符来匹配

SELECT * FROM product WHERE NAME LIKE '%电脑%';
# 查询名字包含电脑两个字的信息
# 下划线与百分号都是通配符,区别在意前者代表一个字符的匹配,后者代表任意字符的匹配。

⑩聚合函数查询

1、介绍

将一列数据作为一个整体,进行纵向的计算

2、聚合函数分类
函数名					功能
count(列名)			 统计数量
max(列名)				 最大值
min(列名)				 最小值
sum(列名)				 求和
avg(列名)				 平均值

3、聚合函数语法

语法

SELECT 函数名(列名) FROM 表名 [WHERE 条件];

示例

SELECT COUNT(*) FROM product;
# 计算product表格中的总记录条数

SELECT MAX(price) FROM product;
# 查询product表格中price最大的那一行数据

SELECT MIN(stock) FROM product;
# 查询product表格中stock最小的那一行数据

SELECT SUM(stock) FROM product;
# 查询product表格中总的stock数量

SELECT AVG(price) FROM product WHERE brand='小米';
# 查询brand为小米的平均商品价格

⑪排序查询

1、介绍
关键词功能
ORDER BY 列名1 排序方式1,列名2 排序方式2对指定列排序,ASC升序(默认),DESC降序

注意:用来判断的值需要是int,如果有多个排序条件,当第一个的条件一样时,开始判断第二个条件。

2、排序查询语法

语法

SELECT 列名 FROM 表名 [WHERE 条件] ORDER BY 列名1 排序方式1,列名2 排序方式2;

示例

SELECT * FROM product WHERE ORDER BY stock ASC;
# 按照stock的升序进行排列

SELECT * FROM product WHERE NAME LIKE '%手机%' ORDER BY price DESC;
# 查询表单中NAME值包含手机的所有数据,按照price的降序进行排序

SELECT * FROM product ORDER BY price ASC,stock DESC;
# 查询表单中的所有数据,先按照price的值升序排序,如果price值相同则按照stock的值降序排序。

⑫ 分组查询

1、介绍

分组查询是将要进行分组的数据进行一个列名称的分组处理然后再进行分组后条件过滤或者排序处理

2、分组查询语法

语法

SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序 列名 排序方式]

示例

SELECT brand,SUM(price) FROM product GROUP BY brand;
# 按照brand进行分组,然后对每个分组求price的和

SELECT brand,sum(price) FROM product WHERE price>4000 GROUP BY brand;
# 筛选出price大于4000的数据,按照brand进行分组,然后对分组后的price进行求和。

SELECT brand,sum(price) FROM product WHERE peice>4000 GROUP BY brand HAVING SUM(price) > 7000;
# 筛选出price大于4000的数据,按照brand进行分组,然后对分组后的price进行求和,只输出分组中的price小于7000的

SELECT brand,sum(price) FROM product WHERE peice>4000 GROUP BY brand HAVING SUM(price) > 7000 ORDER BY SUM(price) DESC;
# 筛选出price大于4000的数据,按照brand进行分组,然后对分组后的price进行求和,再只对分组后的price求和后大于7000的数据进行降序排列。

⑬ 分页查询

语法

SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序列名 排序方式] LIMIT 开始索引,查询条款;

注意事项:开始索引 = (当前页码-1) * 每页显示的条数

示例

# 查询期望为每页显示两条数据

SELECT * FROM product LIMIT 0,2;
# 第一页 开始索引 = (1-1) * 2 = 0 

SELECT * FROM product LIMIT 2,2;
# 第二页 开始索引 = (2-1) * 2 = 2

SELECT * FROM product LIMIT 4,2;
# 第三页 开始索引 = (3-1) * 2 = 4

SELECT * FROM product LIMIT 6,2;
# 第四页 开始索引 = (4-1) * 2 = 6

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值