MYSQL基础常见常用语句200条
数据库
# 查看所有的数据库 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;
联接
# 内联接 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;
函数
# 聚合函数 SELECT count(id) AS total FROM n; # 总数 SELECT sum(age) AS all_age FROM n; # 总和 SELECT avg(age) AS all_age FROM n; # 平均值 SELECT max(age) AS all_age FROM n; # 最大值 SELECT min(age) AS all_age FROM n; # 最小值 # 数学函数 SELECT abs(-5); # 绝对值 SELECT bin(15), oct(15), hex(15); # 二进制,八进制,十六进制 SELECT pi(); # 圆周率3.141593 SELECT ceil(5.5); # 大于x的最小整数值6 SELECT floor(5.5); # 小于x的最大整数值5 SELECT greatest(3,1,4,1,5,9,2,6); # 返回集合中最大的值9 SELECT least(3,1,4,1,5,9,2,6); # 返回集合中最小的值1 SELECT mod(5,3); # 余数2 SELECT rand(); # 返回0到1内的随机值,每次不一样 SELECT rand(5); # 提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。 SELECT round(1415.1415); # 四舍五入1415 SELECT round(1415.1415, 3); # 四舍五入三位数1415.142 SELECT round(1415.1415, -1); # 四舍五入整数位数1420 SELECT truncate(1415.1415, 3); # 截短为3位小数1415.141 SELECT truncate(1415.1415, -1); # 截短为-1位小数1410 SELECT sign(-5); # 符号的值负数-1 SELECT sign(5); # 符号的值正数1 SELECT sqrt(9); # 平方根3 SELECT sqrt(9); # 平方根3 # 字符串函数 SELECT concat('a', 'p', 'p', 'le'); # 连接字符串-apple SELECT concat_ws(',', 'a', 'p', 'p', 'le'); # 连接用','分割字符串-a,p,p,le SELECT insert('chinese', 3, 2, 'IN'); # 将字符串'chinese'从3位置开始的2个字符替换为'IN'-chINese SELECT left('chinese', 4); # 返回字符串'chinese'左边的4个字符-chin SELECT right('chinese', 3); # 返回字符串'chinese'右边的3个字符-ese SELECT substring('chinese', 3); # 返回字符串'chinese'第三个字符之后的子字符串-inese SELECT substring('chinese', -3); # 返回字符串'chinese'倒数第三个字符之后的子字符串-ese SELECT substring('chinese', 3, 2); # 返回字符串'chinese'第三个字符之后的两个字符-in SELECT trim(' chinese '); # 切割字符串' chinese '两边的空字符-'chinese' SELECT ltrim(' chinese '); # 切割字符串' chinese '两边的空字符-'chinese ' SELECT rtrim(' chinese '); # 切割字符串' chinese '两边的空字符-' chinese' SELECT repeat('boy', 3); # 重复字符'boy'三次-'boyboyboy' SELECT reverse('chinese'); # 反向排序-'esenihc' SELECT length('chinese'); # 返回字符串的长度-7 SELECT upper('chINese'), lower('chINese'); # 大写小写 CHINESE chinese SELECT ucase('chINese'), lcase('chINese'); # 大写小写 CHINESE chinese SELECT position('i' IN 'chinese'); # 返回'i'在'chinese'的第一个位置-3 SELECT position('e' IN 'chinese'); # 返回'i'在'chinese'的第一个位置-5 SELECT strcmp('abc', 'abd'); # 比较字符串,第一个参数小于第二个返回负数- -1 SELECT strcmp('abc', 'abb'); # 比较字符串,第一个参数大于第二个返回正数- 1 # 时间函数 SELECT current_date, current_time, now(); # 2018-01-13 12:33:43 2018-01-13 12:33:43 SELECT hour(current_time), minute(current_time), second(current_time); # 12 31 34 SELECT year(current_date), month(current_date), week(current_date); # 2018 1 1 SELECT quarter(current_date); # 1 SELECT monthname(current_date), dayname(current_date); # January Saturday SELECT dayofweek(current_date), dayofmonth(current_date), dayofyear(current_date); # 7 13 13 # 控制流函数 SELECT if(3>2, 't', 'f'), if(3<2, 't', 'f'); # t f SELECT ifnull(NULL, 't'), ifnull(2, 't'); # t 2 SELECT isnull(1), isnull(1/0); # 0 1 是null返回1,不是null返回0 SELECT nullif('a', 'a'), nullif('a', 'b'); # null a 参数相同或成立返回null,不同或不成立则返回第一个参数 SELECT CASE 2 WHEN 1 THEN 'first' WHEN 2 THEN 'second' WHEN 3 THEN 'third' ELSE 'other' END ; # second # 系统信息函数 SELECT database(); # 当前数据库名-test SELECT connection_id(); # 当前用户id-306 SELECT user(); # 当前用户-root@localhost SELECT version(); # 当前mysql版本 SELECT found_rows(); # 返回上次查询的检索行数
用户
# 增加用户 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基础常见常用语句200条的更多相关文章
- MySQL基础操作&&常用的SQL技巧&&SQL语句优化
基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t ...
- mysql基础篇 - SELECT 语句详解
基础篇 - SELECT 语句详解 SELECT语句详解 一.实验简介 SQL 中最常用的 SELECT 语句,用来在表中选取数据,本节实验中将通过一系列的动手操作详细学习 SELEC ...
- MySql基础(常用)
MySQL常用语句 1.查看当前所有数据库 show databases; 2.打开指定的库 use 库名; 3.查看当前库中的所有表 show tables; 4.查看其他库的表 show tabl ...
- mysql学习一 常用语句
操作系统为windows 1 启动关闭mysql服务 //windows mysqld --console //开启mysql服务 mysqladmin -uroot shutdown //关闭my ...
- 【MySQL】MySQL基础(SQL语句、约束、数据类型)
数据库的基本概念 什么是数据库? 用于存储和管理数据的仓库 英文单词为:DataBase,简称DB 数据库的好处? 可以持久化存储数据 方便存储和管理数据 使用了统一的方式操作数据库 -- SQL 常 ...
- MySql 基础知识-常用命令及sql语句
一.常用mysql命令行命令 1,启动mysql服务 net start mysql. 停止mysql服务 net stop mysql 2,netstart -na|findstr 330 ...
- MySQL基础2——常用命令
注意:MySQL在centos中安装的是5.7版本的,编辑MySQL时会有个报错,需要执行: set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN ...
- MySQL:事务常用语句
Mysql(版本是8)的事务隔离级别 默认是RR:REPEATABLE-READ:可重复读 查看 当前隔离级别 全局隔离级别 修改 -- 当前修改 -- 设置成可重复读 SET transactio ...
- MySQL基础之DML语句
DML 语句 DML(Data Manipulation Language)语句:数据操纵语句. 用途:用于添加.修改.删除和查询数据库记录,并检查数据完整性. 常用关键字:insert.update ...
随机推荐
- 干电池升压3.3V的电源芯片
PW5100适用于一节干电池升压到3.3V,两节干电池升压3.3V的升压电路,PW5100干电池升压IC. 干电池1.5V和两节干电池3V升压到3.3V的测试数据 两节干电池输出500MA测试: PW ...
- Vue使用Ref跨层级获取组件实例
目录 Vue使用Ref跨层级获取组件实例 示例介绍 文档目录结构 安装vue-ref 根组件自定义方法[使用provide和inject] 分别说明各个页面 结果 Vue使用Ref跨层级获取组件实例 ...
- 关于springboot项目通过jar包启动之后无法读取项目根路径静态资源
在一次项目开发过程中,项目根路径下存放了一张图片,生成二维码的时候调用了该图片作为二维码的logo,在windows环境下二维码可以正常生成,但是部署到生产测试环境之后二维码生成报错,FileNotF ...
- SQL Server 2012 忘记sa用户处理方法
SQL Server 2012 忘记sa用户的密码,可重置sa密码,方法如下: 1.将身份验证改成Windows身份验证,登录进去 2.进入SQL Server控制台,在对象资源管理器中找到Secur ...
- winform 扫码识别二维码
因为公司业务需求,需要在Windows系统下调用摄像头识别二维码需求,就有了这个功能. 我根据网上网友提供的一些资料,自己整合应用到项目中,效果还不错(就是感觉像素不是太好) 现在将调用摄像头+识别二 ...
- C#高级编程第11版 - 第四章 索引
[1]4.2 继承的类型 1.C#不支持类的多继承,但它支持一个接口继承自多个接口. 2.单继承:单继承允许一个类继承自另外一个基类,C#支持. 3.多级继承:多级继承允许创建一个类继承自它的父类,而 ...
- Zerotier在windows下实现内网远程桌面
Zerotier实现内网远程桌面 使用背景 实验室设备条件过于恶劣 向日葵在有些场景下会莫名崩溃,或者画面不动. Teamviewer免费版在之前用的时候出现过疑似商业行为被断连,github上寻解决 ...
- 用tqdm和rich为固定路径和目标的python算法代码实现进度条
适用场景 在存在固定长度的算法中可以可视化算法执行的过程,比如对一个固定长度的数组的遍历,就是一种适合使用进度条来进行可视化的场景.而一些条件循环,比如while循环,不一定适合使用进度条来对算法执行 ...
- Navicat,Dbeaver,heidiSql,DataGrip数据库连接工具比较
Navicat,Dbeaver,heidiSql,DataGrip数据库连接工具比较 1.Navicat 2.DBeaver 3.heidiSql 4.DataGrip 1.Navicat Navic ...
- 读取EXCEL文档解析工具类
package test;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException ...