2019-8-9
user="apper" # 用户名
password="superme@2019" # 密码
host="192.168.1.110" # ip地址
port="3306" # 端口号
database="upay" # 数据库名称
sql_string="SELECT * FROM ThirdUQUserRelation;" # 查询语句
# 方式1
mysql -h${host} -P${port} -u${user} -p${password} $database -e "${sql_string}"
# 方式2
mysql --host=${host} --port=${port} --user=${user} --password=${password} --database=$database -e "${sql_string}"
# 方式3
file_path="/path/to/sql"
mysql -h${host} -P${port} -u${user} -p${password} $database < ${file_path}
show databases;
use <数据库名称>;
create database <数据库名称>;
drop database <数据库名称>;
(需要先通过 use 语句进入到该数据库里面)
show tables;
基本语法形式
create table table_name (column_name column_type);
创建表示例:
CREATE TABLE `ExchangeRate` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`baseCurrencyCode` varchar(8) NOT NULL DEFAULT 'USD' COMMENT '基础币种代号',
`targetCurrencyCode` varchar(8) NOT NULL DEFAULT '' COMMENT '目标币种代号',
`baseAmount` varchar(11) NOT NULL DEFAULT '1' COMMENT '基础货币数量',
`targetAmount` Double(10, 2) NOT NULL DEFAULT '0' COMMENT '目标货币数量',
`time` varchar(20),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
AUTO_INCREMENT
表示自增 -
NOT NULL
表示该字段的值不为空 -
DEFAULT
表示该字段的默认值 -
COMMENT
表示注释内容
DROP TABLE table_name;
INSERT INTO table_name (field1, field2, ...) VALUES (value1, value2, ...);
基本语法形式
SELECT column_name, column_name
FROM table_name
[WHERE Clause]
[LIMIT N]
[OFFSET M];
-
column_name
表示字段名称,使用 * 来代表所有字段; -
[WHERE Clause]
where 语句来过滤筛选条件(可选
); -
[LIMIT N]
limit 语句来制定返回数据的数据(可选
); -
[OFFSET M]
offset 语句来指定开始查询的偏移量,默认情况下偏移量为0(可选
);
基本语法形式
UPDATE table_name SET filed1=new-value1, field2=new-value2
[WHERE Clause];
基本语法形式
DELETE FROM table_name [WHERE Clause];
Like 子句可以使用类似正则表达似的进行匹配搜索。
基本语法形式
SELECT field1, field2,...fieldN
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue';
-
LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
-
%
表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 -
_
表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。 -
[]
表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。 -
[^]
表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
DISTINCT
删除重复数据(用法 distinct(filed1)
)
ORDER BY
字段排序, 使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列 (用法 order by age desc
)
GROUP BY
对结果分组 (用法 group name
)
-
INNER JOIN(内连接,或等值连接)
:获取两个表中字段匹配关系的记录。 -
LEFT JOIN(左连接)
:获取左表所有记录,即使右表没有对应匹配的记录。 -
RIGHT JOIN(右连接)
: 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。
删除表 table_name
中的字段 i
:
ALTER TABLE table_name DROP i;
在表 table_name
中添加 INT
类型的字段 i
:
ALTER TABLE table_name ADD i INT;
在表 table_name
中修改字段 c
的类型为 char(10)
:
ALTER TABLE table_name MODIFY c CHAR(10);
修改表名 table_name
为 new_table_name
:
ALTER TABLE table_name RENAME TO new_table_name;
函数 | 作用 |
---|---|
json_extract | 提取 json 字符串 |
replace(s1, s2) | s2 替换 s1 |
count(*) | 统计次数 |
trim | 去掉字符串首尾空格 |
NOW() | 当前日期和时间 |
DATE() | 当前日期 |
CURTIME() | 当前时间 |
INSTR(str, substr)
INSTR()
函数返回字符串中子字符串第一次出现的位置。如果在str
中找不到子字符串,则INSTR()
函数返回零(0
)。
该函数不区分大小写。
作用类似 LIKE
运算符。
LOCATE(substr, str)
返回字符串 str
中第一次出现子字符串 substr
的位置。
如果 substr 不在 str 中, 返回 0
如果 substr 或者 str 为 NULL, 返回 null
其他情况,返回大于 0 的值
CAST(expression AS TYPE)
REPLACE(str, old_string, new_string)
将 str 中的 old_string 替换为 new_string 。
JSON_EXTRACT(json_doc, path)
从 json 字符串中提取指定字段的值 使用举例
mysql> SELECT c, JSON_EXTRACT(c, "$.id"), g
> FROM jemp
> WHERE JSON_EXTRACT(c, "$.id") > 1
> ORDER BY JSON_EXTRACT(c, "$.name");
+-------------------------------+-----------+------+
| c | c->"$.id" | g |
+-------------------------------+-----------+------+
| {"id": "3", "name": "Barney"} | "3" | 3 |
| {"id": "4", "name": "Betty"} | "4" | 4 |
| {"id": "2", "name": "Wilma"} | "2" | 2 |
+-------------------------------+-----------+------+
3 rows in set (0.00 sec)
# -> 操作符, 当作函数的别名
mysql> SELECT c, c->"$.id", g
> FROM jemp
> WHERE c->"$.id" > 1
> ORDER BY c->"$.name";
+-------------------------------+-----------+------+
| c | c->"$.id" | g |
+-------------------------------+-----------+------+
| {"id": "3", "name": "Barney"} | "3" | 3 |
| {"id": "4", "name": "Betty"} | "4" | 4 |
| {"id": "2", "name": "Wilma"} | "2" | 2 |
+-------------------------------+-----------+------+
3 rows in set (0.00 sec)
insert into <target-table>
(user_id, app_id, channel_id, token, first_pay, stat, device_id, create_time, update_time)
select
user_id, app_id, channel_id, token, first_pay, stat, device_id, create_time, update_time
from <source-table>
从命令行终端运行此命令,将在寻找Linux/BSD / OS X系统中的MySQL配置文件 my.cnf 文件:
mysql --help | grep 'Default options' -A 1
上面命令执行后,会有这样的输出:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf