SQL常用数据类型

  • double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,最大值为999.99;
  • char:固定长度字符串类型;char(10) 'abc      ’    //空格补全
  • varchar:可变长度字符串类型;varchar(10) ‘abc’  //没有空格
  • blob:二进制类型;
  • date:日期类型,格式为:yyyy-MM-dd;
  • time:时间类型,格式为:hh:mm:ss ;
  • datetime:日期时间类型 yyyy-MM-dd hh:mm:ss;

DDL(数据定义语言)

  • 查看全部数据库 show databases;
  • 创建数据库CREATE database 库名;
  • 打开数据库use 数据库名;
  • 删除数据库 drop database 名;
  • 创建表 CREATE TABLE 表名( 列名1 列的类型 [约束],列名2 列的类型 [约束],....列名N 列的类型 约束); //最后一行没有逗号
  • 查看表DESC 表名;
  • 添加一列ALTER TABLE 表名 ADD 列名 数据类型;
  • 删除表 drop table 名;
  • 修改表字段类型ALTER TABLE 表名 MODIFY 列名 数据类型;
  • 删除一列ALTER TABLE 表名 DROP 字段名;
  • 查看表创建细节show create table 表名;
  • 修改编码方式alter table 表名 character set gbk;
  • 修改列名alter table 表名 change 原始列 新列名(数据类型);
  • 修改表名rename table aaa to bbb;

大小写不区分


DML(数据操作语言)

插入操作
  • 查询表全部数据 SELECT * FROM 表名;(\G切换形式)
  • 插入数据 INSERT INTO 表名(列名,列名2)VALUE(列值,列值2);
  • 批量插入为INSERT INTO 表名(列名,列名2) VALUES(),();
更新操作
  • 更新表内数据UPDATE 表名 SET 列名1=列值1,列名2=列值2...WHERE列名=值 eg:UPDATE student SET age=age+1 where name ='xx';
删除操作
  • 删除表中数据 DELETE FROM 表名 where 列名=值; //表结构还在,可以找回
  • TRUNCATE TABLE 表名;// 删除全部 无法找回,执行速度比delete快

DQL(数据查询语言)

查询操作
  • SELECT * FROM 表 (where and‘’ or ‘’not‘’between‘’in…)
字符控制
  • 去重 SELECT DISTINCT name FROM 表;
  • 将结果进行运算,并生成新的列SELECT *字段1+字段2 FROM 表名;因为null和任何相加都是null,所以这里可以使用isnull(xx,0)也就是SELECT *字段1+IFNULL(字段2,0) FROM表名;
  • 对运算结果起名SELECT *字段1+字段2 AS 起的名 FROM 表名;
排序
  • ORDER BY 列名 放在末尾,排序方式;
  • ORDER BY 列名 DESC降序 默认/ASC升序
聚合函数
  • COUNT() 统计记录书数 select count(*)from student;//非空
  • SUM()某列和
  • AVG()平均值
  • MIN()最小值
  • MAX()最大值
分组查询
  • GROUP BY 分组 SELECT gender FROM employee GROUP BY gender;
  • GROUP_CONCAT()分组 并查看分组内容 SELECT gender ,GROUP_CONCAT('name') FROM employee GROUP BY gender; //注意逗号
  • GROUP BY + HAVING 分组 筛选

划重点

数据库的date对应java的类型 数据库date类型长度_sql

*默认的int(11)意思是 不满11用0补齐 例:00000000099
而varchar(25)是 最大限制25

*在mysql中,字符串类型和日期类型都要用单引号括起来

*GROUP BY 单独使用意义不大,只列出第一个符合要求的,使用分组时,SELECT后面的字段一般都跟在GROUP BY 后


*where和having区别

  • where分组前过滤,having分组后过滤
  • having后面可以使用统计函数,where不可以

*书写顺序
SELECT—>FROM—>WHERE—>GROUP BY—>HAVING—>ORDER BY—>LIMIT
*执行顺序—>FROM—>WHERE—>GROUP BY—>HAVING—>SELECT—>ORDER BY—>LIMIT