##############Author: Fan #################

(1)数据库

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

(2)表

  1. # 查看所有的表
  2. SHOW TABLES ;
  3. # 创建一个表
  4. CREATE TABLE n(id INT, name VARCHAR(10));
  5. CREATE TABLE m(id INT, name VARCHAR(10), PRIMARY KEY (id), FOREIGN KEY (id) REFERENCES n(id), UNIQUE (name));
  6. CREATE TABLE m(id INT, name VARCHAR(10));
  7. # 直接将查询结果导入或复制到新创建的表
  8. CREATE TABLE n SELECT * FROM m;
  9. # 新创建的表与一个存在的表的数据结构类似
  10. CREATE TABLE m LIKE n;
  11. # 创建一个临时表
  12. # 临时表将在你连接MySQL期间存在。当断开连接时,MySQL将自动删除表并释放所用的空间。也可手动删除。
  13. CREATE TEMPORARY TABLE l(id INT, name VARCHAR(10));
  14. # 直接将查询结果导入或复制到新创建的临时表
  15. CREATE TEMPORARY TABLE tt SELECT * FROM n;
  16. # 删除一个存在表
  17. DROP TABLE IF EXISTS m;
  18. # 更改存在表的名称
  19. ALTER TABLE n RENAME m;
  20. RENAME TABLE n TO m;
  21. # 查看表的结构(以下五条语句效果相同)
  22. DESC n; # 因为简单,所以建议使用
  23. DESCRIBE n;
  24. SHOW COLUMNS IN n;
  25. SHOW COLUMNS FROM n;
  26. EXPLAIN n;
  27. # 查看表的创建语句
  28. SHOW CREATE TABLE n;

(3)表的结构

  1. # 添加字段
  2.  ALTER TABLE n ADD age VARCHAR(2) ;
  3.  # 删除字段
  4.  ALTER TABLE n DROP age;
  5.  # 更改字段属性和属性
  6.  ALTER TABLE n CHANGE age a INT;
  7.  # 只更改字段属性
  8.  ALTER TABLE n MODIFY age VARCHAR(7) ;

(4)表的数据

  1. # 增加数据
  2.  INSERT INTO n VALUES (1, 'tom', '23'), (2, 'john', '22');
  3.  INSERT INTO n SELECT * FROM n; # 把数据复制一遍重新插入
  4.  # 删除数据
  5.  DELETE FROM n WHERE id = 2;
  6.  # 更改数据
  7.  UPDATE n SET name = 'tom' WHERE id = 2;
  8.  # 数据查找
  9.  SELECT * FROM n WHERE name LIKE '%h%';
  10.  # 数据排序(反序)
  11.  SELECT * FROM n ORDER BY name, id DESC ;

(5)键

  1. # 添加主键
  2.  ALTER TABLE n ADD PRIMARY KEY (id);
  3.  ALTER TABLE n ADD CONSTRAINT pk_n PRIMARY KEY (id); # 主键只有一个,所以定义键名似乎也没有什么用
  4.  # 删除主键
  5.  ALTER TABLE n DROP PRIMARY KEY ;
  6.  # 添加外键
  7.  ALTER TABLE m ADD FOREIGN KEY (id) REFERENCES n(id); # 自动生成键名m_ibfk_1
  8.  ALTER TABLE m ADD CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES n(id); # 使用定义的键名fk_id
  9.  # 删除外键
  10.  ALTER TABLE m DROP FOREIGN KEY `fk_id`;
  11.  # 修改外键
  12.  ALTER TABLE m DROP FOREIGN KEY `fk_id`, ADD CONSTRAINT fk_id2 FOREIGN KEY (id) REFERENCES n(id); # 删除之后从新建
  13.  # 添加唯一键
  14.  ALTER TABLE n ADD UNIQUE (name);
  15.  ALTER TABLE n ADD UNIQUE u_name (name);
  16.  ALTER TABLE n ADD UNIQUE INDEX u_name (name);
  17.  ALTER TABLE n ADD CONSTRAINT u_name UNIQUE (name);
  18.  CREATE UNIQUE INDEX u_name ON n(name);
  19.  # 添加索引
  20.  ALTER TABLE n ADD INDEX (age);
  21.  ALTER TABLE n ADD INDEX i_age (age);
  22.  CREATE INDEX i_age ON n(age);
  23.  # 删除索引或唯一键
  24.  DROP INDEX u_name ON n;
  25.  DROP INDEX i_age ON n;

