约定:①、[...] 中的内容可以省略
②、{...} 中的内容任选其一
一、修改MySQL提示符
1、连接客户端后输入: prompt 提示符
e.g:
2、连接客户端时通过参数指定:mysql -u用户名 -p密码 --prompt 提示符(由于笔者直接使用MySQL客户端连接,故没试验)。
3、一些简单的参数(未能实现)
PROMPT \u@\h \d> 参数\u用户名 \h主机名 \d当前数据库
二、常用命令
1、查询版本号:SELECT VERSION();
e.g.:
2、查询当前时间:SELECT NOW();
3、查询当前用户:SELECT USER();
三、操作数据库
1、创建数据库
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name;
2、查看当前服务器下的数据库
SHOW {DATABASES | SCHEMAS};
3、查看当前数据库的配置
SHOW CREATE DATABASE 数据库名;
4、修改数据库编码方式
ALTER {DATABASE | SCHEMA} db_name [DEFAULT] CHARACTER SET [=] charset_name;
5、删除数据库
DROP {DATABASE | SCHEMAS} [IF EXISTS] db_name;
6、查看当前的warning
SHOW WARNINGS;
7、查看当前打开的数据库
SELECT DATABASE();
四、操作数据表
1、创建数据表
CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type,
……
);
2、查看数据表
SHOW TABLES [FROM db_name] [LIKE 'patter' | WHERE expr];
e.g. SHOW TABLES FROM order;
如果只是查看当前数据库下的数据表,可直接使用SHOW TABLES;
3、查看数据表结构
SHOW COLUMNS FROM table_name;
4、修改数据表的列
①、添加 || 删除列
|----添加单列
ALTER TABLE tb_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name];
e.g. ALERT TABLE users1 ADD COLUMN age TINYINT UNSIGNED NOT NULL DEFAULT 10 ;
如果不加AFTER会将此age列加到最后一列)
ALTER TABLE users1 ADD pname VARCHAR(20) NOT NULL AFTER username;
会在users1中username列后添加新的一列pname
同理如果加上FIRST 就会添加到表的第一列
|----添加多列
ALTER TABLE tb_name ADD [COLUMN] (col_name column_definition,...) ;
注:definition [ˌdefɪˈnɪʃn] 定义、解释
|----删除单列
ALTER TABLE tb_name DROP [COLUNM] col_name;
|----删除多列
ALTER TABLE tb_name DROP [COLUMN] (col_name column_definition,...) ;
②、添加 || 删除约束
|----添加主键约束
ALTER TABLE tb_name ADD [ CONSTRAINT [ symbol ] ] PRIMARY KEY [ index_type ] (index_col_name);
e.g.
ALTER TABLE tb_name ADD CONSTRAINT PK_user2_id PRIMARY KEY ( id);
详解:将users2 中的id字段设置为主键,并将主键名设置为PK_users2_id ;
注:symbol [ˈsɪmbl] 符号,象征
|----删除主键约束
ALTER TABLE tb_name DROP PRIMARY KEY;
注:由于主键只有一个,故不需要指定名字
|----添加唯一约束
ALTER TABLE tb_name ADD [ CONSTRAINT [ symbol ] ] UNIQUE [ INDEX | KEY ] [index_name ] [ index_type ] (index_col_name);
|----删除唯一约束
ALTER TABLE tb_name DROP { index | key } index_name;
|----添加外键约束
ALTER TABLE tb_name ADD [ CONSTRAINT [ symbol ] ] FOREIGN KEY [ index_name ] ( index_col_name,... ) reference_definition;
e.g.
ALTER TABLE users2 ADD FOREIGN KEY ( pid ) REFERENCES tb2 ( id );
详解:将users2 pid字段外键设置为外键列,参照表tb2的 id字段
|----删除外键约束
如果不是自己指定的外键名字,必须先查到由系统默认赋予的外键约束的名字
SHOW CREATE TABLE tb_name; 一般结构e.g.:users2_ibfk_1
ALTER TABLE tb_name DROP FOREIGN KEY fk_symbol;
|----添加 || 删除默认约束
ALTER TABLE tb_name ALTER [ COLUMN ] col_name { SET DEFAULT LITERAL | DROP DEFAULT }
e.g.
ALTER TABLE users2 ALTER COLUMN age SET DEFAULT 15;
详解:将users2的age字段默认值设置为15;
注:litera [ˈlɪtərəl] 错排,文字上的错误
③、修改列定义
ALTER TABLE tb_name MODIFY [ COLUMN ] col_name column_definition [ FIRST | AFTER col_name ]
e.g. 将表users2中的id字段放到最前列(本来非最前列)
ALTER TABLE users2 MODIFY id SMALLINT UNSIGNED NOT NULL (本来id字段的设置可以改变,即同时将类型等同时修改) FIRST;
注意:如果改变字段的类型是有大类型改为小类型可能会造成数据的丢失
注:modify [ˈmɒdɪfaɪ] 修改
④、修改列的名字
ALTER TABLE tb_name CHANGE [ COLUMN ] old_col_name new_col_name column_definition [ FIRST | AFTER col_name ]
ALTER TABLE tb_name CHANGE pid p_id TINYINT UNSIGNED NOT NULL;
注:CHANGE 关键字即可修改列名字又可修改列定义
⑤、修改表的名字
方法一 ALTER TABLE tb_name RENAME [ TO | AS ] new_tb_name;
方法二 RENAME tb1_name TO new_tb1_name [ , tb2_name TO new_tb2_name,... ]
注:方法二可同时修改多张表的名字
注意:尽量不要修改表或列的名字,以防引用此张表的视图、存储过程等出错。