启动My SQL监视器:mysql -u username -p[password]  password与-p之间无空格

退出:exit或quit
 
创建数据库与表:
     显示所有数据库:SHOW DATABASES;
     创建数据库:     CREATE DATABASE databaseName;
     删除数据库:     DROP DATABASE databaseName;
     创建新用户,并赋予其对数据库的操作权限:GRANT ALL PRIVILEGES ON databaseName.* TO userName@localhost IDENTIFIED by 'passwd';
     指定使用的数据库:  USE databaseName;
     显示现在使用中的数据库:SELECT DATABASE();
     
     创建新表:create table tableName ( columnName dataType options [,...]);
     创建表时指定字符集: create table tableName ( columnName dataType options [,...]) CHARSET=utf8;
 
     显示所有表:SHOW TABLES;
     显示表的结构: DESC databaseName;
     删除表:DROP TABLE 表名;
     
      CREATE TABLE命令的选项:
          1.AUTO_INCREMENT自增序列
               数据为int类型,列的定义后加上 AUTO_INCREMENT关键字,使用[PRIMARY KEY]等设置其唯一性。
               初始化AUTO_INCREMENT  : ALTER TABLE table_name AUTO_INCREMENT = 0;
     
数据插入及显示:
     与oracleg 一样
     各理论运算符的优先顺序是:not ->and -> or
     分页:limit(startPos,num)
 
修改表的结构:
     修改列的定义:ALTER TABLE ... MODIFY
     追加列:ALTER TABLE ... ADD
     修改列的名称与定义:ALTER TABLE ...CHANGE
     删除列:ALTER TABLE ... DROP

添加字段:alter table `user_movement_log` Add column GatewayId int not null default 0 AFTER `Regionid` (在哪个字段后面添加)

删除字段:alter table `user_movement_log` drop column Gatewayid

调整字段顺序:ALTER TABLE `user_movement_log` CHANGE `GatewayId` `GatewayId` int not null default 0 AFTER RegionID
                       ALTER TABLE `user_movement_log` CHANGE `GatewayId` `GatewayId` int not null default 0 FIRST;

主键:alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);

增加一个新列:
alter table t2 add newfield timestamp;  (简单语法,只指定新添字段newfield 类型为timestamp)

alter table infos add newfield tinyint not null default '0'; (同时指定字段null属性、默认值)

删除列:alter table t2 drop column c; (删除列c)

重命名列:alter table t1 change a b integer; (把列a改名为b,注意要指定列类型)

改变列的类型

alter table t1 change b b bigint not null; (把列a改名为b,指定列类型及null属性)

alter table infos change list list tinyint not null default '0';
 

重命名表:alter table t1 rename t2;

加索引

alter table tablename change depno depno int(5) not null;

alter table tablename add index 索引名 (字段名1[,字段名2 …]);

alter table tablename add index emp_name (name);

加主关键字的索引:mysql> alter table tablename add primary key(id);

加唯一限制条件的索引:mysql> alter table tablename add unique emp_name2(cardnumber);

删除某个索引:mysql>alter table tablename drop index emp_name;

修改表:

增加字段:mysql> ALTER TABLE table_name ADD field_name field_type;

修改原字段名称及类型:mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

删除字段:mysql> ALTER TABLE table_name DROP field_name;
 
复制表和删除表
          表的列构造+数据的复制:CREATE TABLE newTableName SELECT * FROM oldTableName;
          复制表的列构造:CREATE TABLE newTableName LIKE oldTableName;
          数据的复制:INSERT INTO tableName SELECT * FROM sourceDataTable;
 
表的删除:
          DROP TABLE (IF EXISTS) tableName;
 
 
事务处理及锁定:
     确认表中正在使用的引擎: SHOW CREATE TABLE 表名;
     修改表中使用的引擎:ALTER TABLE 表名 ENGINE = 新引擎;
     修改自动提交功能:SET AUTOCOMMIT = 0;SET AUTOCOMMIT = 1;
     查看现在的自动提交状态:SELECT @@AUTOCOMMIT;
     定义保存点:SAVEPOINT 保存点名;
     回滚到指定的保存点: ROLLBACK TO SVAEPOINT 保存点名;
     设置会话的锁定种类:SET SESSION TRANSACTION ISOLATION LEVEL (READ UNCOMMITED)/READ COMMITED/SERIALIZABLE;
 
索引:
     创建索引:CAEATE [UNIQUE]  INDEX indexName ON tableName (colname,...);
     显示表中的索引信息:SHOW INDEX FROM tableName;
     删除索引:DROP INDEX indexName ON tableName;
     创建多列的复合索引:CREATE INDEX indexName on table(colName,...)
     创建惟一索引:CREATE UNIQUE INDEX idx_name ON table(colName,...)
     确认索引的使用状态:EXPLAIN 调查对象   SELECT 语句;
     
视图:
     显示视图中所有的列信息:SHOW FIELDS FROM viewName;
     创建视图时可以使用[WITH CHECK OPTION]
 
存储过程:
     通过DELIMITER改变分隔符:DELIMITER //;
     查看数据库中已有的存储过程: SHOW PROCEDURE STATUS \G
     删除存储过程:DROP PROCEDURE procedureName;
     调用存储过程:CALL procudureName(para,...)
     创建存储过程:略
     
函数:
     查看数据库已有的函数:SHOW FUNCTION STATUS\G
     查看已有的触发器:SHOW TRIGGERS\G
 
数据库中文件的使用:
     导入数据文件:LOAD DATA INFILE file_name INTO TABLE table_name options;
          可选参数:FILEDS TERMINATED BY terminatedCode;(default [\t]])
                          LINES TERMINATED BY  terminatedCode;(default [\n]])
                          IGNORE 最初跳过的行 LINES(DEFAULT 0)
     导出数据:SELECT * INTO OUTILE fileName option FROM table;
 
     执行文件中保存的SQL:SOURCE fileName
     在命令行窗口中执行文件中保存的SQL命令系列:mysql 数据库名 -u用户名 -p密码 -e "MySQL监视器的命令",如  
          mysql sakila -uroot -prootroot -e "select * INTO OUTFILE 'D:/data.csv' FIELDS TERMINATED BY ','  from film"
     使用tee命令将SQL语句的执行结果保存到文件中:tee 输出的文件名,结束:notee
 
     数据库整体的备份与恢复:
     转储: mysqldump -u userName -p passwd databaseName > outputFileName
          如果转储失败,可以尝试在命令的最后加上  [ --default-character-set=utf8]
     恢复:先创建数据库:mysqladmin -u userName -ppwd CREATE databaseName
               再导入数据:mysql -u root -ppwd databaseName < inputFileName  [ --default-character-set=utf8]
 
 附:
     My SQL的主要数据类型