MySQL

  1. 数据库结构图
  2. MySQL安装
  3. MySQL管理
  4. MySQL数据编码

数据库结构图

+--------------------DataBase----------------------+
| |
| Table 1 Table 2 |
| .......,......,.....,......, .....,...., |
| ,. 列 : 列 ., 列 ,. 列 : , 列 : 列 : |
| ,. 表 , 表 , 表 ,. 表 , , 表 , 表 , |
| ,. 1 : 2 ., 3 ,. 4 , , 1 : 2 , |
| ,,.....;.....,:.....:,.....: ,....;...,: |
| ,. , , ,. , ... , , , |
| ,. D , D , D ,. D , ... , D , D , |
| ,. A , A , A ,. A , , A , A , |
| ,. T , T , T ,. T , , T , T , |
| ,. A , A , A ,. A , , A , A , |
| ,. , , ,. , , , , |
| .......,......,.....,,....., .....,...., |
+--------------------------------------------------+

MySQL安装

# yum list | grep mysql  
# yum install -y mysql-server -- mysql 服务端
# yum install -y mysql --- mysql 客户端
# yum install -y mysql-devel --- mysql开发库文件

# service mysqld start --- 启动 mysql
  • 配置 mysql 用户密码

    # mysqladmin -u 用户名 -p 旧密码 password 新密码    ---  首次登录 mysql 时 root 用户没有密码可以省略" -p 旧密码"
  • mysql 配置文件一般位于: /etc/my.cnf 文件.(也有可能没有,需要手动添加)

  • mysql 数据库文件位于: /var/lib/mysql/ 文件夹内.其中 mysql/test/ 为mysql自带的数据库文件. 用户每建一个数据库此处都会对应一个数据库文件夹.

  • mysql 日志文件: /var/log/mysqld.log

  • mysql 默认端口为 3306/TCP ( $netstat可查看)

MySQL管理

  • 创建mysql用户:
mysql> CREATE USER 用户名 IDENTIFIED BY ‘密码’ ;
##Mysql 用户信息被保存在mysql数据库中的user表中.并且新创建的用户由于没有设置权限,将无法登录
  • 删除/重命名 mysql用户:
mysql> DROP USER 用户名 ;

mysql> RENAME USER 原用户名 TO 新用户名 ;

  • 修改用户密码:
mysql> SET PASSWORD = PASSWORD('新密码') ;   -- 修改当前用户密码

mysql> SET PASSWORD FOR 用户名 = PASSWORD('新密码') ; -- 修改指定用户密码
  • Mysql 用户授权
# 授予用户权限
mysql> GRANT ALL PRIVILEGES ON 层级 to '用户名'@'主机' IDENTIFIED BY '密码' ;

# 撤销用户权限
mysql> REVOKE ALL PRIVILEGES FROM 用户名 ;

层级:

  1. 全局  *.*
  2. 数据库层级   DB_Name.*
  3. 表层级
  4. 列层级
  5. 子程序层级

2-MySQL权限管理基础_20141028161127.JPG
admin

  • MySQL数据的导入/导出
$mysqldump -u root -p DB_Name > Backup.sql    -- 数据库的导出备份

$mysql -u root -p DB_Name < Backup.sql --- 数据库的导入恢复

MySQL数据编码

MySQL默认编码为:

