MySQL数据库常用操作入门
一.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数据库常用操作入门的更多相关文章
- DBA必备:MySQL数据库常用操作和技巧
DBA必备:MySQL数据库常用操作和技巧 2011-02-25 15:31 kaduo it168 字号:T | T MySQL数据库可以说是DBA们最常见和常用的数据库之一,为了方便大家使用,老M ...
- MySQL数据库常用操作和技巧
MySQL数据库可以说是DBA们最常见和常用的数据库之一,MySQL的广泛应用,也使更多的人加入到学习它的行列之中.下面是老MySQL DBA总结的MySQL数据库最常见和最常使用的一些经验和技巧,分 ...
- Mysql数据库常用操作语句大全
零.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...
- Mysql数据库常用操作整理
0.说明 MySQL数据库是一个十分轻便的数据库管理系统,相比大型的数据库管理系统如Oracle,MySQL更拥有轻便.灵活.开发速度快的特色,更适用于中小型数据的存储与架构,被数以万计的网站采用.从 ...
- mysql数据库常用操作
目前最流行的数据库: oracle.mysql.sqlserver.db2.sqline --:单行注释 #:也是单行注释 /* 注释内容*/:多行注释 mysql -uroot -p密码:登录mys ...
- Linux下MySql数据库常用操作
1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 show tables; 4.显示数据表的结构 describe 表名; 5.显示表中记录 S ...
- MySQL数据库 常用操作
1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:创建一个数据库MYSQLDATA mysql> CREATE DATABASE M ...
- 连接mysql数据库2+操作入门
package 对数据库操作Statment; import java.sql.Connection; import java.sql.DriverManager; import java.sql.R ...
- MySQL数据库常用操作语法
1. 数据库初始化配置 1.1. 创建数据库 create database apps character set utf8 collate utf8_bin;创建数据库”app“,指定编码为utf8 ...
随机推荐
- Spring Security 入门(1-1)Spring Security是什么?
1.Spring Security是什么? Spring Security 是一个安全框架,前身是 Acegi Security , 能够为 Spring企业应用系统提供声明式的安全访问控制. Spr ...
- C# 解析json数据出现---锘縖
解析json数据的时候出现 - 锘縖,不知道是不是乱码,反正我是不认识这俩字.后来发现是json的 '[' 字符转换的 网上搜了一下,说的是字符集不匹配,把字符集改为GB2312. 一.贴下处理jso ...
- NHibernate的基本使用
一.O/R Mapping 概论 工厂模式+反射+每个数据库的DAL层来解决数据访问层的代码 针对数据库表中字段的变化我们是无法预料的,所以每一次用户需求的修改都会直接导致我们程序员来修改—实体类(B ...
- 复习HTML+CSS(2)
n 项目符号嵌套编号思路 标签的内容(文本.项目符号.表格.图片等)必须放在最底层标记中. n 图片标记(行内元素,单边标记) l 语法:<img 属性 = "值"&g ...
- Struts(十七):通过CURD来学习paramsPrepareParams拦截器栈
背景: 通过上一章节<Struts(十六):通过CURD来学习Struts流程及ModelDriven的用法>学习了ModelDriven拦截器的用法,上章节中讲到了edit功能. 要修改 ...
- C语言 左值、右值
左值就是在赋值中可以放在赋值操作符两边的值 右值则是只可以放在赋值操作符右边的值 ++i是直接给i变量加1,然后返回i本身,因为i是变量,所以可以被赋值,因此是左值表达式i++现产生一个临时变量,记录 ...
- Java中的几种常用循环
循环的条件 反复执行一段相同或相似的代码 一 for循环 先判断,再执行 代码示例为 ① for (int i = 0; i < args.length; i++) ...
- Java动态代理模式浅析
Java代理设计模式 - 静态代理 Java中的动态代理 - 调用处理器 代理设计模式的UML图: 我将首先介绍Java中的各种代理实现方法 Java代理设计模式 - 静态代理 这个例子非常简单,只有 ...
- win10+ ubuntu12.04双系统安装教程与遇到的问题
1. 准备ISO. 参考:网站http://mirrors.ustc.edu.cn/ubuntu-releases/precise/ 下载 ubuntu-12.04.5-desktop-amd64.i ...
- Python模块 - re
Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析.复杂字符串分析和信息提取时是一个非常有用的工具,下面我主要总结了re的常用方法 ...