博客列表 >MySQL学习杂记

MySQL学习杂记

yeyiluLAMP
yeyiluLAMP原创
2018年01月23日 22:36:58993浏览

重命名一张表
重命名一张表的语句有多种形式,以下 3 种格式效果是一样的:

RENAME TABLE 原名 TO 新名字;
ALTER TABLE 原名 RENAME 新名;
ALTER TABLE 原名 RENAME TO 新名;

重命名一列
这条语句其实不只可用于重命名一列,准确地说,它是对一个列做修改(CHANGE) :

ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束;

注意:这条重命名语句后面的 “数据类型” 不能省略,否则重命名失败。


改变数据类型
要修改一列的数据类型,除了使用刚才的CHANGE语句外,还可以用这样的MODIFY语句:

ALTER TABLE 表名字 MODIFY 列名字 新数据类型;



索引
索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容。

当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录。这样做会消耗大量数据库系统时间,并造成大量磁盘 I/O 操作。

而如果在表中已建立索引,在索引中找到符合查询条件的索引值,通过索引值就可以快速找到表中的数据,可以大大加快查询速度。

对一张表中的某个列建立索引,有以下两种语句格式:

ALTER TABLE 表名字 ADD INDEX 索引名 (列名);

CREATE INDEX 索引名 ON 表名字 (列名);


我们用这两种语句分别建立索引:

ALTER TABLE employee ADD INDEX idx_id (id);  #在employee表的id列上建立名为idx_id的索引

CREATE INDEX idx_name ON employee (name);   #在employee表的name列上建立名为idx_name的索引


索引的效果是加快查询速度,当表中数据不够多的时候是感受不出它的效果的。这里我们使用命令 SHOW INDEX FROM 表名字; 查看刚才新建的索引;


导入
导入操作,可以把一个文件里的数据保存进一张表。导入语句格式为:

LOAD DATA INFILE '文件路径和文件名' INTO TABLE 表名字;

请注意如果用Windows中的编辑器(使用\r\n做为行的结束符)创建文件,应使用:

mysql> LOAD DATA INFILE '文件路径' INTO TABLE tabl_name LINES 
    -> TERMINATED BY '\r\n';

(在运行OS X的苹果电脑上,应使用行结束符\r。)


导出
导出与导入是相反的过程,是把数据库某个表中的数据保存到一个文件之中。导出语句基本格式为:

SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;
注意:语句中 “文件路径” 之下不能已经有同名文件。


备份文件恢复数据库

方法1:

进入MySQL命令行终端
source '文件路径'

source /tmp/SQL6/MySQL-06.sql


方法2:
在Linux命令行终端

mysql -uroot -ppassword database_name < bak.sql




备份
数据库中的数据或许十分重要,出于安全性考虑,在数据库的使用中,应该注意使用备份功能。

备份与导出的区别:导出的文件只是保存数据库中的数据;而备份,则是把数据库的结构,包括数据、约束、索引、视图等全部另存为一个文件。

mysqldump 是 MySQL 用于备份数据库的实用程序。它主要产生一个 SQL 脚本文件,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT 等。

使用 mysqldump 备份的语句:

mysqldump -u root 数据库名>备份文件名;   #备份整个数据库

mysqldump -u root 数据库名 表名字>备份文件名;  #备份整个表
mysqldump -u root mysql_shiyan > bak.sql;




索引:可以加快查询速度
视图:是一种虚拟存在的表
导入:从文件中导入数据到表
导出:从表中导出到文件中
备份:mysqldump 备份数据库到文件
恢复:从文件恢复数据库



小试牛刀:成绩管理系统

1.MySQL 服务处于运行状态

2.下载运行 createdb.sql 文件,完成数据库的建立

3.找出物理(physics)分数最高的同学,并把他的信息(id、姓名、性别)输出到路径 /tmp/ 下的 physics.txt文件中

4.修改 Tom 的化学(chemistry)成绩,在原来的基础上加3分

1.
sudo service mysql start

2.
source /home/www/createdb.sql

3.
SELECT sname,cname,score 
FROM student,course,mark
WHERE (student.sid=coruse.cid AND student.sid=mark.sid AND course.cid=mark.cid) AND cname="physics"
ORDER BY score DESC;   
SELECT * INTO OUTFILE '/tmp/physics.txt' FROM student WHERE sname="Jack";

4.
UPDATE studnet,course,mark
SET score=score+3
WHERE sname="Tom" AND cname="chemistry";


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议