一.MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。在WEB应用方面,MySQL是最好的RDBMS应用软件。MySQL体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

二.建表

环境:MySQL(5.7.20)

CREATE TABLE IF NOT EXISTS `shop`.`spu` (
`spu_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(64) NOT NULL COMMENT '商品名称',
`brand_id` int NOT NULL COMMENT '品牌ID',
`is_online` tinyint(1) unsigned DEFAULT '' COMMENT '是否在线',
PRIMARY KEY (`spu_id`),
KEY `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='SPU信息';

默认Linux系统中,数据库名和表名区分大小写,字段名不区分大小写。
编码使用utf8或者utf8mb4,utf8mb4是utf8的超集,utf8mb4能存储4字节的表情字符。
KEY包含两层意义(约束和索引),建表语句中KEY等同于INDEX,即普通索引。

二.插入

1.INSERT INTO
INSERT INTO `shop`.`spu` VALUES (1, "I Phone 7", 3, 0);  
INSERT INTO `shop`.`spu` (`spu_id`, `name`, `brand_id`, is_online) VALUES (2, "SONY Z3", 7, 1); 

2.INSERT INGORE INTO
INSERT IGNORE INTO `shop`.`spu` (`spu_id`, `name`, `brand_id`, is_online) VALUES (2, "SONY XZ", 7, 1); 

IGNORE插入与INSERT插入功能一样,区别是:如果发现表中已经有此行数据(根据主键或唯一索引判断)则忽略当前插入;否则,插入新数据。

3.REPLACE INTO
REPLACE INTO `shop`.`spu` (`spu_id`, `name`, `brand_id`) VALUES (2, "MI MIX 4", 5); 

REPLACE插入与INSERT插入功能一样,区别是:如果发现表中已经有此行数据(根据主键或唯一索引判断)则先删除此行数据,然后插入新的数据;否则,直接插入新数据。

三.查询

SELECT * FROM `shop`.`spu`;

SELECT * FROM `shop`.`sku`;

1.INNER JOIN

SELECT * FROM `shop`.`spu` spu INNER JOIN `shop`.`sku` sku ON spu.`spu_id` = sku.`spu_id` AND spu.`brand_id` > 3 AND sku.`desc` != '64G';


INNER JOIN只返回符合ON条件的记录,同时会过滤LEFT表和RIGHT表(ON中的过滤条件同时有效)。

2.LEFT JOIN

SELECT * FROM `shop`.`spu` spu LEFT JOIN `shop`.`sku` sku ON spu.`spu_id` = sku.`spu_id` AND spu.`brand_id` > 3 AND sku.`desc` != '64G';


LEFT JOIN不管ON上的条件是否为真,都返回LEFT表中的所有记录,ON只起连接作用(ON中的过滤条件对LEFT表不起作用,只对RIGHT表起过滤作用)。

3.RIGHT JOIN

SELECT * FROM `shop`.`spu` spu RIGHT JOIN `shop`.`sku` sku ON spu.`spu_id` = sku.`spu_id` AND spu.`brand_id` > 3 AND sku.`desc` != '64G';


RIGHT JOIN不管ON上的条件是否为真,都返回RIGHT表中的所有记录,ON只起连接作用(ON中的过滤条件对LEFT表起作用,对RIGHT表不起过滤作用)。

四.聚合函数

SELECT `spu_id`, COUNT(`price`), COUNT(*), MIN(`price`), MAX(`price`), AVG(`price`), SUM(`price`) FROM `shop`.`sku` GROUP BY `spu_id`;


COUNT(*)不忽略NULL值,COUNT(字段名)忽略NULL值。
MIN()、MAX()、AVG()、SUM()等忽略NULL值。

五.更新

MySQL禁止嵌套更新

1.使用子查询

UPDATE `shop`.`sku` SET `price` = (SELECT * FROM (SELECT MAX(`price`) as max_price FROM `shop`.`sku`) as tmp);


2.使用INNER JOIN

UPDATE `shop`.`sku` sku INNER JOIN (SELECT MAX(`price`) AS max_price FROM `shop`.`sku`) tmp SET sku.`price` = tmp.`max_price`;

六.删除

DELETE FROM `shop`.`spu` WHERE `goods_id` = 1; 
TRUNCATE TABLE `shop`.`spu`;

TRUNCATE能够快速清空一个表,清空时不写服务器log,执行效率比DELETE高。

七.导入导出

导出

SELECT * FROM `shop`.`spu` INTO OUTFILE '/tmp/out.csv' FIELDS TERMINATED BY ',';

导入

LOAD DATA INFILE '/tmp/out.csv' INTO TABLE `shop`.`spu` FIELDS TERMINATED BY ',';

八.备份还原

备份
root@e0cdff86e1d2:~# mysqldump -u root -p shop spu sku > /tmp/backup.sql
还原
root@e0cdff86e1d2:~# mysql -u root -p shop < /tmp/backup.sql

MySQL数据库常用操作入门的更多相关文章

  1. DBA必备:MySQL数据库常用操作和技巧

    DBA必备:MySQL数据库常用操作和技巧 2011-02-25 15:31 kaduo it168 字号:T | T MySQL数据库可以说是DBA们最常见和常用的数据库之一,为了方便大家使用,老M ...

  2. MySQL数据库常用操作和技巧

    MySQL数据库可以说是DBA们最常见和常用的数据库之一,MySQL的广泛应用,也使更多的人加入到学习它的行列之中.下面是老MySQL DBA总结的MySQL数据库最常见和最常使用的一些经验和技巧,分 ...

  3. Mysql数据库常用操作语句大全

    零.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...

  4. Mysql数据库常用操作整理

    0.说明 MySQL数据库是一个十分轻便的数据库管理系统,相比大型的数据库管理系统如Oracle,MySQL更拥有轻便.灵活.开发速度快的特色,更适用于中小型数据的存储与架构,被数以万计的网站采用.从 ...

  5. mysql数据库常用操作

    目前最流行的数据库: oracle.mysql.sqlserver.db2.sqline --:单行注释 #:也是单行注释 /* 注释内容*/:多行注释 mysql -uroot -p密码:登录mys ...

  6. Linux下MySql数据库常用操作

    1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 show tables; 4.显示数据表的结构 describe 表名; 5.显示表中记录 S ...

  7. MySQL数据库 常用操作

    1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:创建一个数据库MYSQLDATA mysql> CREATE DATABASE M ...

  8. 连接mysql数据库2+操作入门

    package 对数据库操作Statment; import java.sql.Connection; import java.sql.DriverManager; import java.sql.R ...

  9. MySQL数据库常用操作语法

    1. 数据库初始化配置 1.1. 创建数据库 create database apps character set utf8 collate utf8_bin;创建数据库”app“,指定编码为utf8 ...

随机推荐

  1. Python入门之迭代器/生成器/yield的表达方式/面向过程编程

    本章内容 迭代器 面向过程编程 一.什么是迭代 二.什么是迭代器 三.迭代器演示和举例 四.生成器yield基础 五.生成器yield的表达式形式 六.面向过程编程 ================= ...

  2. Windows10+Docker搭建分布式Redis集群(一)

    摘要,Docker for Windows 仅支持专业版 目录 第一步:检查系统支持虚拟化 第二步:下载Docker对应版本 第三步:配置镜像加速 第一步:检查系统是否支持虚拟化 Docker前提是需 ...

  3. [模板][Luogu3387] 缩点 - Tarjan, 拓扑+DP

    Description 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次 ...

  4. python继承——封装

    python继承--封装 1 为什么要封装 封装数据的主要原因是:保护隐私 封装方法的主要原因是:隔离复杂度 2 封装分为两个层面 第一个层面的封装(什么都不用做):创建类和对象会分别创建二者的名称空 ...

  5. uestc 1703一道更简单的字符串题目

    https://vjudge.net/problem/UESTC-1703 题意:略 思路: 枚举+字符串hash. ans从1到len开始枚举字符串的长度,然后就依次比较各段长度为ans的字符串的h ...

  6. vue中简单的小插曲

    我们现在来学习一下vue中一些简单的小东西: 首先我们必须要引入vue.js文件哦! 1.有关文本框里的checkbox js代码: new Vue({ el:"#app", da ...

  7. oracle:批量插入不同方案对比

    实时测试的速度: --48466条数据 --1.297 inline view更新法 inline view更新法就是更新一个临时建立的视图 update (select a.join_stateas ...

  8. [LeetCode] Out of Boundary Paths 出界的路径

    There is an m by n grid with a ball. Given the start coordinate (i,j) of the ball, you can move the ...

  9. flex布局小记

    越来越深刻的感到日事日毕的必要性,很久之前就做了备忘说要深刻学习flex布局,没想到一拖就拖到了这个时候! 一,什么是flex布局: flex布局即flexible box布局,也就是弹性盒模型或者弹 ...

  10. [POI2016]Nim z utrudnieniem

    Description A和B两个人玩游戏,一共有m颗石子,A把它们分成了n堆,每堆石子数分别为a[1],a[2],...,a[n],每轮可以选择一堆石子,取掉任意颗石子,但不能不取.谁先不能操作,谁 ...