MySQL基础(1):基础应用

记录一些可能会用到但又容易忘记的语法。

一、常用语法

1、“+”:不用作字符串拼接,仅用做运算符,其他值+null还是null

2、CONCAT(value1, value2);

3、IFNULL(value, 0);

4、length(str),获取参数字节数,utf8中字母1个字节,汉字3个字节

5、substring(str, index, len) 截取str,从index开始,截取len长度,索引从1开始

6、instr(str, substr),返回子串第一次出现的下标,找不到返回0,索引从1开始

7、replace(str, from_str, to_str),把from_str全替换为to_str

8、replace into具备替换拥有唯一索引或者主键索引重复数据的能力,也就是如果使用replace into插入的数据的唯一索引或者主键索引与之前的数据有重复的情况,将会删除原先的数据,然后再进行添加。

  REPLACE INTO users (id,name,age) VALUES(123, ‘chao’, 50);

9、数值型函数

  ROUND(1.567),四舍五入

  ROUND(1.567,2),保留2位小数

  CEIL(X)、FLOOR(X),向上、向下取整

  MOD(10,3),取余

  RAND(),获取随机数,返回0-1间的小数

10、日期型转换

  STR_TO_DATE(time, ‘%Y-%m-%d‘),字符串转日期

  DATE_FORMAT(time, ‘%Y-%m-%d‘),日期转字符串

  DATEDIFF(NOW(), ‘2018-9-1‘),两个日期相差天数

    

11、加密

  PASSWORD(str),返回字符的密码形式

  MD5(str),返回字符串MD5加密形式

12、运算符:

(1)>  <  =  !=  <>  >=  <=

(2)and  or  not

(3)"like"、"between and"、“in” 、“is null”

  like结合通配符,默认不区分大小写;

  % 任意多个字符,_ 占单个字符;

  \ 转义符,也可以通过escape声明转义字符;

  between  and会包含零界值;

  in不能结合通配符使用,效率和or差不多;

  is null仅仅可判断null值,<=>既可判断null又可以判断普通数值;

13、流程控制函数

(1)IF(10<5, ‘大‘, ‘小’)

(2)case,两种方式

14、分组函数

  sum、avg、max、min、count,这些都会忽略null值,可以和distinct搭配

二、连接

92标准仅支持内连接,99标准全支持

1、内连接:取两表交集

  select * from  表1,表2  where 连接条件

  或【inner】join on 连接条件

  

  等值连接、非等值连接(筛选条件不是用=,而是用范围)、自连接(如取上级数据)

2、外连接:

(1)左外:left join,左为主表,展示主表所有数据,子表未匹配部分用null

  

(2)右外:right join,右为主表

(3)全外:outer join

全外连接=内连接结果 + 表1中有但表2没有的 + 表2中有但表1没有的

  

3、交叉连接:cross join,两表进行笛卡尔乘积

  

三、子查询

子查询先执行,主查询的条件用到了子查询的结果

1、可搭配分组函数放在select后(仅支持一行一列)

  

2、可放在from或exists后(多行多列),当虚拟表使用,需要起别名

  

3、可放where或having后,

  一行一列的搭配分组函数 > < >= <= = <>

  一列多行的搭配in

  一行多列的有局限性,要求各字段使用的比较操作符是一样的,如都是用 = 、>、 <

  

四、分页、联合查询

1、SQL执行顺序

    

  (1)order by,如按多个字段排序,先按第一个字段排序,排序相同的部分,再按第二个字段排序

  (2)group by,select后能查询的表字段,必须要出现在group by表达式的后面,按多个字段分组,则多个字段一致的表示一组

  (3)having,放group by后,对分组后的查询结果集再筛选一次

  (4)limit,放查询语句最后,分页公式:要显示的页数page,每页条目数size

    limit (page-1)*size, size

  (5)MYISAM存储引擎下,count(*)效率高。INNODB存储引擎下,count(*)和count(1)效率差不多,一般都是用count(*)

2、联合查询

  union:查询结果来自多个表,且多个表没有直接的连接关系,但查询的信息一致,将多条查询语句的结果合并成一个结果

  语法:

    查询语句1 union

    查询语句2 union ....

  (1)要求多条查询语句的查询列数是一致的,且查询列的类型和顺序一致

  (2)union关键字默认去重,union all会包含重复项

  

原文地址:https://www.cnblogs.com/seekingheart/p/9096609.html

时间: 2024-11-08 22:45:30

MySQL基础(1):基础应用的相关文章

Mysql安装和基础操作

1.环境检查: 先检查是否已经安装了:rpm -qa |grep mysql ---两个都检查下,查看mysql是否安装 rpm -qa |grep MySQL若安装有可删除:rpm -e ****** 2.安装:1)安装前准备:mkdir usr/mysql cd进入该目录,上传安装包到/usr/mysql目录下2)安装:rpm -ivh MySQL-server-5.0.16-0.i386.rpm rpm -ivh MySQL-elient-5.0.16-0.i386.rpm3)验证安装是否

