mysql 命令行

  • 登陆/退出 ```

    登陆

    mysql -h localhost -u root -p mysql -hhost -uuser -p [dbname]

退出

mysql> quit mysql> \q

  1. - 导入

$ mysql -uusername -ppassword database_name < filename.sql


- 导出

mysqldump -uusername -ppassword database_name [tables] > filename.sql

## 数据类型
### String

- CHAR [String (0 - 255)]
- VARCHAR [String (0 - 255)]
- TINYTEXT [String (0 - 255)]
- TEXT [String (0 - 65535)]
- MEDIUMTEXT [String (0 - 16777215)]
- LONGTEXT [String (0 - 429496­7295)]
### 二进制

- BLOB [String (0 - 65535)]
- MEDIUMBLOB [String (0 - 16777215)]
- LONGBLOB [String (0 - 429496­7295)]
### 数值
_x_ 表示可以是 unsigned , 但是从 0 开始<br />
_M_ 是显示的最大长度, D 是小数的精确度.

- TINYINT _x_ [Integer (-128 to 127)]
- SMALLINT _x_ [Integer (-32768 to 32767)]
- MEDIUMINT _x_ [Integer (-8388608 to 8388607)]
- INT _x_ [Integer (-2147­483648 to 214748­3647)]
- BIGINT x [Integer (-9223­372­036­854­775808 to 922337­203­685­477­5807)]
- FLOAT (_M_, D) [Decimal (precise to 23 digits)]
- DOUBLE (_M_, D) [Decimal (24 to 53 digits)]
- DECIMAL (_M_, D) ["­DOU­BLE­" stored as string]
### 日期

- DATE [YYYY-MM-DD]
- DATETIME [YYYY-MM-DD HH:MM:SS]
- TIMESTAMP [YYYYMM­DDH­HMMSS]
- TIME [HH:MM:SS]
### 枚举

- ENUM [One of preset options]
- SET [Selection of preset options]
## 函数
### 数学函数

- COUNT(column | *) 组的总数
- AVG(column) 组的平均数
- MIN(column) 组的 列的 最小值
- MAX(column) 组的 列的 最大值
- SUM(column) 列的和
- abs(number) 绝对值
- round(number[,D])
- floor(number) 不大于最大值的最大整数
- ceiling(number) 不小于最小值的最小整数
- sqrt(number) 平方根
- pow(base,exponent) 幂
- rand() 随机 (0, 1)
- sin(number) 正弦值
### 字串函数

- strcmp(string1,string2) 比较字串
- lower(string) 转换为小写
- upper(string) 转换为大写
- ltrim(string) 去除左空格, 右(rtrim)
- substring(string,pos[,len])  截取字串
- password(string)
- encode(string, pass_str) 使用 _pass_str_ 加密 string
- decode(string, pass_str) 使用 _pass_str_ 解密 string
### 日期函数

- curdate() 当前日期
- curtime() 当前时间
- dayname('YYYY-MM-DD') 英文返回当天是周几
- dayofweek(string) 数字返回一周的第几天, 1 = Sunday, ....
- monthname(string) 返回月份名称
## 基础 MySQL 操作
CRUD是指在做计算处理时的增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update),删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能。
### 数据库操作

列出数据库

mysql> show databases;

使用数据库

mysql> use mydatabase;

创建数据库

mysql> CREATE DATABASE mydatabase;

删除数据库

mysql> DROP DATABASE tmpdb;

当前的数据库

mysql> SELECT DATABASE();

当前用户

mysql> SELECT USER();

显示支持的引擎

mysql> SHOW ENGINES

### 表结构/操作

列出数据表

mysql> show tables;

创建表结构

mysql> CREATE TABLE tmptable ( column_name1 type [modifiers] [, column_name2 type [modifiers]] [, INDEX index_name (column1, column2)] [, UNIQUE INDEX uni_index_name (column1)] );

删除表

mysql> DROP TABLE tmptable;

描述表结构

mysql> DESCRIBE mytable;

显示表创建结构

mysql> SHOW CREATE TABLE mytable;

添加列

mysql> ALTER TABLE table_name ADD COLUMN column type options;

修改表

mysql> ALTER TABLE tmptable MODIFY tmpcolumn LONGTEXT;

删除列

mysql> ALTER TABLE table DROP COLUMN column;

创建索引

mysql> CREATE INDEX index_name ON table_name (column1, column2, column3);

#### MODIFIY (修饰符)

[PRIMARY KEY] [AUTO INCREMENT] [NOT NULL] [UNSINGNED]

### 表查询
#### 插入数据

标准方式

mysql> INSERT INTO table (column1,column2,…) VALUES (value1,value2…);

列数顺序相同或者是有默认值

mysql> INSERT INTO table_name VALUES (val1, val2, val3);

多列插入

mysql> INSERT INTO table (column1,column2,…) VALUES (value1,value2…), …, (value1,value2…);

set 方式

mysql> INSERT INTO table SET column1=value1, … , columnk=valuek;

选择插入/从其他数据表中获取

mysql> INSERT INTO table (column1,column2,…) SELECT statement;

导入文件

每行包含一个记录,用定位符(tab)把值分开, null值使用 \N 表示 mysql> LOAD DATA LOCAL INFILE ‘/path/pet.txt’ INTO TABLE pet LINES TERMINATED BY ‘\r\n’;

#### 删除数据

mysql> DELETE FROM table [WHERE condition(s)]; mysql> truncate mytable

#### 更新

UPDATE table SET column1=value1, … , columnk=valuek [WHERE condition(s)];

#### 查找数据

选择

SELECT * FROM table; SELECT column1,column2,… FROM table [WHERE condition(s)]

唯一性

SELECT [DISTINCT] column(s) FROM table;

null 值的判定

SELECT * FROM pet WHERE death IS NOT NULL;

排序

[binary] 代表二进制排序, 区分大小写

SELECT column1,column2,… FROM table [ORDER BY [binary] column(s) [DESC]];

alias

SELECT column1 [AS alias1], column2 [AS alias2], … FROM table1;

group 统计

SELECT column1,column2,… FROM table [GROUP BY column(s)]; SELECT column1,column2,… FROM table [GROUP BY column(s)] [HAVING condition(s)];

多条件查询

SELECT [DISTINCT] column1 [AS alias1], column2 [AS alias2], … FROM table1 [alias1], table2 [alias2],… [WHERE condition(s)] [GROUP BY column(s)] [HAVING condition(s)] [ORDER BY column(s) [DESC]];

模式匹配

like ‘%fy’, ‘S%’ SELECT * FROM pet WHERE name LIKE ‘%w%’;

使用 ‘_’ 匹配单个字符

SELECT * FROM pet WHERE name LIKE ‘_‘;

正则匹配

. 匹配单个字符 [a-z], [cde] 匹配方括号的任何字符 * 匹配 0 个 或者 1 个字符 ^ 开头, 末尾匹配符 {n,m} 数量匹配符 `SELECT * FROM pet WHERE name REGEXP ‘^b’;

正则的二进制匹配, 区分大小写

SELECT * FROM pet WHERE name REGEXP binary ‘^b’;

#### 统计, 函数使用, 技巧

- 计数

SELECT COUNT(*) FROM pet;


- 最大行

SELECT MAX(article) AS article FROM shop;


- 使用用户变量

mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop; mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;

## 维护
### 数据库账号权限和密码

更新用户的IP权限范围

mysql> use mysql
mysql> update user set host = ‘%’ where user = ‘root’;

更改密码

mysql> GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘mypassword’; mysql> GRANT ALL PRIVILEGES ON . TO ‘imvkmark’’@’123.171.248.5’ IDENTIFIED BY ‘mypassword’ WITH GRANT PTION; mysql> FLUSH PRIVILEGES;

### 数据库引擎

服务器显示的引擎

mysql> show engines;

```