数据库操作
1. 创建数据库
CREATE DATABASE 数据库名;
2. 删除数据库
DROP DATABASE 数据库名;
3. 查看数据库
SHOW DATABASES;
4. 查看数据库的存储引擎
SHOW ENGINES\G
或者:SHOW VARIABBLES LIKE 'have%';
5. 查看默认存储引擎
SHOW VARIABLES LIKE 'storage_engine';
表操作
1. 创建表操作
创建表的SQl语句: CREATE TABLE
语法形式:CREATE TABLE 表名(属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],
. . .
属性名 数据类型(注意后无逗号)
);
表名 -创建的表的名称;
属性名 -表中字段的名称;
数据类型 -字段的数据类型;
完整性约束条件 -指定字段的某些特殊约束条件;
注意:创建之前先使用 "USE 数据库名;" 选择所需数据。
完整性约束条件:PRIMARY KEY(标识该属性为该表的主键); FOREIGN KEY(标识该属性为该表的外键); NOT NULL(标识该属性不能为空); UNIQUE(标识该属性的只是唯一的); AUTO_INCREMENT(标识该属性的值自动增加); DEFAULT(为该属性设置默认值)
设置表的主键:
单字段主键 语法: 属性名 数据类型 PRIMARY KEY
多字段主键 语法: PRIMARY KEY(属性名1,属性名1,...,属性名n)。
例如:CREATE TABLE example2(stu_id INT,
course_id INT,
grade FLOAT,
PRIMARYKEY(stu_id,course_id)
);
外键设置的基本语法规则:
CONSTRAINT 外键别名 FOREING KEY (属性1.1,属性1.2,...,属性1.n)
REFERENCES 表名(属性2.1,属性2.2,...,属性2.n)
外键别名 -外键代号
属性1 -参数列表是子表中设置的外键;
表名 -参数是指父表的名称;
属性2 -参数列表是父表的主键。
例如:CREATE TABLE example3(id INT PRIMARY KEY,
stu_id INT,
course_id INT,
CONSTRAINT c_fkFOREING KEY (stu_id, course_id)
REFERENCES example2(stu_id, course_id)
);
非空约束的基本规则:属性名 数据类型 NOT NULL
例如:CREATE TABLE example4(id INT NOT NULL PRIMARY KEY,
stu_id INT,
CONSSTRAINT d_fk FOREIGNKEY(stu_id)
REFERNCESexample1(stu_id)
);
设置表的唯一性约束:属性名 数据类型 UNQUE
例如:CREATE TABLE example5(id INT PRIMARY KEY,
stu_id INT UNIQUE,
name VARCHAR(20)NOT NULL
);
设置表的属性值自动增加:属性名 数据类型 AUTO_INCREMENT
一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。
例如:CREATE TABLE example6(id INT PRIMARY KEY AUTO_INCREMENT,
stu_id INT UNIQUE,
name VARCHAR(20) NOT NULL
);
设置表的属性的默认值: 属性名 数据类型 DEFAULT 默认值
例如:CREATE TABLE example7(id iNT PRIMARY KEY AUTO_INCREMENT,
stu_id INT NIQUE,
name VARCHAR(20) NOT NULL,
English VARCHAR(20)DEFAULT 'zero',
Math FLOAT DEFAULT0,
Computer FLOATDEFAULT 0
);
2. 查看表基本单位结构语句
语法:DESCRIBLE 表名; / DESC 表名;
例如:DESCRIBLE example1;/ DESC example;
3. 查看表详细结构语句
SHOW CREATE TABLE 表名;
4. 修改表名
语法:ALTER TABLE 旧表名 RENAME [TO] 新表名;
5. 删除表操作
DROP TABLE `tablename`;
字段操作
1. 修改字段的数据类型
语法:ALTER TABLE 表名 MODIFY 属性名数据类型;
2. 修改字段名
语法:ALTER TABLE 表名 CHANGE 旧属性名新属性名 新数据类型;
只修改字段名:ALTERTABLE example1 CHANGE stu_name name VARCHAR(20);
修改字段名和字段数据类型:ALTER TABLE example1 CHANGE stu_sex sex INT(2);
3. 增加字段
语法:ALTERTABLE 表名 ADD 属性名数据类型 [完整性约束条件] [FIRST| AFTER 属性名2];
属性名1 -指需要增加的字段名称;
数据类型 -指新增加字段的数据类型;
完整性约束条件 -设置新增字段的完整性约束条件;
FIRST -将新增字段添加到“属性名2”所指的字段后;(默认添加在最后一个字段)
增加无完整性约束条件的字段
例如:ALTERTABLE example1 ADD phone VACGAR(20);
增加完整性约束条件的字段:
例如:ALTERTABLE example1 ADD age INT(4) NOT NULL;
表的第一个位置增加字段:
例如:ALTERTABLE example1 ADD num INT(8) PRIMARY KEY FIRST;
表的指定位置之后增加字段:
例如:ALTER TABLE example1 ADD address VARCHAR(30) NOT NULL AFTER phone;
4. 删除字段
语法:ALTERTABLE 表名 DROP 属性名;
属性名 -指需要从表中删除的字段的名称
例如:ALTER TABLE example1 DROP stu_id;
5. 修改字段的排列位置
语法:ALTERTABLE 表名 MODIFY 属性名1 数据类型 FIRST|AFTER 属性名2;
字段修改到第一的位置:
例如:ALTERTABLE example1 MODIFY name VARCHAR(20) FIRST;
字段修改到指定位置:AFTER-参数可以将字段排在表中指定的字段之后
例如:ALTER TABLE example1 MODIFY num INT(8) AFTER phone;
存储引擎操作
1. 修改表的存储引擎
语法:ALTERTABLE 表名 ENGINE=存储引擎名;
例如:ALTER TABLE example1 ENGINE=MyISAM;
索引操作
索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATEINDEX或ALTER TABLE来给表增加索引。删除索引可以利用ALTER TABLE或DROP INDEX语句来实现。
1. 创建索引
(1)使用ALTER TABLE语句创建索引。
语法如下:
alter table table_name add index index_name (column_list) ;
alter table table_name add unique (column_list) ;
alter table table_name add primary key (column_list) ;
其中包括普通索引、UNIQUE索引和PRIMARYKEY索引3种创建索引的格式,table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以同时创建多个索引。
创建索引的示例如下:
mysql> use tpsc
Database changed
mysql> alter table tpsc add index shili (tpmc ) ;
Query OK, 2 rows affected (0.08 sec)
Records: 2Duplicates: 0 Warnings: 0
(2)使用CREATE INDEX语句对表增加索引
能够增加普通索引和UNIQUE索引两种。其格式如下:
create index index_name on table_name (column_list) ;
create unique index index_name on table_name (column_list) ;
说明:table_name、index_name和column_list具有与ALTERTABLE语句中相同的含义,索引名不可选。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。
2. 删除索引
删除索引可以使用ALTERTABLE或DROP INDEX语句来实现。DROP INDEX可以在ALTER TABLE内部作为一条语句处理,其格式如下:
drop index index_name on table_name ;
alter table table_name drop index index_name ;
alter table table_name drop primary key ;
其中,在前面的两条语句中,都删除了table_name中的索引index_name。而在最后一条语句中,只在删除PRIMARY KEY索引中使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。
如果从表中删除某列,则索引会受影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。
删除索引的操作,如下面的代码:
mysql> drop index shili on tpsc ;
Query OK, 2 rows affected (0.08 sec)
Records: 2Duplicates: 0 Warnings: 0
其他命令
查看表状态信息 SHOW TABLE STATUS
SHOW TABLE STATUS from db_name //所指数据库中所有表的信息
SHOW TABLE STATUS from db_name LIKE 'uc%' //表名以uc开头的表的信息