mysql学习笔记二

一、数据类型

TinYINT             小整数值   1字节  (0,255) 

SMALLINT         大整数值   2字节   (0,65535)

MEDIUMINT       大整数值   3字节

INT                     大整数值   4字节

BIGINT               极大整数    8字节

FLOAT               单精度浮点 4字节

DOUBLE           双精度浮点   8字节

DECIMAL          小数值      

时间和日期类型

DATE             日期值                               3字节           YYYY-MM-DD

TIME                   时间值或持续时间             3字节             HH:MM:SS

YEAR        年份值          1字节      YYYY

DETATIME     混合日期和时间值    8字节    YYYY-MM-DD HH:MM:SS

TIMESTAMP  混合日期,时间戳    4字节    YYYYMMDDMMSS

字符串类型

char      0-255      定长字符串

Varchar    0-65535      变长字符串

tinyblob    0-255       二进制字符串

tinytext     0-255      短文本字符串

blob      0-65355      二进制长文本

text      0-65355      文本长数据

mediumtext            中等长文本

longtext              极大文本

数据类型属性

NULL           数据类可变包含NULL值

NOTNULL       数据类不予许包含null值

DEFAULT             默认值

PRIMARY KEY      主键

AUTO_INCREMENT 自动递增,使用于整数类型

UNSIGNED             无符号

CHARACTER  SET name     指定一个字符集

WHERE子句

查询语句中可以使用一个或多个表,之间用,分割开,并使用where语句设定查询条件,也可以用在更新  删除等操作语句中

可以使用 and 或 or 指定一个或多个条件

操作符:=    !=     >    <     >=     <=

where  BINARY   name1 = 'ABC'  #BINARY关键字用来区分大小写,不加的话默认是不区分大小写的

UPDATE语句

update   table  set  name1 = value1+1  where。。

可以同时更新一个或多个字段,用,分割;   where语句指定条件;  

可以批量修改字符串  update table  set  field=replace(field,‘old-string’,‘new-string’)where clause

DELECT语句

delect from table where

如果没有指定where字句默认会删除所有记录

delect   drop  truncate都有删除表的作用,区别在与:delect和truncate仅仅删除表数据,drop连接表数据和表结果一起删除,delect是单杀,truncate是团灭,drop是摔电脑

delect可以回滚,但是效率最低

LIKE字句

like字句中使用%字符来表示任意字符,类似于正则表达式中的*号,否则like和=的效果是一样的

%a     以a结尾的数据

a%     以a开头的数据

%a%    含有a的数据

_a_    三位且中间字母是a

_a     两位且结尾是a

a_     两位且开头是a

UNION操作符

用于连接两个以上的select语句的结果组合到一个结果集合中。多个select语句会删除重复的数据

select  列表名  from  表名  union select 列表名 from 表名  order by 列表名    #查询出的结果不包含重复数据

select  列表名  from  表名 union all select 列表名  from  表名  order  by  列表名  #查询出的结果包含重复数据

mysql 排序   order by

select name1  name2  order by nuber1【asc  desc】,nuber2【asc  desc】  默认asc升序排列

MySQL 拼音排序

如果字符集采用的是 gbk(汉字编码字符集),直接在查询语句后边添加 ORDER BY

如果字符集采用的是 utf8(万国码),需要先对字段进行转码然后排序

SELECT * FROM table ORDER BY CONVERT(name using gbk);


mysql分组 group by

GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

select   coalesce(name,‘总数’) sum(singin) as sumsngin  from  table group by name  with rollup;

select coalesce(a,b,c) 如果a是null,则选择b,如果b为null,则选择c,都为null则返回null(没有意义)

WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)

1、group by 可以实现一个最简单的去重查询,假设想看下有哪些员工,除了用 distinct,还可以用:select name from table order by name

2、分组后的条件使用 HAVING 来限定,WHERE 是对原始数据进行条件限制。几个关键字的使用顺序为 where 、group by 、having、order by ,例如:

SELECT name ,sum(*)  FROM employee_tbl WHERE id<>1 GROUP BY name  HAVING sum(*)>5 ORDER BY sum(*) DESC;


mysql多表查询
  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM table1 a INNER JOIN table2 b ON a.runoob_author = b.runoob_author;


 mysql  null处理

  • IS NULL: 当列的值是 NULL,此运算符返回 true。
  • IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
  • <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。

关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。

MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。

select * , columnName1+ifnull(columnName2,0) from tableName;  如果columnName2是null  就给它赋值0;

SELECT * FROM runoob_test_tbl WHERE runoob_count IS NULL; 不能写 where runoob_count = null








原文地址:https://www.cnblogs.com/1026164853qqcom/p/10951755.html