MYSQL学习(五)

一、Union合并查询结果集

union的效率比连接查询高,把乘法变成了加法。
注意:union在结果集合并的时候要求2个结果集的列和列的数据类型要一致
案例: 查询工作岗位是MANAGER和SALESMAN的员工
select
  ename, job
from
  emp
where
   job = 'manager'
union
select
  ename, job
from
  emp
where
   job = 'salesman'

二、limit

limit是将查询结果的一部分取出来,通常使用在分页查询中。limit是在order by之后执行。
分页查询公式:limit (pageno - 1)*pagesize, pagesize

  • 完整用法: limit startIndex, length
    起始下标默认从0开始
  • 缺省用法: limt 5;取前五

案例:安装薪资降序,取出排名在前五名的员工
select
  ename, sal
from
  emp
order by
  sal desc
limit 5;

三、 表的创建

建表的语法格式
create table tableName(
  字段名 字段类型,
  字段名 字段类型
);

表名:建议以t_或者tbl_开始
字段名:见名知意

四、表的删除

drop table tableName; //当这张表不存在会报错

drop table if exists tableName; //存在则删除

五、数据类型

  • varchar(最长255)
      可变长度字符串,根据实际的数据长度动态分配空间,节省空间。
  • char(最长255)
      定长字符串,分配固定长度的空间去存储数据,可能导致空间的浪费,但效率比varchar高。
  • int(最长11)
      数字中的整数型
  • bigint
      数字中的长整型
  • float
      单精度浮点型数据
  • double
      双精度浮点型数据
  • date
      短日期
  • datetime
      长日期
  • clob(Character Large Object)
      字符大对象,最多可以存储4G的字符串。超过255个字符的都要采用CLOB字符大对象来存储。
  • blob(Binary Large Object)
      二进制大对象,专门存储图片、声音、视频等媒体流数据,要用IO流操作。

六、插入数据insert

语法格式:
insert into 表名(字段名1,字段名2) values(值1,值2);
插入多条记录:
insert into 表名(字段名1,字段名2) values(值1,值2),(值1,值2),(值1,值2);
注意:

  • insert语句但凡执行成功,就必定会多一条记录,没有给字段给定值的话,默认为null。
  • 省略字段名的话,要写上所有的值

七、date和datetime两个类型的区别

date是短日期:只包括年月日信息
默认格式:'%Y-%m-%d'
datetime是长日期:包括年月日时分秒信息
默认格式:'%Y-%m-%d %h:%i:%s'

now():获取系统当前时间,是datetime类型的

八、修改update

语法格式:
  update 表名 set 字段名1=值1,字段名2=值2 where 条件;
注意:如果没有条件数据会更新所有数据.

九、删除delete

语法格式:
  delete 表名 where 条件;
注意:如果没有条件整张表的都会被删除.

十、快速建表

create table emp2 as select * from emp;
原理:将一个查询结果当作一张表,可以完成表的快速复制

十一、将查询结果插入到一张表中

insert into table_name select * from other_table;

十二、快速删除表中的数据

传统: delete from table_name
原理: 表中的数据被删除了,但存储空间没被释放,效率低,支持回滚,可以恢复数据

truncate删除语句:
删除效率比较高,表被一次截断,物理删除,不支持回滚
truncate table table_name

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容