MySQL 常用操作
2019-05-17 23:47
2241 查看
如果是本地开发,使用 GUI 工具比如官方的 MySQL 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; 其中 -ppassword中 password为你的密码,和 -p之间没有空格。 注:上面为 shell 脚本而非 sql 脚本,在 shell 中运行或保存成 shell 文件执行。 清空数据库清空数据库,即清空数据库中所有表中的记录。 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; 列更新列更新列的定义可通过 CHANGE或 MODIFY。 区别仅在于后者不需要重新指定一个新的一列名。 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; 创建并查看表的关系图有一样是命令行无法进行的,那就是生成数据库整体的表关系图(EER 图)。这个需要借助文章开头提到的 GUI 工具 MySQL Workbench。 方法是从菜单中 database-> Reverse Engineer...进入,然后跟着向导一步步直到结束,便创建好了相应数据库的表间关系图。 MySQL Reverse Engineer 菜单 生成结果示例: MySQL EER 图 相关资源
|
相关文章推荐
- Linux下MySQL常用操作网络汇总总结
- Mysql 常用基本操作
- MySQL添加列、删除列,创建主键等常用操作总结
- MySql常用操作指令
- mysql常用基础操作语法(十)~~子查询【命令行模式】
- mysql常用操作命令
- MySQL增删改查的常用操作指令总结
- mysql常用操作语句
- 学习MySQL常用操作命令
- linux下mysql常用操作
- Mysql-02.常用操作命令
- linux mysql 常用操作命令
- mysql表操作常用语法
- mysql常用操作汇总(三)
- MySQL学习总结(四)数据的基本操作以及MySQL运算符和常用函数
- 【Mysql】常用指令之——用户操作(创建,授权,修改,删除)
- MySQL常用操作命令
- MySQL常用操作
- Mac下安装、使用、删除MySQL,以及mysql常用操作语句
- mysql常用操作