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

文章目录

  • 一、命令
    • 1. 连接、断开服务器
  • 二、sql语句
    • 1. 创建并使用数据库
    • 2. 查看数据库
    • 3. 删除数据库
    • 4. 创建表
      • AUTO_INCREMENT 自增id
    • 5. 删除表
    • 6. 查看表
    • 7. 查看表的结构
    • 8. 增删改查
      • 8.1 插入数据 insert
      • 8.2 装载数据 LOAD DATA
      • 8.3 查询数据 select
        • (1) where子句
          • a. 操作符
          • b. like子句
        • (2) UNION
        • (3)排序 order by
        • (4)分组 group by
          • a. count() 函数
          • b. with rollup
          • c. max();列最大值
          • d. min(); 列最小值
          • e. sum(); 列总和
          • f. avg();平均值
        • (5)联表查询 左联 右联 内联
        • (6)去重 DISTINCT
      • 8.4 更新数据 update
      • 8.5 删除数据 delete

一、命令

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
    MySQL 教程(二)基础sql语句,增删改查,聚合函数_第1张图片
  • 查看创建表的详细信息show create table table_name
    在这里插入图片描述

7. 查看表的结构

DESCRIBE table_name;desc table_name;

DESCRIBE tl_device_info;

MySQL 教程(二)基础sql语句,增删改查,聚合函数_第2张图片

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;
MySQL 教程(二)基础sql语句,增删改查,聚合函数_第3张图片

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. 操作符

MySQL 教程(二)基础sql语句,增删改查,聚合函数_第4张图片

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

查询结果:
MySQL 教程(二)基础sql语句,增删改查,聚合函数_第5张图片

(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

MySQL 教程(二)基础sql语句,增删改查,聚合函数_第6张图片

(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

MySQL 教程(二)基础sql语句,增删改查,聚合函数_第7张图片

b. with rollup

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

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

MySQL 教程(二)基础sql语句,增删改查,聚合函数_第8张图片

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

MySQL 教程(二)基础sql语句,增删改查,聚合函数_第9张图片

c. max();列最大值

查询一列中最大数值

select max(id) from tl_device_info

MySQL 教程(二)基础sql语句,增删改查,聚合函数_第10张图片

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

MySQL 教程(二)基础sql语句,增删改查,聚合函数_第11张图片

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

MySQL 教程(二)基础sql语句,增删改查,聚合函数_第12张图片
如果在没有返回匹配行 SELECT 语句中使用 SUM 函数,则 SUM 函数返回 NULL,而不是 0。

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

MySQL 教程(二)基础sql语句,增删改查,聚合函数_第13张图片

(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

MySQL 教程(二)基础sql语句,增删改查,聚合函数_第14张图片

(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,数据库)