MySQL 教程(二)基础sql语句,增删改查,聚合函数

一、命令

1. 连接、断开服务器

需要用用户名和密码(也可设置无需密码登录)登录即连接到服务器

shell> mysql -h host -u user -p
Enter password: ********

连接成功后,可以在mysql>提示下输入QUIT (或\q)随时退出:

mysql> QUIT
Bye

二、sql语句

1. 创建并使用数据库

创建数据库:
CREATE DATABASE <数据库名>
CREATE DATABASE IF NOT EXISTS <数据库名>

使用mysqladmin创建 # mysqladmin -u root -p create oss_server

使用数据库:
use <数据库名>
注意:创建并不代表使用,需要明确操作use来指定使用数据库。

2. 查看数据库

查看全部数据库 show databases

查看创建库的详细信息 show create database <数据库名>

3. 删除数据库

drop database <数据库名>
drop database if exists <数据库名>

4. 创建表

CREATE TABLE table_name (column_name column_type);

例子:

CREATE TABLE IF NOT EXISTS `user`(
   `user_id` INT UNSIGNED AUTO_INCREMENT,
   `name` VARCHAR(10) NOT NULL,
   `tel` VARCHAR(20) NOT NULL,
   `birthday` DATE,
   PRIMARY KEY ( `user_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

AUTO_INCREMENT 自增id

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);

5. 删除表

DROP TABLE table_name

6. 查看表

  • 查看库中全部表show tables
    在这里插入图片描述
  • 查看创建表的详细信息show create table table_name
    在这里插入图片描述

7. 查看表的结构

DESCRIBE table_name;desc table_name;

DESCRIBE tl_device_info;

在这里插入图片描述

8. 增删改查

8.1 插入数据 insert

INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );
实例:

"INSERT INTO runoob_tbl ".
        "(runoob_title,runoob_author, submission_date) ".
        "VALUES ".
        "('$runoob_title','$runoob_author','$submission_date')";

8.2 装载数据 LOAD DATA

mysql> LOAD DATA LOCAL INFILE '文件目录' INTO TABLE pet;
在这里插入图片描述

8.3 查询数据 select

SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M]

  • from后可跟多个表,表和表之间用 ','相连
  • where中可包含多个查询条件
  • select后面可以跟着想查询的列名,列与列之间用‘,’相连,也可以用‘*’代替全部列
  • limit设置返回数
  • offset指定数据偏移量,也就是去掉几行元素

查询全部:select * from ...

(1) where子句

where语句中多个条件使用andor来连接,

select * from ... where name = 'wang' and tel='134554654'

and优先级高于or,若需要先执行or部分,可以用小括号来提升其优先级

a. 操作符

b. like子句

sql为like子句提供了四种匹配方式:

  • % :可以匹配任意长度、类型的字符,若是中文,用两个百分号表示(% %)
  • _ :匹配任意类型的单个字符,相当于占位,限制表达式字符
  • [] :括号中可以指定一个或多个字符、字符串或者范围,匹配括号内所列字符中的一个,类似正则。
  • [^]:匹配括号内以外的字符。

示例:

-- 搜索name中最后一个字母是m的记录:
select * from user where name like '%m';
-- 搜索name中第二个字符是a的记录:
select * from user where name like '_a%';
(2) UNION

连接两个或以上的select语句,将其结果组合到一个结果集合中
select ... from ... UNION [ALL/DISTINCT] select ... from ....

  • ALL:可选,返回全部结果集,包含重复数据
  • DISTINCT:可选,删除重复数据,返回剩余数据,默认值
select device_name from tl_device_info
UNION
select device_model from tl_device_type

查询结果:
在这里插入图片描述

(3)排序 order by

SELECT field1, field2,...fieldN FROM table_name1, table_name2... ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
默认为升序排序,降序需要添加关键字DESC

例子:

select * from tl_device_info
order by device_name DESC

在这里插入图片描述

(4)分组 group by

SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;

在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

a. count() 函数

例子,按设备id分组,并查询每个设备id出现了几次

select device_id,count(device_id) from tl_device_status_log
group by device_id

在这里插入图片描述

b. with rollup

跟group by搭配,在分组的基础上对结果进行统计

select device_id,count(device_id) from tl_device_status_log
group by device_id WITH ROLLUP

在这里插入图片描述

select coalesce(a,b,c): 该函数为,当a为null时显示b,若b为null显示c

select COALESCE(device_id,'总计'),count(device_id) from tl_device_status_log
group by device_id WITH ROLLUP

在这里插入图片描述

c. max();列最大值

查询一列中最大数值

select max(id) from tl_device_info

在这里插入图片描述

d. min(); 列最小值
select min(id) from tl_device_info

在这里插入图片描述

e. sum(); 列总和
 SELECT SUM(capacity) from tl_cutting_tool_store_house

在这里插入图片描述
如果在没有返回匹配行 SELECT 语句中使用 SUM 函数,则 SUM 函数返回 NULL,而不是 0。

f. avg();平均值
 SELECT avg(capacity) from tl_cutting_tool_store_house

在这里插入图片描述

(5)联表查询 左联 右联 内联
  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

写一个左连接的例子:
设备表的类型id字段对应 类型表的id,即外键

select di.device_name, dt.device_model
from tl_device_info di
left join tl_device_type dt on di.device_type_id = dt.id

在这里插入图片描述

(6)去重 DISTINCT

SELECT DISTINCT 列名 FROM 表;

8.4 更新数据 update

UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]

update tl_device_info set device_name = 'test1' where id =1

8.5 删除数据 delete

DELETE FROM table_name [WHERE Clause]

系列博客

MySQL 教程(一)概述
MySQL 教程(二)基础sql语句,增删改查,聚合函数
MySQL 教程(三)函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值