说明:mysql操作命令语句中的标点符号(逗号,引号,分号)都必须是英文字符,如果执行命令过程中有语法错误提示,请先检查是否是使用了中文符号的原因。
对于一个在远程服务器上已经运行着的MySQL 服务, 我们可以通过本机的MySQL客户端登录到远程MySQL数据库中, 首先打开命令提示符, 输入以下格式的命令(只能用英文输入法):
mysql -h 192.168.???.??? -u database_user_name -p
命令参数说明:
-h : 该参数用于指定所要登录的MySQL主机名或者IP地址, 如果登录当前机器中的mysql服务则该参数可以省略;
-u : 所要登录mysql的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
其它说明:
1、如果登陆远程服务器中的mysql,需要在本机安装mysql客户端工具,并配置环境变量,使用mysql –version命令检查本机mysql安装是否正常。同时需要服务器上的msyql授权外网可以访问,并开放mysql服务响应的端口号。
2、使用如下方式登陆:
(1)首先进入https://sa.big.ac.cn页面,然后使用开通的两个账号登录, 在登录过程中会要求下载VPN链接软件,下载安装后登录即可;然后ssh登陆到远程服务器,服务器IP是192.168.???.???,用户名是xxx,命令如下: ssh xxx@192.168.???.???,回车后输入密码xxxxx
(2)登陆远程主机后,在远程主机上输入如下命令: mysql -u root -p ,回车后输入密码,mysql的root用户密码是******
(3)show databases; #查看当前用户下的所有数据库
(4)use databases_name; #使用某个数据库
(5)show tables; #查看这个库下的表
(6)desc table_name; #查看某个表的字段
创建数据库:create database 数据库名 [其他选项];
此处,数据库名建议大家使用自己姓名的汉语拼音(方便区分)。
删除数据库:drop database 数据库名;(删除后很难恢复,请谨慎使用)
创建your_user_name数据库,命令如下(后面的选项指定了数据库的编码方式为utf8,字符排序规则使用utf8_general_ci,mysql版本5.5.3之后请使用utf8mb4编码,以兼容4字节的unicode字符存储):
create database your_user_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
操作表之前需要切换到表所在的数据库,用如下命令进入:use 数据库名;
创建表:create table 表名(列声明);
删除表:drop table 表名;
本次课程创建三个表gene、snp、transcript,命令如下:
create table gene
(
gene_id int unsigned not null auto_increment primary key,
gene_name varchar(30),
gene_alias varchar(30),
chrom varchar(30),
strand char(1),
chrom_start int(20),
chrom_end int(20),
gene_type varchar(30),
gene_description varchar(300)
);
create table snp
(
snp_id int unsigned not null auto_increment primary key,
snp_class_id int,
chrom varchar(30),
chrom_start int(20),
chrom_end int(20),
reference_allele varchar(300),
genotype varchar(300),
het_or_hom tinyint(1)
);
create table transcript
(
transcript_id int unsigned not null auto_increment primary key,
transcript_name varchar(30),
gene_name varchar(30),
chrom varchar(30),
strand char(1),
chrom_start int(20),
chrom_end int(20),
source varchar(300)
);
语句解说(以gene表为例):
create table tablename(columns) 为创建数据库表的命令, 列的名称以及该列的数据类型将在括号内完成;
括号内声明了各列内容, gene_id、gene_name等为每列的名称, 后面跟的是数据类型描述, 列与列的描述之间用逗号(,)隔开;
以 "gene_id int unsigned not null auto_increment primary key" 为例进行介绍:
补充说明---MySQL数据类型:
MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:
1、向表中插入数据(insert)
insert 语句可以用来将一行或多行数据插到数据库表中, 使用的一般形式如下:
insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);
其中 [] 中的内容是可选的,如果省略列名,后面的各值顺序要跟表中的各字段顺序一致;
例如, 要给gene表插入一条记录, 执行语句:
insert gene values(NULL, "ENSCAFG00000000001", "ENPP1", "1 ", "+", 247829, 322180, "mRNA", "ectonucleotide pyrophosphatase/phosphodiesterase 1");
insert gene values(NULL, "ENSCAFG00000000005", "PARD6G", "1", "-", 509125, 565905, "mRNA", "par-6 family cell polarity regulator gamma");
由于gene_id是auto_increment primary key(自增的主键),所以插入时它的值可以是自己指定数字1,2,3…,也可以设置为NULL,mysql引擎会根据当前的值自增后写入。
2、查询表中的数据(select)
select 语句是根据一定的查询规则从数据库表中获取数据, 其基本用法为:
select 列名1, 列名2 from 表名 where [查询条件];
select * from 表名 where [查询条件];
其中通配符 * 代表查询表中所有列的内容;
示例:
1)查询gene表中所有的基因名称和别名:
select gene_name, gene_alias from gene;
2)查询gene表中gene_id大于3的所有列的内容:
select * from gene where gene_id > 1;
复杂查询语句:
select 列名1, 列名2, ...
from 表名1
[inner | left | right] join 表名2 on 连接条件
where [查询条件]
group by 列名1 having 分组条件
order by 列名1 [asc | desc]
limit [偏移量,] [行数];
说明:
2) group by从字面意义上理解就是根据by指定的列对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行聚合函数处理(求和,最大,最小,数量);having条件子句是对group by子句定义的小分组进行过滤,作用类似于where子句;
3) order by是根据指定的列对返回的所有行进行升序(默认值)或降序排列;其具体实现方式分为两种:一是通过索引扫描生成有序结果,二是借助内存或磁盘使用文件排序(filesort)来生成有序结果;
4) limit是限制返回的行数;其接受一个或者两个整数常量,如果给定两个参数,第一个数代表的是偏移量(默认值是0),可以理解为先跳转到某处然后开始,第二个数代表的是需要返回的行数;
示例:
1)通过gene_name关联,联合查询transcript表和gene表的所有列信息:
select * from transcript t join gene g on t.gene_name = g.gene_name;
2)分组查询gene表中strand分别为+,-的行数:
select strand, count(*) from gene group by strand;
3)对gene表中gene_alias列进行降序排序:
select * from gene order by gene_alias desc;
4)查询gene表中第2行往后的3行信息:
select * from gene limit 2, 3;
3、更新表中的数据(update)
update 语句可用来修改表中的数据, 基本的使用形式为:
update 表名 set 列名=新值 where 更新条件;
示例:
update gene set gene_type="RNA" where gene_id=2;
4、删除表中的数据(delete)
delete 语句用于删除表中某些行的数据, 基本用法为:
delete from 表名 where 删除条件;
示例:
delete from gene where gene_id=2;
alter table 表名 add 列名 列数据类型 [after 插入位置];
示例
alter table gene add gene_property varchar(300) after gene_type;
alter table 表名 change 列名 列新名称 新数据类型;
示例
alter table gene change gene_property gene_new_property varchar(255);
alter table 表名 drop 列名;
示例
alter table gene drop gene_new_property;
alter table 表名 rename 新表名;
示例
alter table gene rename gene_new_table
创建完数据库后,比如创建的名称为testdb。
在mysql登录模式下使用source xxx.sql
如:
mysql> source /home/zhaowm/sql/create_table.sql;
mysql> source /home/zhaowm/sql/insert.sql;