jQuery基础---Ajax基础教程

jQuery基础---Ajax基础 内容提纲: 1.Ajax 概述 2.load()方法 3.$.get()和$.post() 4.$.getScript()和$.getJSON() 5.$.ajax()方法 6.表单序列化 发文不易,转载请注明出处~ 一.Ajax 概述 Ajax 这个概念是由 Jesse James Garrett 在 2005 年发明的. 它本身不是单一技术, 是一串技术的集合,主要有: 1.JavaScript,通过用户或其他与浏览器相关事件捕获交互行为: 2.XMLHt

js基础--javascript基础概念之语法

掌握一门语言 必须先掌握它的语法! javascript 的语法和C.Java.Perl 的语法有些相似.但是比它们更加宽松. javascript 中的一切都是严格区分大小写的.例如变量: demo 和 Demo 两个变量是完全不同的. javascript 标示符,所谓标示符 是指 变量.函数.属性 的名字或函数的参数.标示符的格式是按照以下规则组合的一个或多个字符. 1.第一个字符必须是字母,下划线,或 $ 符号. 2.其他字符可以是字母.下划线.$ . 或数字. 注意 不能把关键字 保留

js基础--javascript基础概念之数组(二)

js基础--javascript基础概念之数组 数组栈方法 数组可以像栈一样.栈是一种先进后出的数据结构,最先添加的数据最后一个出来.栈方法添加数据也称为 推入  移除数据称为 弹出. js为数值栈方法提供了 push()   和  pop() ;  两个方法. push() push() 方法接受参数就是你要添加进入到数组的值.push()  方法会将他们逐一添加到数组的末尾  数组的length属性会跟着更新数据. *push(多个数组元素值) 返回的修改后的数组长度 var array =

js基础--javascript基础概念之数组

js基础--javascript基础概念之数组 在ECMAScript 中 ,数组是很常用的数据类型,js中的数组和其他很多语言的数组有明显的区别.js的数组可以保持任何类型的数值,一个数组中可以保存着多个不同类型的数值.js数组大小(长度)是可以调整的.可以随着数据的添加自动增长数组长度. 创建数组: 一.数组字面量 数组字面量由一对包含数组项的方括号[]表示. var array = [ 'kin', 'cheong', 'change', 'hello', 'haha', 'hi' ];

js基础--javascript基础概念之语句(二)

js基础--javascript基础概念之语句(二)label,break,continue.. break .  continue 语句. break  continue 语句用于在循环中精确控制代码的执行,其中break语句会立即退出循环,执行循环后面的语句. continue 则退出循环后返回到再次进入循环中. 如: var num = 0; for(var i = 0; i<=100; i++){ if(i >= 10){ break; } num = i; } alert(num);

[.net 面向对象编程基础] (7) 基础中的基础——修饰符

[.net 面向对象编程基础] (7) 基础中的基础——修饰符 在进入C#面向对象核心之前,我们需要先对修饰符有所了解,其实我们在前面说到变量和常量的时候,已经使用了修饰符,并且说明了变量和常量的修改符. 首先 修饰符是什么? 修饰符用于限定类型以及类型成员的申明 从定义可以看出按功能分为两类:访问修饰符和声明修饰符 1.访问修饰符 (5个) 访问修饰符 说明 public 公有访问.不受任何限制. private 私有访问.只限于本类成员访问,子类,实例都不能访问. protected 保护访

[.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式

[.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如三元表达式,可以让你少写N多个if和case语句. 表达式 由 操作数(operand) 和 运算符(operator) 构成 1.运算符分类和优先级   2.运算符按操作数目分类   一元运算符 -x  x++  x-- 二元运算符 x+y  x+1 三元运算符 c ? x : y 3.表达式分类

js基础--javascript基础概念之变量与作用域

js基础--javascript基础概念之变量.作用域 javascript按照ECMA-262 的定义,变量与其他语言变量有所不同.js变量时松散的,不需要事先定义变量类型的.这使得他只是一个保存特定值的一个名称.变量与其数据类型可以在脚本的生命周期内改变. 还有明白几点: JavaScript的变量作用域是基于其特有的作用域链的,JavaScript没有块级作用域. 基本类型和引用类型的值 ECMAScript 的变量有两种不同的数据类型:分别是 基本数据类型值 和 引用类型值 : 基本数据

[.net 面向对象编程基础] (3) 基础中的基础——数据类型

[.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型存储,就跟我们买来衣服一样,裤子,上衣,冬天的,夏天的,总要分个类再放进衣柜中一样.越是高级的编程语言,数据类型分的越详细. 问题来了,这么多数据类型,我们是不是要一一记住,这真不是个省心的事情,不用怕,不用怕,不用怕,重要的事情说三遍. 重点:C#就15种数据类型. 准确来说,是15种预定义类型,