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 ...
随机推荐
- linux 安装jdk以及nginx详细过程
一.安装jdk 1:首先下载jdk到本地,然后通过git 上传到linux服务器上 2:进入目录usr,并创建目录java,将jdk的压缩文件移动到该目录下 cd /usr mkdir java mv ...
- spring boot 系列之四:spring boot 整合JPA
上一篇我们讲了spring boot 整合JdbcTemplate来进行数据的持久化, 这篇我们来说下怎么通过spring boot 整合JPA来实现数据的持久化. 一.代码实现 修改pom,引入依赖 ...
- Centos下安装 .net Core运行程序
首先要进行更新下镜像文件 sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e ...
- 宝宝巴士-自动化团队-纵世科技-Wiger-原创分享-QQ:18630195
软件定制请联系QQ: 更新原创技术博客,以及学习心得...... 软件定制请联系QQ:
- Linux OpenGL 实践篇-1 OpenGL环境搭建
本次实践所使用环境为CentOS 7. 参考:http://www.xuebuyuan.com/1472808.html OpenGL开发环境搭建: 1.opengl库安装 opengl库使用mesa ...
- [LeetCode] Freedom Trail 自由之路
In the video game Fallout 4, the quest "Road to Freedom" requires players to reach a metal ...
- [LeetCode] Max Consecutive Ones 最大连续1的个数
Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...
- 使用redis,zookeeper实现分布式锁
1.分布式锁 分布式锁一般用在分布式系统或者多个应用中,用来控制同一任务是否执行或者任务的执行顺序.在项目中,部署了多个tomcat应用,在执行定时任务时就会遇到同一任务可能执行多次的情况,我们可以借 ...
- Caffe的运行mnist手写数字识别
老规矩,首先附上官方教程:http://caffe.berkeleyvision.org/gathered/examples/mnist.html 1.必要软件 因为Caffe中使用的是Linux才能 ...
- hdu 3948 后缀数组
The Number of Palindromes Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (J ...