创建数据库
create database jiang; //创建数据库
show databases; //查看所有数据库名称
use jiang; //选中数据库
drop database jiang; //删除数据库
数据库的存储引擎
存储引擎的概念是MySQL的特点,而且是一种插入式的存储引擎概念。这决定了MySQL 数据库中的表可以用不同的方式存储。用户可以根据自己的不同要求,选择不同的存储方式、是否进行事务处理等。
showengines \G //mysql支持的所有的engine
show variables like '%engine%'; //查看当前库的engine
- innodb存储引擎
最常用,支持事务,回滚,自增,外键
表结构存在.frm文件中
数据和索引存在表空间中
读写效率稍差,占用空间大
-
myisam
表结构存在.frm文件中
.myd存储数据
.myi存储索引
快速,占空间小,不支持事务和并发
-
memory
MEMORY存储引擎默认使用哈希(HASH)索引。其速度要比使用B型树(BTREE)索引快。如果读者希望使用B型树索引,可以在创建索引时选择使用。
创建数据库表
CREATE TABLE 表名 ( 属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],
......
属性名 数据类型
);
create table example(id int,name varchar(20), sex boolean);
//主键
CREATE TABLEexample1(stu_id INT PRIMARY KEY,
stu_name VARCHAR(20),
stu_sexBOOLEAN,
);
//多字段主键
CREATE TABLEexample2(stu_id INT,
course_idINT,
grade FLOAT,
PRIMARY KEY(stu_id, course_id)
);
外键
CONSTRAINT 外键别名 FOREIGN KEY (属性1.1, 属性1.2,…, 属性1.n)REFERENCES表名(属性2.1, 属性2.2,…, 属性2.n)
CREATE TABLEexample3(stu_id INT, course_idINT, CONSTRAINTc_fk FOREIGN KEY (stu_id, course_id) REFERENCESexample2(stu_id, course_id));
设置表的非空约束
属性名 数据类型 NOT NULL
CREATE TABLEexample4(id INT NOT NULL PRIMARYKEY,
name VARCHAR(20)NOT NULL,
stu_id INT,
CONSTRAINTd_fk FOREIGN KEY(stu_id),
REFERENCESexample1(stu_id)
);
设置表的唯一性约束
属性名 数据类型 UNIQUE
CREATE TABLEexample5(id INTPRIMARY KEY,
stu_id INT UNIQUE,
name VARCHAR(20) NOT NULL
);
设置表的属性值自动增加
属性名 数据类型 AUTO_INCREMENT
CREATE TABLEexample6(id INT PRIMARY KEY AUTO_INCREMENT,
stu_id INTUNIQUE,
name VARCHAR(20)NOT NULL
);
设置表的属性的默认值
属性名 数据类型 DEFAULT 默认值
CREATE TABLEexample7(id INT PRIMARY KEY AUTO_INCREMENT,
stu_id INTUNIQUE,
name VARCHAR(20)NOT NULL.
english VARCHAR(20)DEFAULT ‘zero’,
computer FLOAT DEFAULT 0
);
查看表结构
describe example;
desc example;
//查看表详细结构语句SHOW CREATE TABLE
SHOW CREATE TABLE 表名;
SHOW CREATE TABLE example\G
修改表
- 修改表名
ALTER TABLE 旧表名 RENAME [TO] 新表名;
ALTER TABLE example0 RENAME TO user;
- 修改字段的数据类型
ALTER TABLE 表名 MODIFY 属性名数据类型;
ALTER TABLE user MODIFY name VARCHAR(30);
- 修改字段名
//只修改字段名
ALTER TABLE 表名 CHANGE 旧属性名新属性名 新数据类型;
alter table example change stuname name varchar(22);
//增加字段
ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST|AFTER属性名2];
alter table example add phone varchar(23);
alter table example add phone varchar(23) not null;
//表的第一个位置增加字段
alter table example add phone varchar(23) first;
//指定位置增加
alter table example add phone varchar(23) after age;
//删除字段
ALTER TABLE 表名 DROP 属性名;
alter table example drop phone;
更改表的存储引擎
ALTER TABLE 表名ENGINE=INNODB|MYISAM|MEMOERY;
SHOW CREATE TABLE user\G;
ALTER TABLE user ENGINE=MyISAM;
删除表的外键约束
ALTER TABLE表名 DROP FOREIGN KEY 外键别名 ;
SHOW CREATE TABLE example3\G;
ALTER TABLE example3 DROP FOREIGN KEY c_fk;
SHOW CREATE TABLE example3\G;
删除表
-
删除没有被关联的普通表
DROP TABLE example5;
-
删除被其他表关联的父表
DROP TABLE example1; -- 报错
SHOW TABLE example4\G;
ALTER TABLE example4 DROP FOREIGN KEY d_fk;
SHOW TABLE example4\G;
DROP TABLE example1;
DESC example1;