(6)视图

  1. # 创建视图
  2.  CREATE VIEW v AS SELECT id, name FROM n;
  3.  CREATE VIEW v(id, name) AS SELECT id, name FROM n;
  4.  # 查看视图(与表操作类似)
  5.  SELECT * FROM v;
  6.  DESC v;
  7.  # 查看创建视图语句 
  8. SHOW CREATE VIEW v;
  9.  # 更改视图
  10.  CREATE OR REPLACE VIEW v AS SELECT name, age FROM n;
  11.  ALTER VIEW v AS SELECT name FROM n ;
  12.  # 删除视图
  13.  DROP VIEW IF EXISTS v;

(7)联接

  1. # 内联接
  2.  SELECT * FROM m INNER JOIN n ON m.id = n.id;
  3.  # 左外联接
  4.  SELECT * FROM m LEFT JOIN n ON m.id = n.id;
  5.  # 右外联接
  6.  SELECT * FROM m RIGHT JOIN n ON m.id = n.id;
  7.  # 交叉联接
  8.  SELECT * FROM m CROSS JOIN n; # 标准写法 
  9. SELECT * FROM m, n;
  10.  # 类似全连接full join的联接用法
  11.  SELECT id,name FROM m
  12.  UNION
  13.  SELECT id,name FROM n;

(8)函数

  1. # 聚合函数
  2.  SELECT count(id) AS total FROM n; # 总数
  3.  SELECT sum(age) AS all_age FROM n; # 总和
  4.  SELECT avg(age) AS all_age FROM n; # 平均值
  5.  SELECT max(age) AS all_age FROM n; # 最大值 
  6. SELECT min(age) AS all_age FROM n; # 最小值
  7.  # 数学函数
  8.  SELECT abs(-5); # 绝对值
  9.  SELECT bin(15), oct(15), hex(15); # 二进制,八进制,十六进制
  10.  SELECT pi(); # 圆周率3.141593
  11.  SELECT ceil(5.5); # 大于x的最小整数值6
  12.  SELECT floor(5.5); # 小于x的最大整数值5
  13.  SELECT greatest(3,1,4,1,5,9,2,6); # 返回集合中最大的值9
  14.  SELECT least(3,1,4,1,5,9,2,6); # 返回集合中最小的值1
  15.  SELECT mod(5,3); # 余数2
  16.  SELECT rand(); # 返回0到1内的随机值,每次不一样
  17.  SELECT rand(5); # 提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。
  18.  SELECT round(1415.1415); # 四舍五入1415
  19.  SELECT round(1415.1415, 3); # 四舍五入三位数1415.142
  20.  SELECT round(1415.1415, -1); # 四舍五入整数位数1420
  21.  SELECT truncate(1415.1415, 3); # 截短为3位小数1415.141
  22.  SELECT truncate(1415.1415, -1); # 截短为-1位小数1410
  23.  SELECT sign(-5); # 符号的值负数-1
  24.  SELECT sign(5); # 符号的值正数1
  25.  SELECT sqrt(9); # 平方根3
  26.  SELECT sqrt(9); # 平方根3
  27.  # 字符串函数
  28.  SELECT concat('a', 'p', 'p', 'le'); # 连接字符串-apple
  29.  SELECT concat_ws(',', 'a', 'p', 'p', 'le'); # 连接用','分割字符串-a,p,p,le
  30.  SELECT insert('chinese', 3, 2, 'IN'); # 将字符串'chinese'从3位置开始的2个字符替换为'IN'-chINese
  31.  SELECT left('chinese', 4); # 返回字符串'chinese'左边的4个字符-chin
  32.  SELECT right('chinese', 3); # 返回字符串'chinese'右边的3个字符-ese
  33.  SELECT substring('chinese', 3); # 返回字符串'chinese'第三个字符之后的子字符串-inese
  34.  SELECT substring('chinese', -3); # 返回字符串'chinese'倒数第三个字符之后的子字符串-ese
  35.  SELECT substring('chinese', 3, 2); # 返回字符串'chinese'第三个字符之后的两个字符-in
  36.  SELECT trim(' chinese '); # 切割字符串' chinese '两边的空字符-'chinese'
  37.  SELECT ltrim(' chinese '); # 切割字符串' chinese '两边的空字符-'chinese '
  38.  SELECT rtrim(' chinese '); # 切割字符串' chinese '两边的空字符-' chinese'
  39.  SELECT repeat('boy', 3); # 重复字符'boy'三次-'boyboyboy'
  40.  SELECT reverse('chinese'); # 反向排序-'esenihc'
  41.  SELECT length('chinese'); # 返回字符串的长度-7
  42.  SELECT upper('chINese'), lower('chINese'); # 大写小写 CHINESE chinese
  43.  SELECT ucase('chINese'), lcase('chINese'); # 大写小写 CHINESE chinese
  44.  SELECT position('i' IN 'chinese'); # 返回'i'在'chinese'的第一个位置-3
  45.  SELECT position('e' IN 'chinese'); # 返回'i'在'chinese'的第一个位置-5
  46.  SELECT strcmp('abc', 'abd'); # 比较字符串,第一个参数小于第二个返回负数- -1
  47.  SELECT strcmp('abc', 'abb'); # 比较字符串,第一个参数大于第二个返回正数- 1
  48.  # 时间函数
  49.  SELECT current_date, current_time, now(); # 2018-01-13 12:33:43 2018-01-13 12:33:43
  50.  SELECT hour(current_time), minute(current_time), second(current_time); # 12 31 34
  51.  SELECT year(current_date), month(current_date), week(current_date); # 2018 1 1
  52.  SELECT quarter(current_date); # 1
  53.  SELECT monthname(current_date), dayname(current_date); # January Saturday
  54.  SELECT dayofweek(current_date), dayofmonth(current_date), dayofyear(current_date); # 7 13 13
  55.  # 控制流函数
  56.  SELECT if(3>2, 't', 'f'), if(3<2, 't', 'f'); # t f
  57.  SELECT ifnull(NULL, 't'), ifnull(2, 't'); # t 2
  58.  SELECT isnull(1), isnull(1/0); # 0 1 是null返回1,不是null返回0
  59.  SELECT nullif('a', 'a'), nullif('a', 'b'); # null a 参数相同或成立返回null,不同或不成立则返回第一个参数
  60.  SELECT CASE 2
  61.  WHEN 1 THEN 'first'
  62.  WHEN 2 THEN 'second'
  63.  WHEN 3 THEN 'third'
  64.  ELSE 'other'
  65.  END ; # second
  66.  # 系统信息函数
  67.  SELECT database(); # 当前数据库名-test
  68.  SELECT connection_id(); # 当前用户id-306
  69.  SELECT user(); # 当前用户-root@localhost
  70.  SELECT version(); # 当前mysql版本
  71.  SELECT found_rows(); # 返回上次查询的检索行数

