mysql笔记

注:最近用到了MySQL,在这里复习一下~,Linux环境。
登录MySQL服务器

mysql -h127.0.0.1 -uroot -p[pwd -Ddb_name]  -- 这样会直接进入该db_name库下

1.创建数据库

create database db_name;

2.创建用户及赋权

create user user_name@localhost identified by 'pwd';
grant select on db_name to user_name@localhost;
flush privileges;

3.创建(分区)表

create table t_name (
id bigint not null auto_increment comment '自增主键'
,name varchar(255) comment '名称'
,dt int comment '分区'
primary key(id,dt)
) engine=InnoDB default charset=utf8 collate=utf8_general_ci 
auto_increment=1 
comment='表名'
-- 分区表
partition by range(dt)(
	partition p0 values less than (2010) engine=InnoDB
	,partition p1 values less than (2011) engine=InnoDB
);

4.csv/excel/txt数据导入导出

-- ftp上传数据文件
wget ftp://127.0.0.1/data.csv  --ftp-user=user --ftp-password=pwd
--编码转换(含有中文字符的文件默认编码可能是gb18030,可以本地文本编译器转换编码,如果文件不大的话)
icon -f gb18030 -t utf-8 data.csv > new_data.csv
--行尾存在^M(win下换行符为\r\n,二Linux下换行符为\n,所以上传到Linux下文件行尾会存在^M)
vi data.csv  -- 注:vi下^M用ctrl+v,ctrl+m
%s/^M//gn  -- 统计^M次数
%s/^M//g  -- 处理^M

-- 导入csv/txt(\t分割)
load data local infile '/user_name/data.csv(data.txt)' into table t_name fields terminated by '\t' lines terminated by '\n' ignore 1 lines;  -- 忽略第一行(一般第一行为列名)

-- 导出数据文件
mysql -h127.0.0.1 -uroot -ppassword -Ddb_name -e'select * from t_name;' > ./data.csv

5.执行.sql

-- mysql命令行
source sql.sql

-- linux命令行
mysql -h127.0.0.1 -uroot -ppassword -Ddb_name -e'select * from t_name;' < ./sql.sql 

-- linux后台执行
nohup mysql -h127.0.0.1 -uroot -ppassword -Ddb_name -e'select * from t_name;' < ./sql.sql &
-- 查看进程
top -H -p id

6.日期格式

-- 日期符号
%Y  -- 年 4位
%y  -- 年 2位
%m  -- 月 (00-12)
%c  -- 月 (00-12)
%d  -- 天 (00-31)
%e  -- 天 (0-31)
%H  -- 小时 (00-23)
%k  -- 小时 (0-23)
%i  -- 分钟 (00-59)
%s  -- 秒 (00-59)

select str_to_date(str, '%y-%m-%d %H:%i:%s') from dual;

7.collate关键字

collate,校对集,用来排序的规则。对于mysql中那些字符类型的列,如VARCHAR,CHAR,TEXT类型的列,都需要有一个collate类型来告知mysql如何对该列进行排序和比较。
简而言之,collate会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛选出来的结果,会影响**DISTINCT**、**GROUP BY**、**HAVING**语句的查询结果。
另外,mysql建索引的时候,如果索引列是字符类型,也会影响索引创建。
总之,凡是涉及到字符类型比较或排序的地方,都会和COLLATE有关。

collate通常是和数据编码(CHARSET)相关的,一般来说每种CHARSET都有多种它所支持的collate,并且每种CHARSET都指定一种collate为默认值。例如Latin1编码的默认COLLATE为latin1_swedish_ci,GBK编码的默认COLLATE为gbk_chinese_ci,utf8编码的默认值为utf8_general_ci。
其中,_ci,Case Insensitive的缩写,即大小写无关;_cs,Case Sensitive,即大小写敏感;_bin,二进制串

collate设置级别:
设置COLLATE可以在示例级别、库级别、表级别、列级别、以及SQL指定。
**实例级别**:mysql配置文件或启动指令中的collation_connection系统变量;
**库级别**:创建db时指定collate。例:create database db_name default charset=utf8 collate=utf8_general_ci;
	如果库级别没有设置CHARSET和COLLATE,则库级别默认的CHARSET和COLLATE使用实例级别的设置。
**表级别**:创建table时指定collate。例:create table t_name () engine=InnoDB default charset=utf8 collate=utf8_general_ci comment'';
	如果表级别没有设置CHARSET和COLLATE,则表级别会继承库级别的CHARSET与COLLATE。
**列级别**:创建table声明column时指定collate。例:create table t_table (id varchar(255) chartset=utf8 collate=utf8_general_ci);
	如果列级别没有设置CHARSET和COLLATE,则表级别会继承表级别的CHARSET与COLLATE。
**SQL指定**:SQL语句声明collate。例:select id collate utf8_general_ci from t_table;

collate设置级别优先级:
SQL语句 > 列级别设置 > 表级别设置 > 库级别设置 > 实例级别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值