# 登录数据库
mysql -h 100.65.202.29 -P 4179 -u mlive -pmlive -D mlive --default-character-set=utf8 -A
# 切换数据库
use <数据库名>
# 查询库中的表
show tables like "%表名%";
# 设置使用的字符集
set names utf8
# 运算符: AND & OR --> 连接多个条件表达式
select * from table_name
where <条件表达式1> AND <条件表达式2> OR <条件表达式3>
# 创建表
create table <表名>
{
<列名> data_type(size) 约束名, # Name varchar(255) NOT NULL,
...
}
# 约束名
NOT NULL -- 列不能存储NULL值:列是NULL,则无法插入/更新表
UNIQUE -- 列的每行必须有唯一值:多个列可以具有UNIQUE约束
CHECK -- 限制列值的取值范围
DEFAULT -- 默认值
Primary key -- NOT NULL和UNIQUE的结合,确保某列有唯一标识:每个表只能有一个Primary key约束
Foreign key -- 指向另一个表中的UNIQUE key(唯一约束的键)
# 删除
drop table <表名> # 删除表
truncate table <表名> # 删除表中的数据,但并不删除表本身
drop database <数据库名> # 删除数据库
alter table <表名> drop index <index_name> # 删除表中的索引
# 创建索引
create [unique] INDEX <index_name>
on <表名> <列名>
# 查询 select
select DISTINCT 列名 from <表名> where <条件表达式>
<条件表达式> = 列名 + 操作符 + 值,其中操作符,如下:
= <> > <
BETWEEN... AND...
LIKE 搜索某个模式
% 0个或任意多个
_ 任意一个
[char] 任意一个char
^[A-H] 以[A-H]中任意一个字符作为起始
[^A-H] 某个字符不在[A-H]
IN 制定针对某个列的可能多个值
# 从from(表)
# where(按条件取出数据)
# group by(再对取出的数据进行分组), having(分组之后再过滤得到最新数据集)
# select(按照设置列从数据集里面取出数据)
# order by(对取出的数据进行排序): 默认ASC
# 执行顺序:from---where--group by---having---select---order by
select [DISTINCT] 列名, count(*) from <表名>
where <条件表达式>
group by <列名> having by <条件表达式>
order by <列名> [DESC|ASC]
# 元组级别的[增删改] -- insert/delete/update
# 插入 insert into
insert into <表名> (列名1, 列名2, ...) # 方式1: 在指定列插入数据, 未指定列使用默认值
value (值1, 值2, ...)
例: insert into Website (name, url, alexa) value ('百度', 'www.baidu.com', 'CN')
insert into <表名> # 方式2:未指定列
value (val1, val2, ...)
# 删除 delete
delete from <表名>
where <条件表达式>
# 更新 update
update <表名>
set <列名1>=val1, <列名2>=val2, ... ...
where <条件表达式>
# 列级别的[增删改] -- alter
alter table <表名>
ADD <列名> <data_type> # 增加列
DROP column <列名> # 删除列
MODIFY column <列名> <data_type> # 增加列
# 给表添加列
alter table <表名> add <列名> int(11) NOT NULL DEFAULT '0' COMMENT '定时器修复主播公会关系';
alter table <表名>
add column <列名> datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '备注',
add column <列名> datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '备注',
add column <列名> text NOT NULL DEFAULT '' COMMENT '备注',
add column <列名> text NOT NULL DEFAULT '' COMMENT '备注',
add column <列名> text NOT NULL DEFAULT '' COMMENT '备注',
add column <列名> text NOT NULL DEFAULT '' COMMENT '备注',
add column <列名> text NOT NULL DEFAULT '' COMMENT '备注',
add column <列名> text NOT NULL DEFAULT '' COMMENT '备注',
add column <列名> text NOT NULL DEFAULT '' COMMENT '备注',
add column <列名> text NOT NULL DEFAULT '' COMMENT '备注',
add column <列名> text NOT NULL DEFAULT '' COMMENT '备注',
add column <列名> text NOT NULL DEFAULT '' COMMENT '备注';
# qyin_uin有重复,查询最新的一条记录
表中的数据: qyin_uin可能重复多条,id最大的为最新(id为唯一自增主键)
1. 子查询:按照qyin_uin分组,查询qyin_uin最大的一条记录
2. 外部查询: id in (子查询),查询出符合条件的元素
select *
from table_name
where id in (
select max(id) from table_name
where 查询条件
group by qyin_uin
)
# 时间
create_time=now()可以去掉?modify_time可以在建表的时候
default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
CREATE TABLE `mlive_invite_record` (
`id` bigint(22) NOT NULL AUTO_INCREMENT,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=118 DEFAULT CHARSET=utf8