(9)用户

  1. # 增加用户
  2.  CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';
  3.  INSERT INTO mysql.user(Host, User, Password) VALUES ('localhost', 'test', Password('test')); # 在用户表中插入用户信息,直接操作User表不推荐
  4.  # 删除用户
  5.  DROP USER 'test'@'localhost';
  6.  DELETE FROM mysql.user WHERE User='test' AND Host='localhost';
  7.  FLUSH PRIVILEGES ;
  8.  # 更改用户密码
  9.  SET PASSWORD FOR 'test'@'localhost' = PASSWORD('test');
  10.  UPDATE mysql.user SET Password=Password('t') WHERE User='test' AND Host='localhost';
  11.  FLUSH PRIVILEGES ;
  12.  # 用户授权
  13.  GRANT ALL PRIVILEGES ON *.* TO test@localhost IDENTIFIED BY 'test';
  14.  # 授予用'test'密码登陆成功的test@localhost用户操作所有数据库的所有表的所有的权限
  15.  FLUSH PRIVILEGES ; # 刷新系统权限表,使授予权限生效
  16.  # 撤销用户授权
  17.  REVOKE DELETE ON *.* FROM 'test'@'localhost'; # 取消该用户的删除权限

(10)存储过程

  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 //
  15.  CREATE PROCEDURE getDates_4(INOUT i INT) # inout参数
  16.  BEGIN
  17.  SET i = i + 1;
  18.  END //
  19.  DELIMITER ;
  20.  # 删除存储过程
  21.  DROP PROCEDURE IF EXISTS getDates;
  22.  # 修改存储过程的特性
  23.  ALTER PROCEDURE getDates MODIFIES SQL DATA ;
  24.  # 修改存储过程语句(删除再重建)略
  25.  # 查看存储过程
  26.  SHOW PROCEDURE STATUS LIKE 'getDates'; # 状态
  27.  SHOW CREATE PROCEDURE getDates_3; # 语句
  28.  # 调用存储过程
  29.  CALL getDates();
  30.  CALL getDates_2(1);
  31.  CALL getDates_3(@s);
  32.  SELECT @s;
  33.  SET @i = 1;
  34.  CALL getDates_4(@i);
  35.  SELECT @i; # @i = 2

(11)其他语句

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

(12)其他

  1. # 数据库备份
  2.  mysqldump -u root -p db_name > file.sql
  3.  mysqldump -u root -p db_name table_name > file.sql
  4.  # 数据库还原   我的是E盘
  5.  mysql -u root -p < E:\file.sql

