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或者REGEXPSELECT * 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(给所有的表加读锁)
参考: