MySQL常用语句

数据库

# 查看所有的数据库
SHOW DATABASES ;

# 创建一个数据库
CREATE DATABASE k;

# 删除一个数据库
DROP DATABASE 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 id = 2;

键(主键,外键,索引,唯一键)

# 添加主键
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;

关联查询

# 内联接
SELECT * FROM m INNER JOIN n ON m.id = n.id;

# 左外联接
SELECT * FROM m LEFT JOIN n ON m.id = n.id;

# 右外联接
SELECT * FROM m RIGHT JOIN n ON m.id = n.id;

# 交叉联接
SELECT * FROM m CROSS JOIN n;   # 标准写法
SELECT * FROM m, n;

# 类似全连接full join的联接用法
SELECT id,name FROM m
UNION
SELECT id,name FROM n;

评论

暂无

添加新评论