文档章节

Mysql学习总结

playgame
 playgame
发布于 2016/06/27 16:27
字数 1790
阅读 3
收藏 0
点赞 0
评论 0

下面是我的Mysql总结,请大家参考。

-- mysql 添加一个用户(请注意使用MySQL提供的 PASSWORD() 函数来对密码进行加密)
-- 注意:在注意需要执行 FLUSH PRIVILEGES 语句。 这个命令执行后会重新载入授权表。
INSERT INTO user (host, user, password, select_priv, insert_priv, update_priv) VALUES ('localhost', 'guest', PASSWORD('guest123'), 'Y', 'Y', 'Y');
FLUSH PRIVILEGES;


-- 方法二:
GRANT INSERT,UPDATE,SELECT,DELETE,CREATE,DROP ON bank.* TO 'tester'@'localhost' IDENTIFIED by  '123456';
FLUSH PRIVILEGES;

-- 查看数据库
SHOW databases;

USE bank;
SHOW tables;
-- 显示列和索引
SHOW COLUMNS FROM customer;
SHOW INDEX FROM customer;

-- 显示状态
SHOW TABLE STATUS FROM bank;
-- 在navicat中无法执行
SHOW TABLE STATUS FROM bank LIKE 'admin%'\g;
SHOW TABLE STATUS from bank LIKE 'ad%'\G; 
-- 用户连接
mysql -u root -p

-- 创建、删除、查看数据库
create database oo_test;
DROP DATABASES oo_test;
show databases;

-- 选择数据库
use bank;


-- 创建数据表
CREATE TABLE borrower(
b_id INT NOT NULL AUTO_INCREMENT,
b_name VARCHAR(50) NOT NULL,
borrow_date DATE,
borrow_balance INT NOT NULL,
PRIMARY KEY (b_id)
);

-- 删除数据表
DROP TABLE borrower;

-- 插入数据(NOW() 是一个 MySQL 函数,该函数返回日期和时间)
INSERT INTO borrower(b_name,borrow_date,borrow_balance) VALUES('zhangsan',NOW(),20000);
INSERT INTO borrower(b_name,borrow_date,borrow_balance) VALUES('lisi',NOW(),30000);
INSERT INTO borrower(b_name,borrow_date,borrow_balance) VALUES('wangwu',NOW(),50000);

-- 查询数据
SELECT * FROM borrower;

-- where 子句(需要扩充查询)
-- 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
-- 你可以在WHERE子句中指定任何条件。
-- 你可以使用AND或者OR指定一个或多个条件。
-- WHERE子句也可以运用于SQL的 DELETE 或者 UPDATE 命令。
SELECT * FROM borrower WHERE b_name='zhangsan';


-- UPDATE 查询 UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
-- 可以同时更新一个或多个字段。
-- 可以在 WHERE 子句中指定任何条件。
-- 可以在一个单独表中同时更新数据。
update borrower SET b_name='liubei',borrow_balance=90000 where b_id=1;

-- DELETE 语句 DELETE FROM table_name [WHERE Clause]
DELETE FROM borrower WHERE b_id=1;

-- LIKE 子句
SELECT * FROM borrower WHERE b_name LIKE 'wang%';

-- 排序 升序:ASC (默认升序) 降序:DESC
SELECT * FROM borrower ORDER BY borrow_balance DESC;

-- 分组 (ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)
SELECT Count(*),SUM(borrow_balance),AVG(borrow_balance),borrow_date FROM borrower GROUP BY borrow_date;


-- 表连接 (两个或多个表中查询数据)
-- INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)
SELECT c.custIdCard,c.custMoney,c.custName,b.b_name,b.borrow_balance FROM customer c INNER JOIN borrower b ON c.cust_id=b.b_id;

SELECT c.custIdCard,c.custMoney,c.custName,b.b_name,b.borrow_balance FROM customer c LEFT JOIN borrower b ON c.cust_id=b.b_id;

SELECT c.custIdCard,c.custMoney,c.custName,b.b_name,b.borrow_balance FROM customer c RIGHT JOIN borrower b ON c.cust_id=b.b_id;


-- NULL 值处理 (IS NOT NULL、IS NULL、<=>: 比较操作符(不同于=运算符),当比较的的两个值为NULL时返回true)

SELECT * FROM borrower WHERE return_date IS NOT NULL;

