退出: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的主要数据类型