MySQL 常用操作
如果是本地开发,使用 GUI 工具比如官方的 MySQL Workbench 会省事很多,但命令行方式在服务器环境特别有用。 另,如果官方的下载地址很慢的话,可尝试这个镜像,速度超快的。 数据库创建数据库CREATE DATABASE <db_name>; 删除数据库DROP DATABASE <db_name>; 注意 重命名数据库
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; 其中 注:上面为 shell 脚本而非 sql 脚本,在 shell 中运行或保存成 shell 文件执行。 清空数据库清空数据库,即清空数据库中所有表中的记录。 SET FOREIGN_KEY_CHECKS = 0;
导出数据库导出操作是通过 $ mysqldump -u <username> -p --dabases [db1] [db2]... > backup.sql 默认导出时是带数据记录的,可通过 $ mysqldump -u <username> -p --no-data --dabases [db1] [db2]... > backup.sql 更多 导入数据库$ 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; 列更新列更新列的定义可通过 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; 默认会添加到表中最后一列,可通过 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; 需要删除的记录,其某列的值,在一个可选的列表中,可以将 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; 外键创建外键外键可在创建表时指定,通过 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_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; 创建并查看表的关系图有一样是命令行无法进行的,那就是生成数据库整体的表关系图(EER 图)。这个需要借助文章开头提到的 GUI 工具 MySQL Workbench。 方法是从菜单中 MySQL Reverse Engineer 菜单 生成结果示例: MySQL EER 图 相关资源
|