数据库

  1. # 查看所有的数据库
    
    SHOW DATABASES ;
    
    # 创建一个数据库
    
    CREATE DATABASE k;
    
    # 删除一个数据库
    
    DROP DATABASE k;
    
    # 使用这个数据库
    
    USE k;
    

      

  1. # 查看所有的表
    
    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;
    

      

表的结构

  1.  
    #

     添加字段
    
    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) ;
    

      

表的数据

  1.  
    # 增加数据
    
    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 ;
    

      

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

      

视图

  1.  
    # 创建视图
    
    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;
    

      

联接

  1.  
    # 内联接
    
    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;
    

      

函数

  1.  
    # 聚合函数
    
    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(); # 返回上次查询的检索行数
    

      

用户

  1. # 增加用户
    
    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'; # 取消该用户的删除权限
    

      

存储过程

  1.  
    # 创建存储过程
  2.  
    DELIMITER // # 无参数
  3.  
    CREATE PROCEDURE getDates()
  4.  
    BEGIN
  5.  
    SELECT * FROM test ;
  6.  
    END //
  7.  
    CREATE PROCEDURE getDates_2(IN id INT) # in参数
  8.  
    BEGIN
  9.  
    SELECT * FROM test WHERE a = id;
  10.  
    END //
  11.  
    CREATE PROCEDURE getDates_3(OUT sum INT) # out参数
  12.  
    BEGIN
  13.  
    SET sum = (SELECT count(*) FROM test);
  14.  
    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
    

      

其他语句

  1.  
    # 查看所有的表信息(包括视图)
    
    SHOW TABLE STATUS;
    

      

其他

  1.  
    # 数据库备份
    
    mysqldump -u root -p db_name > file.sql
    
    mysqldump -u root -p db_name table_name > file.sql
    
    # 数据库还原
    

      

  2.  

MYSQL基础常见常用语句200条的更多相关文章

  1. MySQL基础操作&&常用的SQL技巧&&SQL语句优化

    基础操作     一:MySQL基础操作         1:MySQL表复制             复制表结构 + 复制表数据             create table t3 like t ...

  2. mysql基础篇 - SELECT 语句详解

    基础篇 - SELECT 语句详解         SELECT语句详解 一.实验简介 SQL 中最常用的 SELECT 语句,用来在表中选取数据,本节实验中将通过一系列的动手操作详细学习 SELEC ...

  3. MySql基础(常用)

    MySQL常用语句 1.查看当前所有数据库 show databases; 2.打开指定的库 use 库名; 3.查看当前库中的所有表 show tables; 4.查看其他库的表 show tabl ...

  4. mysql学习一 常用语句

    操作系统为windows  1 启动关闭mysql服务 //windows mysqld --console //开启mysql服务 mysqladmin -uroot shutdown //关闭my ...

  5. 【MySQL】MySQL基础(SQL语句、约束、数据类型)

    数据库的基本概念 什么是数据库? 用于存储和管理数据的仓库 英文单词为:DataBase,简称DB 数据库的好处? 可以持久化存储数据 方便存储和管理数据 使用了统一的方式操作数据库 -- SQL 常 ...

  6. MySql 基础知识-常用命令及sql语句

    一.常用mysql命令行命令 1,启动mysql服务 net start mysql.      停止mysql服务 net stop mysql 2,netstart -na|findstr 330 ...

  7. MySQL基础2——常用命令

    注意:MySQL在centos中安装的是5.7版本的,编辑MySQL时会有个报错,需要执行: set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN ...

  8. MySQL:事务常用语句

    Mysql(版本是8)的事务隔离级别 默认是RR:REPEATABLE-READ:可重复读 查看 当前隔离级别 全局隔离级别  修改 -- 当前修改 -- 设置成可重复读 SET transactio ...

  9. MySQL基础之DML语句

    DML 语句 DML(Data Manipulation Language)语句:数据操纵语句. 用途:用于添加.修改.删除和查询数据库记录,并检查数据完整性. 常用关键字:insert.update ...

随机推荐

  1. TCP三次握手Linux源码解析

    TCP是面向连接的协议.面向连接的传输层协议在原点和重点之间建立了一条虚拟路径,同属于一个报文的所有报文段都沿着这条虚拟路径发送,为整个报文使用一条虚拟路径能够更容易地实施确认过程以及对损伤或者丢失报 ...

  2. 用APICloud开发iOS App Clip详细教程

    App Clip是苹果公司在WWDC20开发者大会上发布的新功能,用户可以只访问应用程序的一小部分,而无需下载整个应用,被称为苹果小程序.本文主要介绍如何通过APICloud开发App Clip. 一 ...

  3. proxmox ve系统绑定上联外网出口bond双网卡

    背景描述:一个客户搭建proxmox ve系统,要求上联出口双网卡绑定bond, proxmox ve下载地址:超链接 记录日期:2020/5/9 前期准备:服务器接好2个网卡 交换机:H3C 1.p ...

  4. 手写Netty之多路复用Select小案例

    注意:本文只是将上文多路复用器Select.Poll.Epoll区别梳理中提出的概念与Netty中的步骤联系起来,方便后面回顾,代码中注释很多,对于大家来说如果不是怀有同样的目的,不一定有用. 单线程 ...

  5. Netty之Unpooled_Bytebuf

    前言 计算机存储基本单位是字节(byte),传输基本单位是bit(位),JAVA NIO提供了ByteBuffer等七种容器来提升传输时的效率,但是在使用时比较复杂,经常要进行读写切换,主要缺点如下: ...

  6. 编译Nacos,解决No Server available 以及 failed to req API__nacos_v1_ns_instance after all servers

    问题描述:如图,显示没有服务可用 仔细看控制台,看到上面Error部分,相关参数没有读取到配置信息,那么配置信息这块似乎是有问题,赶紧看看IDE对配置信息的扫描情况: 可以看到有信息了,但是报错:No ...

  7. 成功解决Git:fatal: refusing to merge unrelated histories

    Get 报错 如果合并了两个不同的开始提交的仓库,在新的 git 会发现这两个仓库可能不是同一个,为了防止开发者上传错误,于是就给下面的提示 fatal: refusing to merge unre ...

  8. Elasticsearch如何保证数据不丢失?

    目录 如何保证数据写入过程中不丢 直接落盘的 translog 为什么不怕降低写入吞吐量? 如何保证已写数据在集群中不丢 in-memory buffer 总结 LSM Tree的详细介绍 参考资料 ...

  9. 你可能不知道的 transition 技巧与细节

    CSS 中,transition 属性用于指定为一个或多个 CSS 属性添加过渡效果. 最为常见的用法,也就是给元素添加一个 transition,让其某个属性从状态 A 变化到状态 B 时,不再是非 ...

  10. Django(中间件)

    中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响到 ...