MYSQL基础--学习笔记
最近一段时间,系统的学习了下mysql相关知识,当然都是比较基础的,现在贴出来,以供参考备忘--帅帅的小猪猪
创建用户:
CREATE USER 'sampadm'@'localhost' IDENTIFIED BY 'secret';
赋权限:
GRANT ALL ON sampdb.* TO 'sampadm'@'localhost';
回收权限:
REVOKE ALL ON *.* FORM 'sampadm'@'localhost';
刷新权限:
FLUSH PRIVILEGES;
删除用户:
DELETE FROM mysql.user WHERE user='sampadm' AND host='localhost';
更改密码:
UPDATE mysql.user SET password=password('新密码') WHERE user='sampadm' AND host='localhost';
查看权限种类:
mysql>SHOW PRIVILEGES;
查看当前用户有哪些权限:
mysql>SHOW GRANTS;
COUNT(*)的统计结果是被选中的数据行的总数,而COUNT(数据列名称)值则只统计全体非NULL值的个数。有差别!!!
查看数据库数据存放位置
mysql>SHOW VARIALBES LIKE 'datadir';
MEMORY数据表是一种贮存在内存中的表,其数据都存在内存而不是硬盘中,所以当服务器重启或关机时,MEMORY表数据会丢失,但依然能查询到该表,有其表结构
bin>mysqldump -u xxx -p db_name tbl_name > xxx.sql
密码不能直接打出来,否则会报warning
几个常用用例:
1.导出整个数据库
mysqldump [-h 主机名 -P 端口号] -u 用户名 -p 数据库名 > 导出的文件名
mysqldump [-h 127.0.0.1 -P 3306] -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库
常用source 命令
mysql>source aa.sql
设置字符集(数据库、数据表、数据列均可)
CHARACTER SET charset
排序方式
COLLATE collation
查看数据库的存储引擎
mysql>SHOW VARIABLES LIKE '%storage_engine%';
查看当前数据库中各表信息
mysql>SHOW TABLE STATUS;
mysql>CREATE TABLE IF NOT EXISTS tbl_name(...);
TEMOPARY临时表当与服务器断开时会自动消失。TEMPORARY表只对创建该表的客户(创建的链接)是可见的,因为每个客户只能看到自己创建的数据表,所以不同的客户可以各自创建一个名字相同的TEMPORARY数据表而不会发生冲突。而且因为TEMPORARY表是隐藏的,即使本数据库中有与这张同名的表也可创建,而且查询的时候会查寻TEMPORARY表的数据。
创建一张表的副本(不带数据),可以将原表的表结构完全复制
mysql>CREATE TABLE copy_tbl_name LIKE tbl_name;
而创建副本并带数据的话,表结构不能完全复制,如索引、AUTO_INCREMENT
mysql>CREATE TABLE copy_tbl_name SELECT * FROM tbl_name [WHERE XXXX];
MERGE表可以查各个MyISAM表,前提是表结构一致,如:
CREATE TABLE log_2007 CREATE TABLE log_2008
( (
dt DATETIME NOT NULL, dt DATETIME NOT NULL,
info VARCHAR(100) NOT NULL, info VARCHAR(100) NOT NULL,
INDEX (dt) INDEX (dt)
) ENGINE = MyISAM; ) ENGINE = MyISAM;
CREATE TABLE log_merge
(
dt DATETIME NOT NULL,
info VARCHAR(100) NOT NULL,
INDEX (dt)
) ENGINE = MERGE UNION = (log_2007, log_2008);
查询几个日志表总行数:
SELECT COUNT(*) FROM log_merge;
这几年每年各有多少事情发生:
SELECT YEAR(dt) AS y, COUNT(*) AS intries FROM log_merge GROUP BY y;
MERGE表可执行UPDATE和DELETE操作,但不能执行INSERT操作,因为不知道往那张表插数据,故要加数据必须给其INSERT_METHOD值(NO/FIRST/LAST),ALTER TABLE log_merge INSERT_METHOD = LAST;
MERGE表还可包括压缩的数据表
创建索引:
mysql>ALTER TABLE tble_name ADD INDEX index_name (index_columns);
mysql>ALTER TABLE tble_name ADD UNIQUE index_name (index_columns);
mysql>ALTER TABLE tble_name ADD PRIMARY KEY (index_columns);
mysql>ALTER TABLE tble_name ADD FULLTEXT index_name (index_columns);
mysql>ALTER TABLE tble_name ADD SPATIAL index_name (index_columns);
改变数据列的数据类型:
mysql>ALTER TABLE tbl_name MODIFY i SMALLINT UNSIGNED;
mysql>ALTER TABLE tbl_name CHANGE i i SMALLINT UNSIGNED;
MODIFY和CHANGE子句都可以改变数据列的数据类型,但CHANGE还可同时修改数据列的名称,不过即使不用修改,也要把名称再多写一遍
加上数据库名称可以将该表移到另一个数据库:
ALTER TABLE db_name1.tbl_name MODIFY db.name2.tbl_name;
查找某张表是否存在(不包括TEMPORARY表)
mysql>SHOW TABLES LIKE 'tbl_name';
mysql>SHOW TABLES FROM db_name LIKE 'tbl_name';
查找某张表是否存在(包括TEMPORARY表)
mysql>SELECT COUNT(*) FROM tbl_name;
mysql>SELECT * FROM tbl_name WHERE FALSE;
UNION 是 UNION DISTINCT 的同义词,如有相同的记录则会只保留一条,若想全保留,用UNION ALL;当UNION 与UNION ALL 混用时,每个UNION操作将优先于它左边的任何UNION ALL操作
设置事物的隔离级别:
SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL level;
level: READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
子表里定义一个外键的语法:
[CONSTRAINT constraint_name]
FOREIGN KEY [fk_name] (index_columns)
REFERENCES tbl_name (index_columns)
[ON DELETE action]
[ON UPDATE action]
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
例子:
CREATE TABLE a (id SMALLINT UNSIGNED NOT NULL PRIMARY KEY);
CREATE TABLE b
(id SMALLINT UNSIGNED,
name VARCHAR(10),
FOREIGN KEY (id) REFERENCES a (id)
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE = InnoDB;
加载txt类型数据:
mysql>LOAD DATA LOCAL INFILE 'PATH' INTO TABLE tbl_name (col_name1, col_name2....);
查看存储过程:
mysql>SHOW PROCEDURE STATUS;
mysql>SHOW CREATE PROCEDURE proc_name;
触发器:
mysql>DELIMITER $
>CREATE TRIGGER tri_name BEFORE/AFTER INSERT/UPDATE/DELETE ON tbl_name
>FOR EACH ROW
>BEGIN
>.....
>END$
mysql>DELIMITER ;
PS: 1、NEW/OLD 可取出修改后的或未修改前的字段值
2、Not allowed to return a result set from a trigger;不允许有返回值
查看事件是否开启:
mysql>SHOW VARIABLES LIKE 'EVENT_SCHEDULER'; -- 0/OFF 1/ON
设置事件开启/关闭:(要有supper权限)
mysql>SET GLOABLE EVENT_SCHEDULER = 1/ON; -- 开启
mysql>SET GLOABLE EVENT_SCHEDULER = 0/OFF; -- 关闭
事件语法:
mysql>CREATE EVENT event_name
>ON SCHEDULE EVERY n interval/AT some_time
>DO ....;
MYSQL基础--学习笔记的更多相关文章
- 尚硅谷MySQL基础学习笔记
目录 写在前面 MySQL引入 数据库的好处 数据库的相关概念 数据库存储数据的特点 MySQL服务的启动和停止 MySQL服务端的登录和退出 MySQL的常用命令 MySQL语法规范 DQL(Dat ...
- MySQL基础学习笔记
一.数据库基本概念 1.1 数据库 - Database 从字面意思看,数据库就是一个存储数据的仓库.从计算机的角度来讲,数据库(Datebase)是按照数据结构来组织.存储和管理数据的仓库. 简单来 ...
- MySql 基础学习笔记 1——概述与基本数据类型: 整型: 1)TINYINT 2)SMALLINT 3) MEDIUMINT 4)INT 5)BIGINT 主要是大小的差别 图 浮点型:命令
一.CMD中经常使用mysql相关命令 mysql -D, --database=name //打开数据库 --delimiter=name //指定分隔符 -h, --host=name // ...
- Mysql数据库基础学习笔记
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- 基于【 MySql 】二 || mysql详细学习笔记
mysql重点学习笔记 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysql ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
随机推荐
- VC中GBK与UTF8转化
void ConvertGBKToUtf8(CString& strGBK) { int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strG ...
- Android事件分发机制(二)30分钟弄明白Touch事件分发机制
Touch事件分发中只有两个主角:ViewGroup和View.Activity的Touch事件事实上是调用它内部的ViewGroup的Touch事件,可以直接当成ViewGroup处理. View在 ...
- c/c++ 对象内存布局
一.对象内存查看工具 VS 编译器 CL 的一个编译选项可以查看 C++ 类的内存布局,非常有用.使用如下,从开始程序菜单找到 Visual Stdio 2012. 选择 VS 的命令行工具,按如下格 ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- Easyui CSS式样重写
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui ...
- Hibernate day03笔记
Hibernate的关联关系映射:(多对多) 多对多的配置: 步骤一创建实体和映射: Student: public class Student { private Integer sid ...
- Mybatis 插入null值报错
解决方法: 1.在settings中配置 <setting name="jdbcTypeForNull" value="OTHER"/> MyBat ...
- SVD++:推荐系统的基于矩阵分解的协同过滤算法的提高
1.背景知识 在讲SVD++之前,我还是想先回到基于物品相似的协同过滤算法.这个算法基本思想是找出一个用户有过正反馈的物品的相似的物品来给其作为推荐.其公式为:
- Linux防火墙
9.1 认识防火墙 只要能够分析与过滤进出我们管理之网域的封包数据, 就可以称为防火墙. 硬件防火墙 由厂商设计好的主机硬件, 这部硬件防火墙内的操作系统主要以提供封包数据的过滤机制为主,并将其他 ...
- linux(debian)下邮件发送
关键字: exim4 mutt smtp 主要的事情就是配置exim4,按照网上的流程来.在这里总结一下: 需要修改的文件有三个:/etc/exim4/update-exim4.conf.conf ...