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 ...
随机推荐
- css实现绝对定位元素居中
前端我们时常需要封装一些弹出框,这些弹出框大小都不能确定,多半是用js实现居中. 现在有了css3可以不用js了. .box{ background-color: blueviolet; width: ...
- 全面了解 Linux 服务器 - 1. 查看 Linux 服务器的 CPU 详细情况
1. 查看 Linux 服务器的 CPU 详细情况 判断依据: 具有相同的 core id 的 CPU 是同意个 core 超线程. 具有相同的 physical id 的 CPU 是同一个 CPU ...
- 3. sort命令
转自:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分 ...
- 智能指针 ADO数据库连接
ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口._ConnectionPtr接口返回一个记录集或一个空指针.通常使用它来创建一个 ...
- html嵌套表格示例
常用嵌套表格示例,出自<网页开发手记:HTML+CSS+JavaScript实战详解> <html> <head> <title>嵌套表格布 ...
- jQuery ajax()使用serialize()提交form数据
jQuery的serialize()方法通过序列化表单值,创建URL编码文本字符串,我们就可以选择一个或多个表单元素,也可以直接选择form将其序列化 <form action="&q ...
- CADisplayLink以及和NSTimer的区别
什么是CADisplayLink CADisplayLink是一个能让我们以和屏幕刷新率相同的频率将内容画到屏幕上的定时器.我们在应用中创建一个新的 CADisplayLink 对象,把它添加到一个r ...
- redis集群出现JedisNoReachableClusterNodeException异常(No reachable node in cluster)
上午午好好的,突然抛了如下异常: Exception in thread "main" redis.clients.jedis.exceptions.JedisNoReachabl ...
- VerbalExpressions ——另类正则表达式
对于文本处理来说,正则表达式无疑是一个非常强大的工具.但是编写和阅读正则表达式往往就不是那么一件非常愉快的事情了.本文在这里介绍另一种另类的正则表达式——VerbalExpressions,它采用函数 ...
- android开源框架android-async-http使用
原文地址:http://www.open-open.com/lib/view/open1369637365753.html android-async-http开源框架可以是我们轻松的获取网络数据或者 ...