数据库
查看所有的数据库
SHOW DATABASES ;
创建一个数据库
CREATE DATABASE k;
删除一个数据库
DROP DATABASE k;
使用这个数据库
USE k;
表
查看所有的表
SHOW TABLES ;
创建一个表
CREATE TABLE n(id INT, name VARCHAR(10));
CREATE TABLE m(id INT, name VARCHAR(10), PRIMARY KEY (id), FOREIGN KEY (id) REFERENCES n(id), UNIQUE (name));
CREATE TABLE m(id INT, name VARCHAR(10));
直接将查询结果导入或复制到新创建的表
CREATE TABLE n SELECT * FROM m;
新创建的表与一个存在的表的数据结构类似
CREATE TABLE m LIKE n;
创建一个临时表
临时表将在你连接MySQL期间存在。当断开连接时,MySQL将自动删除表并释放所用的空间。也可手动删除。
CREATE TEMPORARY TABLE l(id INT, name VARCHAR(10));
直接将查询结果导入或复制到新创建的临时表
CREATE TEMPORARY TABLE tt SELECT * FROM n;
删除一个存在表
DROP TABLE IF EXISTS m;
更改存在表的名称
ALTER TABLE n RENAME m;
RENAME TABLE n TO m;
查看表的结构(以下五条语句效果相同)
DESC n; # 因为简单,所以建议使用
DESCRIBE n;
SHOW COLUMNS IN n;
SHOW COLUMNS FROM n;
EXPLAIN n;
查看表的创建语句
SHOW CREATE TABLE n;
表的结构
添加字段
ALTER TABLE n ADD age VARCHAR(2) ;
删除字段
ALTER TABLE n DROP age;
更改字段属性和属性
ALTER TABLE n CHANGE age a INT;
只更改字段属性
ALTER TABLE n MODIFY age VARCHAR(7) ;
表的数据
增加数据
INSERT INTO n VALUES (1, 'tom', '23'), (2, 'john', '22');
INSERT INTO n SELECT * FROM n; # 把数据复制一遍重新插入
删除数据
DELETE FROM n WHERE id = 2;
更改数据
UPDATE n SET name = 'tom' WHERE id = 2;
数据查找
SELECT * FROM n WHERE name LIKE '%h%';
数据排序(反序)
SELECT * FROM n ORDER BY name, id DESC ;
键
添加主键
ALTER TABLE n ADD PRIMARY KEY (id);
ALTER TABLE n ADD CONSTRAINT pk_n PRIMARY KEY (id); # 主键只有一个,所以定义键名似乎也没有什么用
删除主键
ALTER TABLE n DROP PRIMARY KEY ;
添加外键
ALTER TABLE m ADD FOREIGN KEY (id) REFERENCES n(id); # 自动生成键名m_ibfk_1
ALTER TABLE m ADD CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES n(id); # 使用定义的键名fk_id
删除外键
ALTER TABLE m DROP FOREIGN KEY `fk_id`;
修改外键
ALTER TABLE m DROP FOREIGN KEY `fk_id`, ADD CONSTRAINT fk_id2 FOREIGN KEY (id) REFERENCES n(id); # 删除之后从新建
添加唯一键
ALTER TABLE n ADD UNIQUE (name);
ALTER TABLE n ADD UNIQUE u_name (name);
ALTER TABLE n ADD UNIQUE INDEX u_name (name);
ALTER TABLE n ADD CONSTRAINT u_name UNIQUE (name);
CREATE UNIQUE INDEX u_name ON n(name);
添加索引
ALTER TABLE n ADD INDEX (age);
ALTER TABLE n ADD INDEX i_age (age);
CREATE INDEX i_age ON n(age);
删除索引或唯一键
DROP INDEX u_name ON n;
DROP INDEX i_age ON n;
视图
创建视图
CREATE VIEW v AS SELECT id, name FROM n;
CREATE VIEW v(id, name) AS SELECT id, name FROM n;
查看视图(与表操作类似)
SELECT * FROM v;
DESC v;
查看创建视图语句
SHOW CREATE VIEW v;
更改视图
CREATE OR REPLACE VIEW v AS SELECT name, age FROM n;
ALTER VIEW v AS SELECT name FROM n ;
删除视图
DROP VIEW IF EXISTS v;