MySQL 常用操作

栏目: 数据库 · 发布时间: 4年前

内容简介:如果是本地开发,使用 GUI 工具比如官方的另,如果官方的下载地址很慢的话,可尝试这个注意

如果是本地开发,使用 GUI 工具比如官方的 workbench 会省事很多,但命令行方式在服务器环境特别有用。

另,如果官方的下载地址很慢的话,可尝试这个 镜像 ,速度超快的。

数据库

创建数据库

CREATE DATABASE <db_name>;

删除数据库

DROP DATABASE <db_name>;

注意 DROP 操作没有确认步骤,回车就执行了。所以进行删除操作时需要谨慎。

重命名数据库

RENAME 命令是用来对表进行重命名的,数据库没有对应的命令,只能间接实现。原理是将老数据库中的所有表重命名到新数据库下。当然,首先得创建新数据库。

RENAME TABLE old_db.table TO new_db.table;

这是一个重复性的操作,所以可以通过脚本来实现,

mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \ 
    do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done

或,

for table in `mysql -u root -ppassword -s -N -e "use old_db;show tables from old_db;"`; do mysql -u root -ppassword -s -N -e "use old_db;rename table old_db.$table to new_db.$table;"; done;

其中 -ppasswordpassword 为你的密码,和 -p 之间没有空格。

清空数据库

清空数据库,即清空数据库中所有表中的记录。

SET FOREIGN_KEY_CHECKS = 0;

SELECT @str := CONCAT('TRUNCATE TABLE ', table_schema, '.', table_name, ';')
FROM   information_schema.tables
WHERE  table_type   = 'BASE TABLE'
  AND  table_schema IN ('db1_name','db2_name');

PREPARE stmt FROM @str;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;

SET FOREIGN_KEY_CHECKS = 1;

导出数据库

导出操作是通过 mysqldump 命令行 工具 来完成的。

$ mysqldump -u <username> -p --dabases [db1] [db2]... > backup.sql

默认导出时是带数据记录的,可通过 --no-data 只导出表结构,

$ mysqldump -u <username> -p --no-data --dabases [db1] [db2]... > backup.sql

更多 mysqldump 相关的参数可参见 这里

导入数据库

mysql -u username -ppassword database_name < backup.sql

创建表

CREATE TABLE [IF NOT EXISTS] table_name(
    column_list
);

重命名表

RENAME TABLE tb1 TO tb2;

如果想一次重命名多张表,

RENAME TABLE tb1 TO tb2, tb3 TO tb4;

删除表

DROP TABLE <table_name>;

同时删除多张表,

DROP TABLE table1,table2...;

像这种操作表记录的,如果表存在外键关联,一般会报错,如果你明显知道自己在干什么,且知道操作是安全的,可暂时关闭 MySQL 的外键检查,操作完成后再开启。后续的操作中遇到该报错可同样应用此设置。

SET FOREIGN_KEY_CHECKS = 0; 
DROP TABLE <table_name>;
SET FOREIGN_KEY_CHECKS = 1;

清空表

TRUNCATE [TABLE] tbl_name;

更新列

更新列的定义可通过 CHANGEMODIFY 。 区别仅在于后者不需要重新指定一个新的一列名。

ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL FIRST;
ALTER TABLE MyTable MODIFY COLUMN foo VARCHAR(32) NOT NULL AFTER baz;

添加列

ALTER TABLE <table_name> ADD COLUMN tempID int NULL DEFAULT 3;

默认会添加到表中最后一列,可通过 AFTER 来控制其位置。比如,将新增的列添加到 ID 列后面。

ALTER TABLE <table_name> ADD COLUMN tempID int NULL DEFAULT 3 AFTER ID;

删除列

ALTER TABLE <table_name> DROP COLUMN <column_name>;

一次删除多列,

ALTER TABLE table
DROP COLUMN column_1,
DROP COLUMN column_2,
…;

记录

插入记录

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

一次插入多条记录:

INSERT INTO table(c1,c2,...)
VALUES 
   (v11,v12,...),
   (v21,v22,...),
    ...
   (vnn,vn2,...);

删除记录

删除满足条件的列:

DELETE FROM `table_name` [WHERE condition];

如果是删除某列其值介于一个区间,比如 id 在 50~100 的记录,可以这样:

DELETE FROM tablename WHERE id BETWEEN 50 AND 100;

需要删除的记录,其某列的值,在一个可选的列表中,可以将 WHERE 搭配 IN 关键词:

DELETE FROM tablename WHERE id IN (1,2,3,...,254);

像上面范围命中时,还可配合 <> 不等于来进一步控制:

DELETE FROM tablename WHERE id BETWEEN 1 AND 254 AND id<>10;

范围的情况常用的场景是命中一个日期区间的记录:

DELETE FROM `objects`
WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55')

更新记录

UPDATE [LOW_PRIORITY] [IGNORE] table_name 
SET 
    column_name1 = expr1,
    column_name2 = expr2,
    ...
[WHERE
    condition];

示例:

UPDATE employees 
SET 
    lastname = 'Hill',
    email = 'mary.hill@classicmodelcars.com'
WHERE
    employeeNumber = 1056;

外键

创建外键

外键可在创建表时指定,通过 FOREIGN KEY 关键字。

CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name (columns)
REFERENCES parent_table(columns)
ON DELETE action
ON UPDATE action

示例:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

对于已经存在的表,使用 ALTER TABLE 配合 ADD FOREIGN KEY 来完成。

ALTER table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name(columns)
REFERENCES parent_table(columns)
ON DELETE action
ON UPDATE action;

示例:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

创建的同时可指定一个外键名,否则 MySQL 会自己生成一个。这个名字在删除时有用。

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

外键删除

ALTER TABLE table_name 
DROP FOREIGN KEY constraint_name;

以上所述就是小编给大家介绍的《MySQL 常用操作》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入浅出Web设计(中文版)

深入浅出Web设计(中文版)

(美)瓦特罗尔、(美)西罗托 / O'Reilly Taiwan公司 / 东南大学出版社 / 2010-11 / 99.00元

你将从《深入浅出Web设计(中文版)》学到什么?你曾经希望看看书就能学到真正的网站设计吗?曾经想过该如何同时达成让网站看起来美观,又能有效率地沟通信息,还要通过可访问性与可用性的策略吗?《深入浅出Web设计》正是精通上述主题的秘笈。我们将学到如何设计一个绝佳、用户友好的网站,上谈客户需求,下说手绘分镜表,乃至完成在线所需的HTML与css主文件……而且会有一个真正可以运作的网站!一起来看看 《深入浅出Web设计(中文版)》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具