1.数据库创建:
方法:下载稳定版本的二进制包执行安装脚本,指定安装参数,修改配置文件:
1.1安装前准备:
下载:
解压到指定目录:
[root@localhost src]#[ -d /usr/local/mysql ] && mv mysql /usr/local/mysql_old
[root@localhost src]# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
[root@localhost src]#mv mysql-5.6.36-linux-glibc2.5-x86_64/ /usr/local/mysql
建立MySQL用户
[root@localhost src]# useradd -s /sbin/nologin mysql
1.2初始化数据库(安装)
[root@localhost src]# cd /usr/local/mysql[root@localhost mysql]# mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql/
1.3配置文件
拷贝主配置文件[root@localhost mysql]# cp support-files/my-default.cnf /etc/my.cnf 修改其中内容: [mysqld] #innodb_buffer_poor_size = 128M log_bin = shiyan basedir = /usr/local/mysql datadir = /data/mysql socket = /tmp/mysql.sock join_buffer_size = 128M sort_buffer_size = 2M read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
拷贝启动脚本文件并修改其属性 [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld [root@localhost mysql]# chmod 755 /etc/init.d/mysqld
修改启动脚本需要修改的地方有 “datadir=/data/mysql” [root@localhost mysql]# vim /etc/init.d/mysqld
1.4 把启动脚本加入系统服务项,并设定开机启动,启动mysql
[root@localhost mysql]# chkconfig --add mysqld[root@localhost mysql]# chkconfig mysqld on[root@localhost mysql]# service mysqld start
如果启动不了,请到 /data/mysql/ 下查看错误日志,这个日志通常是主机名.err. 检查mysql是否启动的命令为:
[root@localhost mysql]# ps aux |grep mysqld //输出两行以上结果
[root@localhost mysql]# ps aux |grep mysqld //出现端口信息的输出:3306
到此,MySQL数据库已经成功安装好!
2.常用操作:
2.1 连接:
在本地以管理员身份登录:mysql -uroot (首次进入是不需要密码的)
[root@ipi ~]# mysql -uroot //这里-u指定用户登录,-h指定远程服务器ip或域名,-S指定sock ,-P端口,-p密码(-p后可以不跟,则在交互模式输入(建议))...mysql>
退出使用quit或exit即可
注:mysql登录命令路径加入系统命令#echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile && source /etc/profile
2.2 设置密码:
[root@ipi ~]# mysqladmin -uroot password '123456' 接下来登录就要加入密码参数
[root@ipi ~]# mysql -uroot -p
Enter password: ...mysql>
2.3 查看基本信息
2.3.1 查看当前的库
mysql> show databases;
2.3.2 查询某个库的表
mysql> use mysql //use切换数据库Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;
2.3.3 查看某个表的全部字段
mysql> desc t1;+-------+----------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+----------+------+-----+---------+-------+| id | int(10) | YES | | NULL | || name | char(20) | YES | | NULL | || phone | int(12) | YES | | NULL | |+-------+----------+------+-----+---------+-------+3 rows in set (0.00 sec) 更详细的查看:
mysql> show create table t1\G; //加\G让显示看起来更清晰
*************************** 1. row *************************** Table: t1 Create Table: CREATE TABLE `t1` ( `id` int(10) DEFAULT NULL, `name` char(20) DEFAULT NULL, `phone` int(12) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec)2.3.4 查看当前的版本,用户,库
mysql> select version();
+------------+ | version() | +------------+ | 5.6.36-log | +------------+ 1 row in set (0.00 sec)mysql> select user();+----------------+| user() |+----------------+| root@localhost |+----------------+1 row in set (0.00 sec)mysql> select database();+------------+| database() |+------------+| shiyanlou |+------------+1 row in set (0.00 sec)
2.3.5 查看MySQL的当前状态
mysql> show status;+-----------------------------------------------+-------------+| Variable_name | Value |+-----------------------------------------------+-------------+| Aborted_clients | 20 || Aborted_connects | 0 |........................
2.3.6 查看mysql参数
mysql> show variables; //参数太多未列出,大多是有配置文件设置的,部分参数支持在线修改
2.3.7修改MySQL参数
mysql> show variables like 'max_connect%'; //这里%相当于shell中的*,表示统配+--------------------+-------+| Variable_name | Value |+--------------------+-------+| max_connect_errors | 100 || max_connections | 151 |+--------------------+-------+2 rows in set (0.00 sec)mysql> set global max_connect_errors = 1000;Query OK, 0 rows affected (0.00 sec)mysql> show variables like 'max_connect%';+--------------------+-------+| Variable_name | Value |+--------------------+-------+| max_connect_errors | 1000 || max_connections | 151 |+--------------------+-------+2 rows in set (0.00 sec)
2.3.8 查看当前MySQL服务器的队列
查看队列在日常管理中较为频繁,因为使用它可以看到MySQL当前在干什么,也可以发现锁表情况,如下所示:
mysql> show processlist;+----+--------+--------------------+--------+---------+------+-------+------------------+| Id | User | Host | db | Command | Time | State | Info |+----+--------+--------------------+--------+---------+------+-------+------------------+| 6 | zabbix | 192.168.1.75:58810 | zabbix | Sleep | 100 | | NULL || 8 | zabbix | 192.168.1.75:58812 | zabbix | Sleep | 101 | | NULL || 9 | zabbix | 192.168.1.75:58813 | zabbix | Sleep | 0 | | NULL || 31 | zabbix | 192.168.1.75:59385 | zabbix | Sleep | 56 | | NULL || 32 | zabbix | 192.168.1.75:59387 | zabbix | Sleep | 53 | | NULL || 34 | zabbix | 192.168.1.75:59388 | zabbix | Sleep | 3 | | NULL || 35 | zabbix | 192.168.1.75:59389 | zabbix | Sleep | 1 | | NULL || 36 | zabbix | 192.168.1.75:59390 | zabbix | Sleep | 2 | | NULL || 37 | zabbix | 192.168.1.75:59391 | zabbix | Sleep | 22 | | NULL || 38 | zabbix | 192.168.1.75:59392 | zabbix | Sleep | 22 | | NULL || 39 | zabbix | 192.168.1.75:59395 | zabbix | Sleep | 101 | | NULL || 40 | zabbix | 192.168.1.75:59396 | zabbix | Sleep | 0 | | NULL || 47 | root | localhost | db1 | Query | 0 | init | show processlist |+----+--------+--------------------+--------+---------+------+-------+------------------+
2.4 创建
2.4.1 新库:
mysql> create database db1;Query OK, 1 row affected (0.00 sec)
2.4.2 新表:
mysql> use db1;Database changedmysql> create table t1 (id int(4),name char(40),iphone int(12));Query OK, 0 rows affected (0.12 sec)
2.4.3 创建用户:
mysql> grant all on *.* to user1 identified by '123456';Query OK, 0 rows affected (0.04 sec)//all 表示所有权限,.有两个*,前一个表所有数据库,后一个表所有的表,这里的user1创建到了默认的localhost,若给其他机器上的某个用户授权使用@'ip',如下mysql> grant all on db1.* to 'user2'@'192.168.1.75' identified by '123456';Query OK, 0 rows affected (0.05 sec)//%代替主机表示所有主机,如下mysql> grant all on db1.* to 'user3'@'%' identified by '123456';Query OK, 0 rows affected (0.00 sec)
2.5 增删改查等常用操作
2.5.1为刚才的t1表插入相关数据
mysql> insert into t1 (id,name,iphone) values (1,'ipi','021123456'); //insert into tablename (列名1,...) values (值);Query OK, 1 row affected (0.01 sec)mysql> select * from t1;+------+------+----------+| id | name | iphone |+------+------+----------+| 1 | ipi | 21123456 |+------+------+----------+1 row in set (0.00 sec)
注:可以看到name字段值加了单引号,这是由于他们是char字符型,此外还有varchar、text、date等。不加单引号的有int、float、double等;
2.5.2 更改某一行
mysql> update db1.t1 set name='abm' where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0
删除某一行:DELETE FROM 表名字 WHERE 条件;
2.5.3 count()统计条目
mysql> select count(*) from t1;+----------+| count(*) |+----------+| 1 |+----------+1 row in set (0.00 sec)
2.5.4 清空某个表的数据
mysql> truncate table t1; Query OK, 0 rows affected (0.12 sec)
2.5.5 删除表
mysql> drop table t1;Query OK, 0 rows affected (0.07 sec)
2.5.6 删除数据库
mysql> drop database db1;Query OK, 0 rows affected (0.05 sec)
2.5.7 重命名一张表
RENAME TABLE 原名 TO 新名字; mysql> rename table t1 to t2;Query OK, 0 rows affected (0.08 sec) 也可以用alter table 原名 to新名
mysql> alter table t2 rename t1;
Query OK, 0 rows affected (0.03 sec)
2.5.8 对列进行操作 修改数据类型必须小心,因为这可能会导致数据丢失。在尝试修改数据类型之前,请慎重考虑。
增加一列:(新增加的列,被默认放置在这张表的最右边)
mysql> alter table table_name add column 数据类型 约束; 或: ALTER TABLE 表名字 ADD 列名字 数据类型 约束; 要将新增的列放到指定的位置: 放到第一列:alter table table_name add column 数据类型 约束 frist; //最后加frist 放到指定列后:alter table table_name add column 数据类型 约束 after 列;
删除一列:alter table 表名字 drop 列名字;
重命名一列:ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束; (注意:“数据类型”不可省略,否则重命名失败)
改变数据类型:ALTER TABLE 表名字 MODIFY 列名字 新数据类型;
3.SQL的约束
约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。
3.1建立含约束的表
下载实验需要的sql,在SQL3目录下有MySQL-03-01.sql,之中包含的代码可以新建一个数据库mysql_shiyan,之中有三张表department、employee、project包含了各种约束,
[root@ipi tools]# git clone https://github.com/shiyanlou/SQL3
接下来导入脚本:
mysql> source /tools/SQL3/MySQL-03-01.sqlQuery OK, 1 row affected (0.00 sec)Database changedQuery OK, 0 rows affected (0.05 sec)Query OK, 0 rows affected (0.05 sec)Query OK, 0 rows affected (0.06 sec)
导入检查:
mysql> use mysql_shiyanDatabase changedmysql> show tables;+------------------------+| Tables_in_mysql_shiyan |+------------------------+| department || employee || project |+------------------------+3 rows in set (0.00 sec)
3.2 主键
primary key用于约束表中的一行,作为这行的唯一标识,在一张表中通过主键可以准确定位一行,主键不能重复不可为空。
创建表时约束列为主键:
mysql> create table t1 (id int(4)primary key,name char(20));
为以创建的没有约束的表添加主键约束
mysql> alter table t1 add primary key (id);
删除主键约束
mysql> alter table t1 drop primary key;
在数据表已存在的情况下,且无主键,添加新的字段作为主键,并将该字段移到表格的第一列
mysql>alter table t1 add column iphone int(12) not null after id;这是在id列后添加iPhone列mysql> alter table t1 add column addr char(20) not null first;这是在添加addr列,并设置为首列然后设置再用设置主键命令:
mysql> alter table t1 add primary key (id);
也可以这样定义主键:
mysql> alter table t1 add constraint my_key primary key (id);以后my_key就是主键id的索引
3.3 默认约束
意思是当有default约束的列,插入数据为空时,将使用默认值
在MySQL-03-01.sql中,这段代码包含了默认约束的设置:
people_num INT(10) DEFAULT '10', //people_num默认值为10
3.4 唯一性约束 UNIQUE
CREATE TABLE employee( id INT(10) PRIMARY KEY, name CHAR(20), age INT(10), salary INT(10) NOT NULL, phone INT(12) NOT NULL, in_dpt CHAR(20) NOT NULL, UNIQUE (phone), //如果插入的值有重复则会报唯一性约束的错误 CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name) //外键设置。意思是emp_fk是自定义的外键名,in_dpt为外键,参考列为department的det_name列 );
3.5 外键约束 ROREIGN KEY
能确保数据完整性,也可以表示表之间的关系。a()表 见3.4代码
例如有两个表 ,把b的外键属性去掉对编程也没影响,A中的b要么为空,要么是B中的值 A(a,b) :a为主键,b为外键(来自于B.b) B(b,c,d) :b为主键
mysql> insert into employee (id,name,salary,phone,in_dpt) value (01,'ipi',1000,0211111,'dpt1');ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`mysql_shiyan`.`employee`, CONSTRAINT `emp_fk` FOREIGN KEY (`in_dpt`) REFERENCES `department` (`dpt_name`) 报错,无法添加或更新子行:外键约束失败 是因为department表中没有dpt1
3.6 非空约束
如3.4代码所示,not null 为非空约束的写法,默认不能为null。在MySQL中违反非空约束不会有报错,但会有警告。
salary INT(10) NOT NULL, phone INT(12) NOT NULL,
在完成之上的MySQL基础用法后,请完成以下题目:
答案:
新建一个文件:test.sqlCREATE DATABASE gradesystem;USE gradesystem; CREATE TABLE student(sid int(10) AUTO_INCREMENT PRIMARY KEY,sname char(20),gender ENUM('male','female')); CREATE TABLE course(cid int(10) AUTO_INCREMENT PRIMARY KEY,cname char(20)); CREATE TABLE mark(mid int(10) AUTO_INCREMENT PRIMARY KEY,sid int(10),cid int(10),score int(10),FOREIGN KEY(sid) REFERENCES student(sid),FOREIGN KEY(cid) REFERENCES course(cid)); insert into student(sname,gender) values('Tom','male'),('Jack','male'),('Rose','female');insert into course(cname) values('math'),('physics'),('chemistry');insert into mark(sid,cid,score) values(1,1,80),(2,1,85),(3,1,90),(1,2,60),(2,2,90),(3,2,75),(1,3,95),(2,3,75),(3,3,85);输入如下命令:mysql -u root < test.sql
4. select语句详解
现在我们来下载新的实验代码:git clone https://github.com/shiyanlou/SQL4(请先删除上一节我们创建的数据库,drop database mysql_shiyan)
mysql登录,在sql执行行依次输入source path/MySQL-04-01.sql 和MySQL-04-02.sql
mysql> source MySQL-04-01.sql;mysql> source MySQL-04-02.sql;
基本的select语句
select * from table_name; 查询表中所有内容
select name,age from table_name; 只查询表中指定的name、age列内容
where限制:
select 要查询的列名 from 表名字 where 限制条件; 精确查询:比如说where 列名=‘ xxx ’
SELECT name,age FROM employee WHERE age>25; 数字约束条件查询
mysql> SELECT name,age FROM employee WHERE age>25;+------+------+| name | age |+------+------+| Tom | 26 || Jim | 35 || Alex | 26 || Ken | 27 || Joe | 31 |+------+------+5 rows in set (0.00 sec)
4.1 “and” 与“or”
从单词表面意思你就可以理解它的意义,where后可以不止一条限制,可以用“and”或“or”来连接;
#筛选出 age 小于 25,或 age 大于 30SELECT name,age FROM employee WHERE age<25 OR age>30; #筛选出 age 大于 25,且 age 小于 30SELECT name,age FROM employee WHERE age>25 AND age<30;
如果需要包含25和30就用between
SELECT name,age FROM employee WHERE age BETWEEN 25 AND 30 ;
4.2 "IN"和"NOT IN"
如字面意思,用于筛选“在”或“不在”某个范围内的结果,比如说我们要查询在dpt3或dpt4的人:
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN ('dpt3','dpt4'); 查询不在dpt3和dpt4中的人只需要把IN换为NOT IN即可。
4.3 通配符
关键字 LIKE 在SQL语句中和通配符一起使用,通配符代表未知字符。SQL中的通配符是 _ 和 % 。其中 _ 代表一个未指定字符,% 代表不定个未指定字符。
比如,要只记得电话号码前四位数为1101,而后两位忘记了,则可以用两个 _ 通配符代替:
mysql> select * from employee where phone like '1101__';+----+------+------+--------+--------+--------+| id | name | age | salary | phone | in_dpt |+----+------+------+--------+--------+--------+| 9 | Joe | 31 | 3600 | 110129 | dpt2 || 10 | Mike | 23 | 3400 | 110110 | dpt4 |+----+------+------+--------+--------+--------+2 rows in set (0.01 sec)
4.4 对结果进行排序
order by按某一列结果的默认升序排列,使用asc和desc指定升序或降序排列
比如,我们按salary降序排列,SQL语句为:
mysql> select * from employee order by salary desc;+----+------+------+--------+--------+--------+| id | name | age | salary | phone | in_dpt |+----+------+------+--------+--------+--------+| 11 | Jobs | NULL | 3600 | 19283 | dpt2 || 9 | Joe | 31 | 3600 | 110129 | dpt2 || 7 | Ken | 27 | 3500 | 654321 | dpt1 || 8 | Rick | 24 | 3500 | 987654 | dpt3 |
BINARY:由于字符串类型的数据对大小写并不敏感。这意味着,对于大小写不同其他都一样的列,排序后的结果都不会更改。这种情况下,可以使用BINARY强制执行区分大小写的排序功能,如:ORDER BY BINARY col_name。
4.5 SQL内置函数和计算
其中 COUNT 函数可用于任何数据类型(因为它只是计数),而 SUM 、AVG 函数都只能对数字类数据类型做计算,MAX 和 MIN 可用于数值、字符串或是日期时间数据类型。
具体举例,比如计算出salary的最大、最小值,用这样的一条语句:
mysql> select max(salary) as max_salary,min(salary) from employee; //as 可以对值重命名,省略不写as只写重名也行+------------+-------------+| max_salary | min(salary) |+------------+-------------+| 3600 | 2500 |+------------+-------------+1 row in set (0.00 sec)
4.6 子查询
上面讨论的 SELECT 语句都仅涉及一个表中的数据,然而有时必须处理多个表才能获得所需的信息。
例如:想要知道名为 "Tom" 的员工所在部门做了几个工程。员工信息储存在 employee 表中,但工程信息储存在project 表中。
mysql> select of_dpt,count(proj_name) count_project from project where of_dpt in (select in_dpt from employee where name='Tom'); //括号内的子查询查到Tom所在的部门,用于查询的where条件+--------+---------------+| of_dpt | count_project |+--------+---------------+| dpt4 | 2 |+--------+---------------+1 row in set (0.05 sec)
4.7 连接查询
在处理多个表时,子查询只有在结果来自一个表时才有用。但如果需要显示两个表或多个表中的数据,这时就必须使用连接 (join) 操作。
连接的基本思想是把两个或多个表当作一个新的表来操作,如下:
mysql> select id,name,people_num from employee,department where employee.in_dpt = department.dpt_name order by id; //通过两个表中相同属性的列起关联,查询到了来自两个表的数据+----+------+------------+| id | name | people_num |+----+------+------------+| 1 | Tom | 15 || 2 | Jack | 12 || 3 | Rose | 10 || 4 | Jim | 11 || 5 | Mary | 12 || 6 | Alex | 11 || 7 | Ken | 11 || 8 | Rick | 10 || 9 | Joe | 12 || 10 | Mike | 15 || 11 | Jobs | 12 || 12 | Tony | 10 |+----+------+------------+12 rows in set (0.00 sec)
另一个连接语句格式是使用 JOIN ON 语法,刚才的语句等同于:
mysql> SELECT id,name,people_num FROM employee JOIN department ON employee.in_dpt = department.dpt_name ORDER BY id; //join on 与where 语句的连接执行结果相同
4.8正则(REGEXP)查询
格式如下:regexp 后可以跟正则表达式
mysql> SELECT * FROM pet WHERE name REGEXP '^b'; 如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b’ mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';
本节练习:使用连接查询的方式,查询出各员工所在部门的人数与工程数,工程数命名为 count_project。(连接3个表,并使用COUNT内置函数)
mysql> SELECT name, in_dpt, people_num, COUNT(proj_num) AS count_project FROM employee,department,project where employee.in_dpt=department.dpt_name and employee.in_dpt=project.of_dpt GROUP BY name;或
mysql> SELECT name, in_dpt, people_num, COUNT(proj_num) AS count_project FROM employee
JOIN department ON employee.in_dpt=department.dpt_name JOIN project ON employee.in_dpt=project.of_dpt GROUP BY name;4.9 其他查询
limit 按限制输出查询
例子:查询某列的最大值所在的行
# 显示price这一列最大值对应的行,子查询表示最大的col3的值,利用where查到相关数据mysql> SELECT col1, col2, col3 -> FROM t1 -> WHERE col3=(SELECT MAX(col3) FROM t1); #如果运用limit就可以省去子查询mysql> SELECT col1, col2, col3 -> FROM t1 -> ORDER BY col3 DESC -> LIMIT 1;
5.数据库管理
5.1 索引
索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容。可以大大加快查询速度。
建立索引:
mysql> ALTER TABLE 表名字 ADD INDEX 索引名 (列名); 或: CREATE INDEX 索引名 ON 表名字 (列名); 查看创建的索引用: mysql> show index from table_name;
5.2 视图
从一个或多个表中导出来的表,是一种虚拟存在的表。
注意理解视图是虚拟的表:
>数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中;
>使用视图查询数据时,数据库系统会从原来的表中取出对应的数据; >视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变; >在使用视图的时候,可以把它当作一张表。创建一个视图:
CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;
mysql> select * from employee;+----+------+------+--------+--------+--------+| id | name | age | salary | phone | in_dpt |+----+------+------+--------+--------+--------+| 1 | Tom | 26 | 2500 | 119119 | dpt4 || 2 | Jack | 24 | 2500 | 120120 | dpt2 || 3 | Rose | 22 | 2800 | 114114 | dpt3 || 4 | Jim | 35 | 3000 | 100861 | dpt1 || 5 | Mary | 21 | 3000 | 100101 | dpt2 || 6 | Alex | 26 | 3000 | 123456 | dpt1 || 7 | Ken | 27 | 3500 | 654321 | dpt1 || 8 | Rick | 24 | 3500 | 987654 | dpt3 || 9 | Joe | 31 | 3600 | 110129 | dpt2 || 10 | Mike | 23 | 3400 | 110110 | dpt4 || 11 | Jobs | NULL | 3600 | 19283 | dpt2 || 12 | Tony | NULL | 3400 | 102938 | dpt3 |+----+------+------+--------+--------+--------+12 rows in set (0.00 sec)mysql> create view employ (col1,col2) as select id,name from employee;Query OK, 0 rows affected (0.06 sec)mysql> select * from employ;+------+------+| col1 | col2 |+------+------+| 1 | Tom || 2 | Jack || 3 | Rose || 4 | Jim || 5 | Mary || 6 | Alex || 7 | Ken || 8 | Rick || 9 | Joe || 10 | Mike || 11 | Jobs || 12 | Tony |+------+------+12 rows in set (0.03 sec)
5.3 数据管理
备份
mysql备份用mysqldump命令,具体用法如下
#mysqldump -uroot -p123456 testdb > /tmp/test.sql
恢复
#mysql -uroot -p123456 testdb < /tmp/test.sql
导出数据:
是把数据库某个表中的数据保存到一个文件之中。导出语句基本格式为:
SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;
导入数据:
和导出相反首先将数据文件导出保存到文件
然后在MySQL命令行导入:
MySQL>LOAD DATA INFILE '文件路径和文件名' INTO TABLE 表名字;
- 如果指定local关键词,则表明从客户主机读文件。如果local没指定,文件必须位于服务器上。使用load data local infile而不是load data infile