mysql 命令行
退出
mysql> quit mysql> \q
- 导入
$ 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 - 4294967295)]
### 二进制
- BLOB [String (0 - 65535)]
- MEDIUMBLOB [String (0 - 16777215)]
- LONGBLOB [String (0 - 4294967295)]
### 数值
_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 (-2147483648 to 2147483647)]
- BIGINT x [Integer (-9223372036854775808 to 9223372036854775807)]
- FLOAT (_M_, D) [Decimal (precise to 23 digits)]
- DOUBLE (_M_, D) [Decimal (24 to 53 digits)]
- DECIMAL (_M_, D) ["DOUBLE" stored as string]
### 日期
- DATE [YYYY-MM-DD]
- DATETIME [YYYY-MM-DD HH:MM:SS]
- TIMESTAMP [YYYYMMDDHHMMSS]
- 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;
```