-- 正则表达式
-- 包含
SELECT * FROM borrower WHERE b_name REGEXP 'g';
-- 以z开头
SELECT * FROM borrower WHERE b_name REGEXP '^z';
-- 以u结尾
SELECT * FROM borrower WHERE b_name REGEXP 'u$';


-- 事务,事务是必须满足4个条件(ACID):Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)
-- 1. 事务的原子性:一组事务,要么成功;要么撤回。
-- 2. 稳定性 : 有非法数据(外键约束之类),事务撤回。
-- 3. 隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。
-- 4. 可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。


-- 1. 开始一个事务
start transaction;
-- 2. 做保存点
savepoint test_point;
-- 3. 操作
-- 4. 可以回滚,可以提交
rollback to test_point;
ROLLBACK;
COMMIT;


-- ALTER命令(删除,添加或修改表字段)
-- 增加字段
ALTER TABLE borrower ADD ttt INT;
-- 删除字段
ALTER TABLE borrower DROP ttt;
-- 修改字段
ALTER TABLE borrower MODIFY borrow_balance VARCHAR(20);
-- 修改字段
ALTER TABLE borrower CHANGE ttt num BIGINT;
-- 指定字段 num 为 NOT NULL 且默认值为100 
ALTER TABLE borrower MODIFY num BIGINT NOT NULL DEFAULT 100;

-- 修改表名
ALTER TABLE borrow RENAME TO borrower;

-- 索引 (单列索引、组合索引) CREATE INDEX indexName ON mytable(username(length)); 
-- 添加索引
CREATE INDEX bname ON borrower(b_name);
ALTER TABLE borrower ADD INDEX (return_date);

-- 删除索引 DROP INDEX [indexName] ON mytable; 
DROP INDEX rdate ON borrower;

-- 唯一索引
CREATE UNIQUE INDEX bid ON borrower(b_id);
ALTER TABLE borrower ADD UNIQUE INDEX (b_id);

DROP INDEX bid ON borrower;
ALTER TABLE borrower DROP INDEX b_id;


-- 临时表 (临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间)

CREATE TEMPORARY  TABLE tmp_borrower(
b_id INT NOT NULL AUTO_INCREMENT,
b_name VARCHAR(50) NOT NULL,
borrow_date DATE,
borrow_balance INT NOT NULL,
PRIMARY KEY (b_id)
);

INSERT INTO tmp_borrower(b_name,borrow_date,borrow_balance) VALUES('wangwu',NOW(),50000);

SELECT * FROM tmp_borrower;

DROP TABLE tmp_borrower;

-- 复制表
-- 创建新表结构
CREATE TABLE new_borrower (
`b_id`  int(11) NOT NULL AUTO_INCREMENT ,
`b_name`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`borrow_date`  date NULL DEFAULT NULL ,
`borrow_balance`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`return_date`  date NULL DEFAULT NULL ,
`num`  bigint(20) NOT NULL DEFAULT 100 ,
PRIMARY KEY (`b_id`),
INDEX `bname` USING BTREE (`b_name`) 
)
ENGINE=MyISAM
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=910
CHECKSUM=0
ROW_FORMAT=DYNAMIC
DELAY_KEY_WRITE=0
;

-- 插入数据
INSERT INTO new_borrower(b_name,borrow_date,borrow_balance) SELECT b_name,borrow_date,borrow_balance FROM borrower;

SELECT * FROM new_borrower;


-- 元数据
-- 查询结果信息(SELECT, UPDATE 或 DELETE语句影响的记录数),在控制台就可以看到
UPDATE borrower SET return_date=NOW() WHERE return_date IS NULL;

UPDATE borrower SET return_date=NULL WHERE return_date IS NOT NULL;

-- 数据库和数据表的信息: 包含了数据库及数据表的结构信息。
SHOW TABLES;
SHOW DATABASES;

-- 服务器元数据
SELECT VERSION();
SELECT DATABASE();

SELECT USER();

-- 服务器状态
SHOW STATUS;
-- 服务器配置变量
SHOW VARIABLES;

-- 序列使用,见创建表id字段;
-- 获取AUTO_INCREMENT值 
INSERT INTO borrower(b_name,borrow_date,borrow_balance) VALUES('wangwu',NOW(),50000);

SELECT LAST_INSERT_ID();


-- 处理重复数据
-- 如果你想设置表中字段first_name,last_name数据不能重复,你可以设置双主键模式来设置数据的唯一性, 
-- 如果你设置了双主键,那么那个键的默认值不能为NULL,可设置为NOT NULL。
CREATE TABLE person(
first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(20) NOT NULL,
sex CHAR(5)
);
INSERT INTO person VALUES('san','zhang','M');
INSERT INTO person VALUES('si','li','F');
-- INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据
INSERT IGNORE INTO person VALUES('si','li','F');

