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 表名;

相关推荐
姚远Oracle ACE2 小时前
解读Oracle AWR报告:Global Cache and Enqueue Services - Workload Characteristics
数据库·oracle
流星白龙2 小时前
【Qt】7.信号和槽_connect函数用法(2)
java·数据库·qt
Zzz 小生4 小时前
Claude Code学习笔记(四)-助你快速搭建首个Python项目
大数据·数据库·elasticsearch
nongcunqq8 小时前
abap 操作 excel
java·数据库·excel
rain bye bye8 小时前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
冻咸鱼8 小时前
MySQL的配置
mysql·配置
阿里云大数据AI技术9 小时前
云栖实录|MaxCompute全新升级:AI时代的原生数据仓库
大数据·数据库·云原生
不剪发的Tony老师10 小时前
Valentina Studio:一款跨平台的数据库管理工具
数据库·sql
weixin_3077791310 小时前
在 Microsoft Azure 上部署 ClickHouse 数据仓库:托管服务与自行部署的全面指南
开发语言·数据库·数据仓库·云计算·azure
六元七角八分10 小时前
pom.xml
xml·数据库