mysqlNote - juedaiyuer/researchNote GitHub Wiki

#MYSQL笔记#

##命令使用笔记##

mysql -uroot -p 连接数据库

show databases;  显示所有数据库
show tables; 显示当前所在库的数据表

##创建数据库##

CREATE DATABASE IF NOT EXISTS your_database; 创建数据库

CREATE DATABASE IF NOT EXISTS hibernate DEFAULT charset=utf8 COLLATE utf8_general_ci;

##删除数据库##

drop database 数据库名

##表结构##

DESC table_Name; 查看表结构

show create table 表名\G; 查看表的定义

status; 当前mysql的version的各种信息

truncate table 表名; 清空表中的数据,不记录mysql日志

delete from 表名 where 表达式 删除表中的某些数据

DROP TABLE tb_name 删除表

select * from tb_name 查询表中的数据

事务

--事务的开启
mysql> begin;

--事务的提交
mysql> commit;

Mysql数据库中文乱码问题

  1. 建库设定编码问题

  2. 连接mysql数据库的url编码问题

    jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8


mysqld与mysqld_safe的区别

在Unix和NetWare中推荐使用mysqld_safe来启动mysqld服务器

安全启动脚本


##error1045处理日志##

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

root@juedaiyuer:/home/juedaiyuer# /etc/init.d/mysql stop
root@juedaiyuer:/usr/bin# ./mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
root@juedaiyuer:/usr/bin# mysql -u root -p

mysql> use mysql;
mysql> FLUSH PRIVILEGES;
mysql> quit

root@juedaiyuer:/usr/bin# /etc/init.d/mysql restart
root@juedaiyuer:/usr/bin# mysql -u root -p

...


##JOIN##

根据两个或多个表中的列之间的关系,来查询数据

内连接

Inner Join
表中存在至少一个匹配

内连接集合关系图

左外连接

Left Outer Join

左外连接集合关系图

右外连接

集合图类似于左外连接,只不过是以右集合为主的处理方式
从右表那里返回所有的行,即使左表没有匹配的行
参照下面的语法,右表为table_name2

关键语法

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

全连接

全连接集合关系图

Full join 关键字会从左表和右表返回所有的行
mysql默认不支持full join查询

Cross Join

交叉连接,又称笛卡尔连接或叉乘,很少情况使用.

Join的使用技巧

使用join优化子查询

使用join优化聚合子查询

分组选择

##行列转换##

报表统计,汇总显示

sum函数的使用

汇总显示:
使用了cross join处理技巧
case命令

列转行 属性拆分
ETL数据处理


  1. w3school
  2. imooc-MySQL开发技巧