常见MySQL数据库语句的更多相关文章

  1. MySQL数据库语句

    一 . 常用mysql命令行命令        1 .启动MYSQL服务   net start mysql 停止MYSQL服务   net stop mysql 2 . netstat –na | ...

  2. Mysql数据库--语句整理/提升/进阶/高级使用技巧

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...

  3. loadrunner通过odbc测mysql数据库语句

    #include "lrd.h" Action() { double trans_time;  //定义一个double型变量用来保存事务执行时间 static LRD_INIT_ ...

  4. c语言把mysql数据库语句和变量封装为一个语句

    我有一个语句 sql = "insert into talbe_name  values(name,age)"  其中name和age两个变量根据外面的输入来确定,有两种方法 1: ...

  5. mysql数据库的一些用法

    mysql数据库语句 1.replace into      REPLACE INTO  (列名1,列名2,列名3) VALUES ('值1','值2','值3');      # 如果数据库中不存在 ...

  6. 用python导入20个G的json数据到Mysql数据库

    整体思路参考资料:https://blog.csdn.net/layman2016/article/details/79252499 作业:有一个16个G的跟疫情相关的json新闻大数据(articl ...

  7. MySQL数据库学习笔记(三)----基本的SQL语句

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  8. Vc数据库编程基础MySql数据库的常见库命令.跟表操作命令

    Vc数据库编程基础MySql数据库的常见操作 一丶数据库常见的库操作 1.1查看全部数据库 命令:  show databases 1.2 创建数据库 命令: Create database 数据库名 ...

  9. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

随机推荐

  1. Docker学习总结(二)--Docker安装与启动

    注:笔者使用的环境为 CentOS 7.6,如果版本不一致可能会出现一些错误. 安装 Docker 1)将 yum 包更新到最新版本 sudo yum update 2) 安装需要的软件包 sudo ...

  2. MSIL实用指南-生成异常处理

    本篇讲解怎么生成异常.C# 异常处理时建立在四个关键词之上的:try.catch.finally 和 throw. 一.异常的抛出抛出异常在C#语言中要使用throw关键字,使用方法是throw &l ...

  3. 用户数从 0 到亿,我的 K8s 踩坑血泪史

    作者 | 平名 阿里服务端开发技术专家 导读:容器服务 Kubernetes 是目前炙手可热的云原生基础设施,作者过去一年上线了一个用户数极速增长的应用:该应用一个月内日活用户从零至四千万,用户数从零 ...

  4. 基于Docker搭建Jumpserver堡垒机操作实践

    一.背景 笔者最近想起此前公司使用过的堡垒机系统,觉得用的很方便,而现在的公司并没有搭建此类系统,想着以后说不定可以用上:而且最近也有点时间,因此来了搭建堡垒机系统的兴趣,在搭建过程中参考了比较多的文 ...

  5. 09 Scrapy框架在爬虫中的使用

    一.简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.它集成高性能异步下载,队列,分布式,解析,持久化等. Scrapy 是基于twisted框架开发而来,twisted是一个 ...

  6. gym/102059/problem/I. Game on Plane SG函数做博弈

    传送门: 题意: 给定一个正n边形的点.双方轮流连点成线,要求所画的线不能与之前的线相交.当某个人连成一个回路,这个人就输了.问先手必胜还是后手必胜. 思路: SG函数,因为一条线相当于把图劈成了两半 ...

  7. bzoj 1146 网络管理Network (CDQ 整体二分 + 树刨)

    题目传送门 题意:求树上路径可修改的第k大值是多少. 题解:CDQ整体二分+树刨. 每一个位置上的数都会有一段持续区间 根据CDQ拆的思维,可以将这个数拆成出现的时间点和消失的时间点. 然后通过整体二 ...

  8. lightoj 1028 - Trailing Zeroes (I)(素数筛)

    We know what a base of a number is and what the properties are. For example, we use decimal number s ...

  9. Android-友盟第三方登录与分享

    ### 前言 最近项目中又一次需要集成友盟的三方登录与分享,之前没有记录过,所以这次来写一下... ### 准备工作 1.注册友盟账号创建应用,获取key:申请地址http://www.umeng.c ...

  10. js中的兼容问题汇总

    在使用js的过程中,往往会发现关于IE浏览器的兼容问题,当然微软现在自己也打算抛弃IE,推出了edge浏览器,对于前端来说是个好消息. 但IE的用户占比仍然不容小觑,因此这里整理下常见的几个兼容问题附 ...