mysql dump 等操作

DDL  ----Data Definition Language 数据库定义语言, 如 create procedure之类

DML  ----Data Manipulation Language 数据操纵语言, 如insert,delete,update,select(插入、删除、修改、检索)

DCL  ----Data Control Language 数据库控制语言, 如grant,deny,revoke等,只有管理员才有这样的权限。

 

创建数据库

CREATE DATABASE [IF NOT EXISTS] DBNAME [CHARACTER SET 'CHAR_NAME'] [COLLATE 'COLL_NAME']

修改:ALTER 删除:DROP

 

创建表

CRTATE TABLE [IF NOT EXISTS] TBNAME(col_name col_definition,...)

例:

CREATE TABLE students(
Id INT PRIMARY KEY NOT NULL AUTO_INCREMENT UNSIGNED,
Name CHAR(20) UNIQUE KEY NOT NULL,
Age TINYINT UNSIGNED INDEX,
Gender CHAR(1) NOT NULL) [ENGINE={MyISAM | InnoDB }];

根据已有表创建新表(数据保留,字段定义会丢失)

CREATE TABLE test SELECT * FROM students WHERE Id>5;

根据已有表创建空表

CREATE TABLE TBNAME1 LIKE TBNAME2;

 

修改表

ALTER TABLE tb_name 
    MODIFY #修改字段定义
    CHANGE #可以修改字段名和字段定义
    ADD #添加字段
    DROP #删除字段

例:

#添加字段
ALTER TABLE students ADD (course VARCHAR(100),teacher CHAR(20));

#添加惟一键
ALTER TABLE students ADD UNIQUE KEY Name;

#修改字段,放在Name字段之后,修改字段需要带上新的字段的定义, MODIFY只能修改字段定义
ALTER TABLE students CHANGE course Course VARCHAR(100) [AFTER Name];

#重命名表名
ALTER TABLE students RENAME TO stu;
RENAME TABLE stu TO students;

#添加一个外键约束
ALTER TABLE students ADD FOREIGN KEY foreign _cid (CID) REFERENCES course (CID);

#创建索引
CREATE INDEX index_name ON TABLE (col_name[(length)] [ASC|DESC]) [USING {BTREE|HASH}];

#删除索引
DROP INDEX index_name ON TBNAME;

 

INSERT INTO students (Name,Gender,teacher) VALUE ('lujunyi','M','mage'),('wusong','M','zhuima');

UPDATE students SET Course='mysql' WHERE Name='lujunyi';

DELETE FROM students WHERE Course='mysql';

#清空表:将会重置计数器
TRUNCATE tb_name;

 

SELECT * FROM students WHERE Age BETWEEN 20 AND 25;

# %表示任意长度的任意字符,_表示任意单个字符
SELECT * FROM student WHERE Name LIKE 'Y%';

#使用正则表达式匹配查询,关键词为RLINK或者REGEXP
SELECT * FROM students WHERE Name RLINK '^[MNY].*$';

SELECT * FROM students WHERE Age IN (20,22,24);

SELECT * FROM students WHERE Age IS NOT NULL;

SELECT * FROM students LIMIT 5,2;

SELECT COUNT(Age) AS Num,Age FROM students GROUP BY Age HAVING Num>2;

# 查询前一天创建的记录hour day month 
SELECT * FROM students WHERE day(createDate) = day(date_sub(now(), interval 1 day));

#查询明天的记录
SELECT * FROM students WHERE day(birthDay) = day(date_add(now(), interval 1 day));

 

 

# 创建用户  _:任意单个字符  %:任意多个字符
CREATE USER 'USERNAME'@'HOST' IDENTIFIED BY 'PASSWORD';

# 删除用户
DROP USER 'USERNAME'@'HOSHOST'

# 授权
GRANT pri1,pri2...| ALL PRIVILEGES ON DB_NAME.TB_NAME TO 'USERNAME'@'HOST' [IDENTIFIED BY 'PASSWORD']

# 取消授权
REVOKE pri1,pri2...ON DB_NAME.TB_NAME FROM 'USERNAME'@'HOST';

# 查看授权
SHOW GRANTS FOR 'USERNAME'@'HOST';

 

mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名;

导出整个数据库结构和数据

mysqldump -h localhost -uroot -p123456 database > dump.sql

导出单个数据表结构和数据

mysqldump -h localhost -uroot -p123456  database table > dump.sql

导出整个数据库结构(不包含数据)

mysqldump -h localhost -uroot -p123456  -d database > dump.sql 

导出单个数据表结构(不包含数据)

mysqldump -h localhost -uroot -p123456  -d database table > dump.sql

主要参数介绍:

1.连接选项
  -u, --user=name
  -p, --password=name
  -h, --host=name
  -P, --port=#

2.输出内容选项
 --add-drop-database (默认是自动加上的)
 --add-drop-table     (默认是自动加上的)
 -n, --no-create-db 没有建库语句
 -d, --no-data  没有表数据
 -t, --no-create-info 没有建表语句

3.输出格式选项
--compact (精简格式,将导出时的一些备注省略)
-c --complete-insert (导出数据的语句中,在insert to table values后加上各个字段,如insert into table(tab1,tab2,…) values(value1,value2,…))
-T(指定数据表中的数据备份为单纯的数据文件和建表SQL两个文件)

4.字符集选项

--default--character-set=xx

5.其他选项
-F --flush-logs(备份前刷新日志)
-l --lock-tables(给所有的表加读锁)

posted @ 2013-12-05 23:35  堂哥  阅读(390)  评论(0编辑  收藏  举报