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(给所有的表加读锁)