-- 统计重复数据
SELECT COUNT(*) as repetitions, last_name, first_name FROM person GROUP BY last_name, first_name HAVING COUNT(*)>1;

-- 过滤重复数据

SELECT DISTINCT last_name,first_name FROM person;

SELECT last_name,first_name FROM person GROUP BY (last_name);

-- SQL 注入
-- 防止sql注入
-- 不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。
-- 永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取,比如java中用PreparedStatement代替Statement
-- 永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接
-- 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
-- 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
-- 软件一般采用sql注入检测工具jsky、MDCSOFT SCAN等

-- 导出数据、导入数据 (命令控制台下运行)
mysqldump -u root -p  bank>bank.txt;

mysql -u root -p  bank  <bank.txt;

 

参考资料:http://www.runoob.com/mysql/mysql-tutorial.html

© 著作权归作者所有

共有 人打赏支持
playgame
粉丝 0
博文 26
码字总数 10272
作品 0
洛阳
QA/测试工程师
Macbook AIR配置PHP开发环境

前言 15初买了这台破air,一直闲置到现在,为了方便准备用这台电脑来做php开发,所以准备将所有的工作环境都慢慢的迁移到Mac上来,简单的使用了一下,确实不错,用户体验真的是非常好。目前在...

微博士
2016/05/07
717
11
MySQL入门教程系列-1.5 如何学习MySQL

在这里持续更新 MySQL入门教程系列-1.5 如何学习MySQL 如何学习 MySQL 这是一个伪命题,每个人都有适合自己的一套学习方法,各

同一种调调
2016/09/28
15
0
深入理解MySQL 5.7 GTID系列(一)

MySQL GTID特性是5.6加入的一个强大的特性,它的目的在于使用GTID的MySQL能够在整个复制环境中能够自动地切换,而不像以前需要指定文件和位置,这也一定是未来发展的方向,我们熟知的MGR也是...

技术小能手
01/08
0
0
MySQL学习总结----数据类型

MySQL学习总结----数据类型 MySQL数据库提供了整型、浮点数型、定点数型。 ================================================================================ 一、MySQL中的表 ==========...

doublelinux
2017/10/15
0
0
docker 制作mysql镜像(一)

最近在学习docker,在直接mysql镜像的时候发现了一些问题。 开始想直接用从docker资源库里下载镜像为了省事,但是出现了问题是。只能启动一个mysql容器,启动第二的时候就不行了。只能保证一...

并不是
2016/10/31
280
0
MySQL学习总结----用户管理+权限管理

MySQL学习总结----用户管理+权限管理 ================================================================================ 一、MySQL添加用户 ==========================================......

doublelinux
2017/10/16
0
0
OSChina 技术周刊第二期

每周技术抢先看,总有你想要的! 移动开发 【软件】Google Android 官方培训课程中文版 【博客】iOS开发之Swift调用Objective-C代码 【博客】教你爱上Blocks(闭包)(iOS) 【博客】uick-co...

OSC编辑部
2014/09/28
11.7K
34
Mysql配置参数innodb_buffer_pool_size的学习与整理

原文地址:Mysql配置参数innodbbufferpoolsize的学习与整理 这半个月来,一直在做一些关于服务器交易端性能的提升工作,主要是分析和讨论交易端性能的瓶颈,找出导致性能减慢的原因,拟定出合...

Realfighter
2015/01/15
0
1
如何学习Liunx和个人学习大纲

提醒不甘平凡的我 2009大学刚刚毕业(不是正规大学,没来北京之前,在家里不是打架就是闲逛,家里人怕早晚出事,索性花钱上了这个“大学”)找了一家IT培训机构。当时的培训机构出名两家:“...

jcpokai521
2017/02/28
0
0
后端技术栈

Nginx 工作原理和优化、漏洞(下) Nginx 工作原理和优化、漏洞(下) Mysql查询性能优化的心得 前言:之前实习时候做过一阵子的查询优化,那段时间结合阅读《高性能mysql》,有些心得体会,...

掘金官方
2017/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
今天
0
0
Android 复制和粘贴功能

做了一回搬运工,原文地址:https://blog.csdn.net/kennethyo/article/details/76602765 Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。 ClipboardManager mClipboardM...

她叫我小渝
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
6
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部