MySQL——DQL union合并、limit限制与DDL建表和删表

一、Union 合并

union:是实现两个查询结果的合并。

例如:当我们查询员工名字为manager 和 salesman的员工名字和 工作?

select e.ename,e.job from emp e where e.job='manager' or e.job = 'salesman';

select e.ename,e.job from emp e where e.job in('manager','salesman');

以上两条cmd 命令查询结果是一样的:

但什么的来两条查询的效率并不是很高,这个时候我们就可以用union 来提高效率:

union的效率更高,在我们doc命令当中,我们每一次表的连接,那么根据笛卡尔积就知道次数会是乘积,当再连接一个表的时候,就又一个乘积,所以我们用union 就然乘法变成加法,减少了次数,提高了效率!

注意:mysql使用union 的时候,要注意拼接的列要相等,否则会报错!当select后面字段的内容不一样的时候,在mysql语句当中可以运行,但是在Oracle当中会报错!

二、Limit

limit: 将查询结果当中的数据取出一部分,而不全部取出。

使用方法:limit 从第几条开始,一共取多少条;(默认从0开始,如果不写从第几条开始也是默认从0开始)

注意:mysql当中limit 是放在order by 后面的!

例如,取出第4条数据开始,一共取5条。

分页公式:limit (pageno-1)*pagesize ,pagesize

三、建表(DDL)

创建一个表格:create table 表名(字段名1:数据类型,字段名2:数据类型,字段名3,数据类型.......);其中表名建议以t_ 或tbl_开头是效率最高的。

快速创建表:相当于将emp表的查询结果当中一张临时表,让emp2拷贝下来。

例如:create table emp2 as select * from emp;

mysql 的数据类型:

varchar(最长255):可变长度字符串,会根据实际的长度而动态分配长度,节省空间。

char(最长255):不可变长度字符串,起始规定多长实际就多长。使用不恰当的时候,会造成空间的浪费。

varchar 和 char 对比:varchar 是节省了空间,同时效率会相对来说低,而char 不节省空间 但运行效率会高一些。

int(最长为11): 整数类型,等同于Java当中的int

bigint: 长整型,等同于Java当中的long

double:双精度浮点型

float:单精度浮点型

date:短日期(包括年月日)

datetime:长日期(包括年月日时分秒)

clob:字符大对象,最多可以储存4G的数据。例如储存一篇文章等等。当数据长度大于255的时候,就要采用clob类型了!

blob:二进制大对象,储存一些视频,音频,图片等等,但需要IO流。

注意:在mysql 数据库当中的varchar (5) 当中的5 代表是长度5,而不是字节,例如:5个汉子和5个英文字符都是长度为5.

删除表:

drop table 表名,但是当表不存在的时候,这样写会报错。

drop table if exists 表名,当表存在的时候删除,不会报错。

insert(增)

命令:insert into 表名(字段名1,字段名2,字段名3.......) values (值1,值2,值3......)

当字段名省略的时候,意为字段名区别存在,就不能只单独写一个值了。

例如:insert into 表名 values (值1,值2,值3.......);

例如:insert into t_person(no,name,sex,age,email) values (100001,'张三','男',42,'329125@qq.com')

当我们写成:insert into t_person(no) values(100003);

同时也可以插入多条数据:

例如:insert into t_user values (1,'zangsan',12,now()),(2,'wangwu',23,now()),(3,'lishi',44,now());

当查看字段的默认值的时候,会发现default 都是 默认null.

如果我们想自己指定默认值(default )的时候:

create table t_person1(

no int(10),

name varchar(32),

sex char(10) default '男',

age int(3)

);

str_to_date:就是将字符串类型转换为日期类型。

date_format:将日期类型转换为字符串类型。

mysql 日期格式:

%Y 年(必须大写) %m 月

%d 日 %h 时

%i 分 %s 秒

str_to_date('日期','格式');

例如:

create table t_user(no int(10),name varchar(10),age int(3),brith date);//创建t_user 表格

insert into t_user(no,name,age,brith) values (100001,'张三',45,str_to_date('1994-4-9','%Y-%m-%d');

当我们输入日期的格式为%Y-%m-%d这样的标准格式那么就不用谢str_to_date这个函数将字符串转换为日期了,默认就自动转换了!

insert into t_user(no,name,age,brith) values (100002,'李四',45,'1993-4-9');

date_format: 将日期转换为特定格式的字符串

例如:select no,name,age,date_format(brith,'%d/%m/%Y') as brith from t_user;

datetime在mysql 当中的默认日期格式:%y-%m-%d %h:%i:%s (有空格在%d 和 %h之间)

例如:insert into t_user(id,name,age,brith) values (100003,'wangwu',46,'1999-11-6 13:24:5');

四、now()函数

now函数:获取当前时间

例如:insert into t_user(id,name,age,brith) values(100004,'zhaoliu',55,now());

update(DML修改表格)

格式:update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3 where 条件

例如:update t_user set name='lishi',age=20 where id=100004;

delete(删除)

格式:delete from 表名 where 条件;

注意:当没有where条件判断的时候,删除的是整张表格内部的数据,但这张表格并没有删除!

例如:delete from t_user where id = 100003;

在表中插入查询后的表格(查询子句),(注意:必须插入前的表格和查询后的表格的字段必须是一致的! )

例如:insert into test2 select * from dept ;

一次插入多条记录:

insert into test2(deptno,dname,loc) values (20,'APQI','NEW YORK'),(30,'TENXUN','BOSTON'),(10,'STTP','CCTV');

delete: 这种删除数据的方式效率比较低,而且数据在硬盘当中的储存空间还存在,删除后的数据可以恢复(rollback)!

truncate: 表被一次截断,这个表当中的数据是不可恢复的。

格式:truncate table 表名;

相关推荐
恒辉信达9 分钟前
hhdb客户端介绍(53)
数据库·mysql·hhdb·数据库可视化界面客户端
Hello.Reader1 小时前
Redis热点数据管理全解析:从MySQL同步到高效缓存的完整解决方案
redis·mysql·缓存
是程序喵呀2 小时前
MySQL备份
android·mysql·adb
指尖上跳动的旋律2 小时前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
一勺菠萝丶2 小时前
MongoDB 常用操作指南(Docker 环境下)
数据库·mongodb·docker
m0_748244833 小时前
StarRocks 排查单副本表
大数据·数据库·python
C++忠实粉丝3 小时前
Redis 介绍和安装
数据库·redis·缓存
wmd131643067123 小时前
将微信配置信息存到数据库并进行调用
数据库·微信
是阿建吖!4 小时前
【Linux】基础IO(磁盘文件)
linux·服务器·数据库
凡人的AI工具箱4 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite