MySQL基础常见常用语句
2018-01-13 15:02
295 查看
数据库
# 查看所有的数据库 SHOW DATABASES ; # 创建一个数据库 CREATE DATABASE k; # 删除一个数据库 DROP DATABASE IF EXISTS 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) ; # 改变表的存储引擎 ALTER TABLE t ENGINE myisam; ALTER TABLE t ENGINE innodb;
表的数据
# 增加数据 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;
联接
# 左外联接 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 INNER JOIN n ON m.id = n.id; SELECT * FROM m CROSS JOIN n ON m.id = n.id; SELECT * FROM m JOIN n ON m.id = n.id; SELECT * FROM m, n ON m.id = n.id; # 待确定 # 类似全连接full join的联接用法 SELECT id,name FROM m UNION SELECT id,name FROM n;
用户
# 增加用户 CREATE USER 'test'@'localhost' IDENTIFIED BY 'test'; INSERT INTO mysql.user(Host, User, Password) VALUES ('localhost', 'test', Password('test')); # 在用户表中插入用户信息,直接操作User表不推荐 # 删除用户 DROP USER 'test'@'localhost'; DELETE FROM mysql.user WHERE User='test' AND Host='localhost'; FLUSH PRIVILEGES ; # 更改用户密码 SET PASSWORD FOR 'test'@'localhost' = PASSWORD('test'); UPDATE mysql.user SET Password=Password('t') WHERE User='test' AND Host='localhost'; FLUSH PRIVILEGES ; # 用户授权 GRANT ALL PRIVILEGES ON *.* TO test@localhost IDENTIFIED BY 'test'; # 授予用'test'密码登陆成功的test@localhost用户操作所有数据库的所有表的所有的权限 FLUSH PRIVILEGES ; # 刷新系统权限表,使授予权限生效 # 撤销用户授权 REVOKE DELETE ON *.* FROM 'test'@'localhost'; # 取消该用户的删除权限
存储过程
# 创建存储过程 DELIMITER // # 无参数 CREATE PROCEDURE getDates() BEGIN SELECT * FROM test ; END // CREATE PROCEDURE getDates_2(IN id INT) # in参数 BEGIN SELECT * FROM test WHERE a = id; END // CREATE PROCEDURE getDates_3(OUT sum INT) # out参数 BEGIN SET sum = (SELECT count(*) FROM test); END // CREATE PROCEDURE getDates_4(INOUT i INT) # inout参数 BEGIN SET i = i + 1; END // DELIMITER ; # 删除存储过程 DROP PROCEDURE IF EXISTS getDates; # 修改存储过程的特性 ALTER PROCEDURE getDates MODIFIES SQL DATA ; # 修改存储过程语句(删除再重建)略 # 查看存储过程 SHOW PROCEDURE STATUS LIKE 'getDates'; # 状态 SHOW CREATE PROCEDURE getDates_3; # 语句 # 调用存储过程 CALL getDates(); CALL getDates_2(1); CALL getDates_3(@s); SELECT @s; SET @i = 1; CALL getDates_4(@i); SELECT @i; # @i = 2
其他语句
# 查看所有的表信息(包括视图) SHOW TABLE STATUS;
其他
# 数据库备份 mysqldump -u root -p db_name > file.sql mysqldump -u root -p db_name table_name > file.sql # 数据库还原 mysql -u root -p < C:\file.sql
数据库练习网站:http://sqlzoo.net/wiki/SQL_Tutorial
相关文章推荐
- MySQL 常用语句以及基础知识
- mysql 常用函数以及常见查询语句
- mysql常见语句报错信息整理(基础版)
- mysql基础(二) 常用SQL语句
- mysql基础2【常用mysql语句】
- mysql 的常见语句总结和其他基础知识
- mysql 的常见语句总结和其他基础知识
- MySQL常见问题与常用语句汇总
- MySQL学习笔记(一):基础常用SQL语句
- MySql 基础知识-常用命令及sql语句
- mysql 常用 sql 语句(一)
- Mysql常用SQL语句集锦
- Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)
- MySQL------常用语句
- MySQL 常用的sql语句小结(待续)
- 11个最常用的MySQL语句
- MYSQL学习笔记——常用语句
- mysql常用语句总结
- mysql之常用指令语句
- 常用mysql语句总结