character set : latin1
collation : latin1_swedish_ci

  • MySQL编码查看命令:

    mysql> show character set;    --- 查看MySQL所支持的编码格式
    mysql> show variables like 'character_set%'; --- 查看当前mysql的编码
    mysql> show variables like 'collation%'; --- "collation" 用于指定数据集如何排序,以及字符串的比对规则(http://zhongwei-leg.iteye.com/blog/899227)
  • MySQL编码设置命令:

    #创建数据时设置默认数据编码
    mysql> create database DB_Name
    > default character set utf8
    > default collate utf8_general_ci;
    #修改一个数据库的编码
    mysql> ALTER database DB_Name character set utf8 collate utf8_general_ci;
  • MySQL默认编码设置:

$vim /etc/my.cnf    -- 按照如下添加

[mysqld]
default-character-set=utf8
init_connect='SET NAMES utf8'
...
[client]
default-character-set=utf8

$service mysqld restart -- 重启mysql

```


---

##MySQL 数据库的操作
SQL = `Structured Query Language`



##### 数据库操作

#### 1. 创建数据库

mysql> CREATE DATABASE 数据库名;


##### 2. 删除数据库

mysql> DROP DATABASE 数据库名;


##### 3. 查看数据库

mysql> SHOW DATABASES ;


##### 4. 重命名数据库

mysql> RENAME DATABASE 原数据库名 TO 新数据库名 —(此命令已经失效,不能再使用)


##### 5. 使用数据库

mysql> USE DB_Name; – 通告MySQL把 DB_Name 数据库作为默认(当前)数据库使用,用于后续语句


#### 数据库内表格操作

##### 1. 创建数据表格
创建表格之前需要事先使用 `USE` 命令设置数据库。

mysql> CREATE TABLE <表名> (

> <字段名1>    <类型1> ,
> <字段名2>    <类型2> ,
> <字段名3>    <类型3>
> );
eg:
mysql.png
![create table](./MySQL.md_Attachments/mysql.png)


##### 2. 查看数据库内的表

mysql> SHWO TableS;


##### 3.重命名数据表

mysql> ALTER TABLE old_table_name RENAME new_table_name ;


##### 4. 删除表格

mysql> DROP TABLE Table_Name ;



### 表格内列(字段)操作

##### 1. 查看表内的列(字段)

mysql> DESCRIBE Table_Name ;
或者
mysql> DESC Table_Name ;


##### 2. 向表中添加一列(字段)

mysql> ALTER TABLE table_name ADD 数据列名 类型 其他;


##### 3. 删除表中的列(字段)

mysql> ALTER TABLE table_name DROP COLUMN 数据列名;


##### 4. 修改列的数据类型

mysql> ALTER TABLE table_name MODIFY 数据列名 修改后的类型;


##### 5. 重命名一个列

mysql> ALTER TABLE table_name MODIFY 原数据列名 修改后的列名 类型;


#### 表格内数据操作

##### 1. 查询表内数据

mysql> SELECT FROM table_name ; – ‘‘ 表示所有列内的数据
或者
mysql> SELECT 列名1,列名2,列名3 FROM table_name ; – 查询指定列表数据

按条件查询格式:
mysql> SELECT 列(字段)名 FROM 表名 WHERE <表达式> ;


##### 2. 向表内插入数据

mysql> INSERT INTO 表名 VALUES (值1,值2,值3..);
或者
mysql> INSERT INTO 表名(列1,列2) VALUES (值1,值2) ;


##### 3. 删除表内数据

mysql> DELETE FROM 表名 WHERE 表达式 ;

mysql> DELETE * FROM 表名 ; – 删除整个表内数据


##### 4. 修改表中数据

mysql> UPDATE 表名 SET 列名=新值 WHERE 条件;

’WHERE 条件’ 需要精确匹配,避免误修改其它数据

---

##MySQL 进阶

##### 1. 删除返回结构中的重复项 (**DISTINCT**)

mysql> SELECT DISTINCT 列名 FROM 表名 ;


##### 2. WHERE 条件中逻辑组合 (**AND & OR**)

eg:
mysql> SELECT * FROM 表名 WHERE 条件1 AND 条件2;

mysql> SELECT * FROM 表名 WHERE 条件1 OR 条件2;


##### 3. 对返回结果排序 (**ORDER BY**)

eg:
mysql> SELECT FROM 表名 ORDER BY 列名;
或者
mysql> SELECT
FROM 表名 ORDER BY 列名 DESC ; – DESC 代表倒序
```

                       —By LuoYe [QQ:291268775]
                           2014/10/23