Linux 下 MySQL 详尽操作
写在最前
这份文档尽量做到详尽地说明Linux环境下mysql的使用。将从安装、使用、到用shell脚本控制数据库的相关操作来讲解。
一、MySQL的安装
安装方法较多,这里介绍最为简单的一种。
打开shell,输入命令行:
sudo apt-get install mysql-server mysql-client
回车后,可自动联网下载并安装(要保持此时是联网状态)。安装过程中,选择Yes即可。过程中,要求输入一个密码(MySQL的进入密码,须记住)。然后等待安装完成。
二、MySQL的进入、退出
1、打开shell,输入命令行
mysql –u root –p 密码
回车即可进入MySQL
注:
Mysql –h 主机名 –u 用户名 –p 密码
-h 用于指定客户端所要登录的,MySQL主机名,登录当前机器参数可忽略
-u 所要登录的用户名
-p 登录密码,若密码为空,可忽略
2、输入命令行
exit
回车即可退出MySQL
三、MySQL的增删查改等操作
MySQL是一个关系型数据库管理系统,,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。这样就需要我们要想MySQL中存数,首先需要一个数据库,然后在该数据库中创建关系表,利用关系表存储数据。
具体操作:
1、创建一个数据库
create database 数据库名;(注意每句关于数据库的操作结束后都有分号“;”)
2、使用数据库
use 数据库名;
3、创建一个新表
基本形式:create table 表名(列声明);
例:以学生信息为例
create table student 表名
(
id int (5) not null auto_increment primary key, 学生ID
name char(5), 学生姓名
class int(5) unsigned not null, 学生班级
remark text 学生备注
);
注:
1、not null 表示该值不能为空,不指定时可为空
2、auto_increment表示自增,即不必赋值,可自己由1开始增加
alter table 表名auto_increment=1; 可将自增的数值重置为1
3、primary key 表示该列的表的主键,本值必须唯一,MySQL将自动索引该列
4、unsigned 表示该类型无符号型,此时该列取值0到16777215
数据库可使用的数据类型:
数字类型
整数 tinyint smallint mediumint int bigint
浮点数 float double real decimal
日期和时间 date time datetime timestamp year
字符串类型
字符串 char varchar
文本 tinytext text mediumtext longtext
二进制(可用来储存图片、音乐等)tinyblob blob mediumblob longblob
4、增加
基本形式: insert into 表名 (列名1,列名2, …) values(值1,值2,…);
例:插入一名学生信息
insert into student values(1,”Tom”,1,”stu”);
若插入部分值时,或不按顺序插入
insert into student(class remark) values(1,”agood student”);
注意:int、double等数据类型添加数据时不需要引号,char、text等数据类型需要引号
5、删除
基本形式: delete from 表名 where 删除条件
例:删除ID=1学生信息
delete from student where id=1;
where后表示查询条件,可选择不同例where name=”Tom”
where后可接一般的比较运算的运算符,例 = < > >= <= !=
以及一些扩展运算符 is [not] null in like 等
还可使用 or and 进行组合查询
6、查找
基本形式: select 列名称 from 表名 where 查找条件
例:查找ID=1 的学生信息
select * from student where id=1;
注意
1、* 位置代表要查询的数据, * 表示显示满足查找条件的所有数据,还可以替换为某一需要的数据,例
2、Select name from student where class=1; (查找班级为1的学生的名字,最终显示结果只有班级和名字,不会显示ID等内容)
7、更改
基本形式: update 表名 set 列名称=新值 where 更改条件
update student set name=”John” where id=1;
注意:每次更改只能修改一项信息,若同时修改两项内容,则会报错。
8、向数据表中添加新的一列
基本形式: alter table 表名 add 列名列数据类型 after 插入位置
例:在班级后插入goal分数
alter table student add goal double afterclass;
9、修改数据表中的某一列
基本形式: alter table 表名 change 列名称列新名称新数据类型;
例:将成绩一列修改为学生住址
alter table student change goal address char;
10、删除数据表中的某一列
基本形式: alter table 表名 drop 列名称;
例:删除学生住址这一列
alter table student drop address;
11、重新命名表
基本形式: alter table 表名 rename 新表名;
例:将student修改为 studt
alter table student rename studt;
四、MySQL的一些其他操作
1、显示数据库
show databases;
2、显示数据表
show tables;
3、显示数据表的结构
desc 数据表名;
describe 数据表名;
4、删除表
drop tables 表名;
5、输出数据库
drop database 库名;
6、备份数据库
mysqldump –u root –p –opt 数据库名>备份名;
7、恢复
mysql –u root –p 数据库名<备份名;
8、修改密码
打开shell,输入命令行
mysqladmin –u root –p password 新密码
在输入旧密码后完成修改
五、利用shell脚本对MySQL进行操作
mysql –u root –p 密码 <<EOF
代码段
EOF
说明:在代码部分只需要写入要对数据库进行的操作即可,然后在shell中运行改脚本即可实现对数据库的操作。
注意:
1、在运行脚本后,会出现警告,由于将密码写在了.sh文件里,所以会出现安全警告。
解决办法
利用MySQL的配置文件
在shell中使用命令行
vi .my.snf
然后编辑vi
[client]
password=密码
保存退出
以后每次进入数据库,输入命令行
mysql –u root
即可进入
2、代码部分只能输入静态部分,不可动态改变。要实现动态改变有两种方法
1、需对参数添加引号
例(实现动态查找)
#!/bin/bash
read a (读入数据)
mysql -u root <<EOF
usestu;
select* from student where name="$a"; (添加引号,无论什么数据类型都要加引号)
EOF
2、进行引用
例(实现动态查找)
#!/bin/bash
read a(读入数据)
cmd=" select* from stu.student where name='${a}'"(${a}外添加单引号)
cnt=$(mysql –u root-s -e "${cmd}")
echo"${cnt}"