MySQL数据导出、删除、表重命名、时间转化及级联查询
2015-02-07 22:35
465 查看
1. 远程登录
mysql -h host -u user -p
2. 数据导出
#导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 #导出数据库中某个表: mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 #导出一个数据库结构(-d 没有数据): mysqldump -u 用户名 -p -d 数据库名 > 导出的文件名 mysqldump -u root -p test > test.sql mysqldump -u root -p test users> test_users.sql mysqldump -u root -p -d test > test.sql create database test2 DEFAULT CHARACTER SET UTF8 source /tmp/test.sql
3. 符合条件的记录导出到指定文件中
select * from site where uid = 0 into outfile '/tmp/ligang.txt'#注意:导出到/data下无权限,可以导出到tmp下,tmp为数据库所在服务器的tmp目录
4. 删除表或数据
#要清空表中的所有记录 DELETE FROM 表名; TRUNCATE TABLE 表名; #如果要删除表中的部分记录,只能使用DELETE语句: DELETE FROM 表名 WHERE ...; #删除表: DROP TABLE tbl_name; DROP TABLE IF EXISTS tbl_name;
5. 将旧表中的数据灌入新表
INSERT INTO 新表 SELECT * FROM 旧表;
6. 含有主键等信息的完整表结构
CREATE table 新表名 LIKE book; CREATE TABLE members_tmp LIKE members RENAME TABLE members TO members_bak,members_tmp TO members; #RENAME期间表是被锁死的
7. 重命名表
ALTER TABLE t1 RENAME t2; #改变列a,从INTEGER改为TINYINT NOT NULL(名字一样),并且改变列b,从CHAR(10)改为CHAR(20),同时重命名它,从b改为c: ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20); #增加一个新TIMESTAMP列,名为d: ALTER TABLE t2 ADD d TIMESTAMP; #在列d上增加一个索引,并且使列a为主键: ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a); #删除列c: ALTER TABLE t2 DROP COLUMN c; #增加一个新的AUTO_INCREMENT整数列,命名为c: ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX (c); #注意,我们索引了c,因为AUTO_INCREMENT柱必须被索引,并且另外我们声明c为NOT NULL,因为索引了的列不能是NULL。
8. 插入or替换
首先判断数据是否存在——>如果不存在,则插入——>如果已存在,则更新
一条记录必有唯一键,如果insert的时候,唯一键冲突了,则执行update操作【insert会执行一条语句,update会执行两条语句】
#(1)关键字:REPLACE INTO #其中id为主键,如果001不存在则插入、存在则替换 REPLACE INTO student(id,NAME,age,address) VALUES('001','ligang','24','山东省'); #其中id为主键,如果002不存在则插入、存在则替换 REPLACE INTO student SET id='002',NAME='ligang',age='24',address='山东省'; #(2)关键字:INSERT ON DUPLICATE KEY UPDATE #其中id为主键,如果003不存在则插入、存在则替换 INSERT INTO student(id,NAME,age,address) VALUES('003','ligang','24','山东省') ON DUPLICATE KEY UPDATE NAME='leegang';
9. 时间操作
#将时间转化成时间戳格式 select unix_timestamp(now()); #将时间戳转化成时间格式: select from_unixtime(1251884321); #mysql中使用convert_tz函数可以实现时区转换查询,示例如下: select convert_tz('2014-02-14 00:00:00','+08:00','+09:00'); #其中,参数的意义:CONVERT_TZ (datetime, from_tz, to_tz);
10.级联查询
select TABLE1.*, TABLE2.* from TABLE1 left join TABLE2 on TABLE1.id = TABLE2.id where TABLE1.type = 1; select ... from TABLE1 left join TABLE1 on 条件1 where 条件2; #on后面条件(条件1):只针对left join后面的表(TABLE2)其作用,对TABLE1不起作用。 #where后面条件(条件2):对TABLE1和TABLE2都其作用。 select TABLE1.*, TABLE2.* from TABLE1 inner join TABLE2 on TABLE1.id = TABLE2.id where TABLE1.type = 1; #on后面的限制条件:全部起作用,与where的执行结果是一样的。 #另外,where语句与inner join确实能得到相同的结果,只是效率不同。
相关文章推荐
- MySQL数据导出、删除、表重命名、时间转化及级联查询
- mysql中定时删除N天前以时间命名的数据表
- MySQL在插入90万条数据消耗的时间以及查询90万条数据时的性能优化
- mysql 查询某年某月数据~(如果数据表用时间戳)
- mysql 查询及 删除表中重复数据
- MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)
- mysql根据时间查询前一天数据
- mysql删除多表中查询出来的数据
- oracel与mysql 查询从创建时间到更新时间的3天内的数据
- mysql将查询部分数据导出到外部文件的脚本,文件格式替换
- MySQL杂项(索引注意事项 快速导入导出数据 锁 字符集 慢查询)
- MySQL用户新建,授权,删除,改密 数据简单导入导出
- mysql 查询指定日期时间内的数据代码
- csdn摘录-sql 执行时间,sql导出查询数据到Excel...
- 【转】MySQL时间函数的使用:查询本周、下周、本月、下个月份的数据
- MYSQL 不允许在子查询的同时删除原表数据的解决方法 specify target table
- mysql查询指定时间内的数据
- MySql 几种查询相同字段中相同数据,及删除相同字段的相同数据的方法
- MySQL 5.6学习笔记(查询数据、插入、更新、删除数据)
- MYsql 查询 查询当前月份的数据(时间 查询)