SQL-数据库基本知识

# 登录数据库

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  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值