MySQL之SQL语句(总结)
SQL
MySQL的SQL跟许多关系型数据库
一样,大同小异,主要分为四种:DDL
(Database Definition Language)、DML
(Database Management Language)、DQL
(Database Query Language)、DCL
(Database Control Language)对应了数据库中表的定义
、操作
、查询
、权限控制
。
- DDL
数据库定义语言
语法:
创建数据库 :
create database 数据库名;(普通写法)create database if not exists 数据库名;(不存在则创建,防止重复创建报错)
删除数据库:
drop database 数据库名 ;(普通写法)drop database if exists 数据库名;(存在则删除,防止重复删除报错)
使用数据库:
use 数据库名;select database(); (查看当前使用的数据库是哪个)
查看所有存在的数据库:
show databases;
创建表:
create table 表名称(字段名称1 数据类型,......字段名称2 数据类型,字段名称n 数据类型
);
表(具体结构)
字段名1 | 字段名2 | … | 字段名n |
---|---|---|---|
值 | 值 | … | 值 |
删除表:
drop table 表名;drop table if exists 表名;(存在则删除)
修改表:
更改表名:alter table 表名 rename to 新的表名;添加字段alter table 表名 add 字段名 数据类型;修改字段的类型alter table 表名 modify 字段名 新数据类型;修改字段名和数据类型alter table 表名 change 字段名 新字段名 数据类型;删除字段alter table 表名 drop 字段名;
查看表的结构:
desc 表名;
- DML
数据库操作语言
语句:
添加记录:
赋予指定字段数据,并添加一条记录:insert into 表名(字段名1,字段名2,字段名3,...) values(值1,值2,值3,...);赋予所有字段数据,并添加一条记录:insert into 表名 values(值1,值2,值3,...);批量添加记录:insert into 表名(字段名1,字段名2,字段名3,...) values (值1,值2,值3,...),(值1,值2,值3,...),(值1,值2,值3,...);insert into 表名 values (值1,值2,值3,...),(值1,值2,值3,...),(值1,值2,值3,...);
修改记录:
update 表名 set 字段名1 = 值1,字段名2=值2,字段名3=值3 where 条件;注:若省略 where 条件,则会将所有记录的对应字段修改。
删除记录:
delete from 表名 where 条件;注:若省略 where 条件,则会将所有记录都删除。
- DQL
数据库查询语言
查询语法:
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组后条件
order by
排序字段
limit
分页限定;
基础查询:
查询某列数据select 字段名 from 表名;查询多列数据select 字段名1,字段名2,... from 表名;查询所有列数据select * from 表名;去重查询select distinct 字段名 from 表名;起别名select 字段名 as 别名 from 表名;
条件查询:
select 字段列表 from 表名 where 条件列表;注:如果要判断字段值是否为null不能用=,必须使用 is 关键字模糊查询select 字段列表 from 表名 where 某字段 like 模糊字符串;注:模糊字符串的通配符有%表示多个字符,_表示单个字符。
排序查询:
select 字段列表 from 表名 order by 字段名1 排序方式,字段名2 排序方式,... 排序方式;注:asc:升序排序 desc:降序排序
分组查询:
聚合函数:count(字段名) 统计数量 (如要统计表所有的记录,最常用count(*))max(字段名) 最大值min(字段名) 最小值sum(字段名) 求和avg(字段名) 平均分注:null 值不参与聚合函数的计算select 聚合函数(字段名) from 表名;分组查询语法:select 字段列表 from 表名 [where 分组前条件] group by 分组字段名 [having 分组后条件];注:where 与 having 区别在于执行时机不同,且having是对分组后的结果进行过滤,having能对聚合函数进行判断,where不行。分组后,查询的字段列表为聚合函数和分组字段,其他字段无意义.语句执行顺序:where >group by > 聚合函数 > having
分页查询:
select 字段列表 from 表名 limit 起始索引,最大记录条目数;注:起始索引是从0开始算的(第0条记录)记录条目数是一页现实的记录数量 limit 关键字是 MySQL 特有
多表查询:
select 字段列表 from 表名1,表名2;注:该语句查询出来的记录个数是 所有表记录的笛卡儿积(就是两个表的数据自由组合的结果)。所以一般 多表查询 都会用上 where 条件判断,去除笛卡尔积出来了无效数据:select 字段列表 from 表名1,表名2 where 条件; 连接查询:内连接:查询两个表中交集的数据外连接:左外连接:相当于查询A表
连接查询(如图所示):
内连接:查询两个表中交集的数据隐式内连接:select 字段列表 from 表1,表2 where 条件;显示内连接:select 字段列表 from 表1 inner join 表2 on 条件;外连接:左外连接:相当于查询A表的所有数据和交集的数据。select 字段列表 from 表1 left join 表2 on 条件;右外连接:相当于查询B表的所有数据和交集的数据。select 字段列表 from 表1 right join 表2 on 条件;
子查询(嵌套查询):
MySQL之SQL语句(总结)相关推荐
- windows下bat处理执行Mysql的sql语句
这篇文章主要介绍了windows下bat批处理执行Mysql的sql语句,需要的朋友可以参考下 有时候我们需要用bat来定时执行mysql那么就可以参考下面的代码 直接上代码: @ECHO OFF S ...
- shell实行mysql语句_【Mysql】shell运行mysql的sql语句_MySQL
bitsCN.com [Mysql]shell运行mysql的sql语句 shell本身是一种脚本语言,所以不能像java一样通过api去连接数据库.shell还是要借助mysql本身的一些运行脚本才 ...
- PHP获取MySQL执行sql语句的查询时间
PHP获取MySQL执行sql语句的查询时间 1. $t1=microtime(true); mysql_query($sql); echo microtime(true)-$t1; 2. //计时开 ...
- mysql下sql语句 update 字段=字段+字符串
mysql下sql语句令某字段值等于原值加上一个字符串 update 表明 SET 字段= 'feifei' || 字段; (postgreSQL 用 || 来连贯字符串) MySQL连贯字符串不能利 ...
- mysql分析sql语句基础工具 —— explain
转载自 https://segmentfault.com/a/1190000009724144 立即登录 [笔记] mysql分析sql语句基础工具 -- explain mysql wateran ...
- Mysql中SQL语句不使用索引的情况
Mysql中SQL语句不使用索引的情况 MySQL查询不使用索引汇总 众所周知,增加索引是提高查询速度的有效途径,但是很多时候,即使增加了索引,查询仍然不使用索引,这种情况严重影响性能,这里就简单总结 ...
- mysql数据库语句分类_细数MySQL中SQL语句的分类
1:数据定义语言(DDL) 用于创建.修改.和删除数据库内的数据结构,如:1:创建和删除数据库(CREATE DATABASE || DROP DATABASE):2:创建.修改.重命名.删除表(C ...
- MySQL的SQL 语句:根据从表记录个数对主表排序
MySQL的SQL 语句:根据从表记录个数对主表排序 一个主表 news,有字段 nId(自动增长),sName. 记录: 10 name10 13 name13 20 ...
- php面试专题---MySQL常用SQL语句优化
php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...
- MySQL 递归 sql语句 WITH表达式实现
MySQL 递归 sql语句 WITH AS 实现 前言: 这里一般来说需要编一个故事但是我懒 mysql递归CTE: 8.0版本以上才有WITH AS,8.0以下版本的话请绕行----->不是 ...
最新文章
- 20175223 《Java程序设计》第十一周学习总结
- 多核学习在图像分类中的应用
- openstack万兆交换机设置mtu值
- sqlyog表添加列_如何用数据透视表求差,而不是求和?
- cdh中hdfs非ha环境迁移Namenode与secondaryNamenode,从uc机器到阿里;
- java日期处理总结
- 项目实施管理之系统演示
- 电子计算机工程学,电子计算机工程学荣誉工学士资料.ppt
- kubernetes--pod的生命周期管理(PostStart,PreStop)
- 12简单推导:切面条
- Java之JvisualVM简介
- 下载spring源码
- Jad批量反编译class
- AD7705/TM7705使用注意事项
- linux系统支持速达软件吗,速达3000系列常见问题100问
- word在线编辑。生成图片。截图。合图。
- 外包公司的运作模式和赚钱之道-聊聊IT外包公司
- 2018年,给自己加油!
- 基于粒子群算法的微电网优化调度应用研究(三、长短期记忆网络和卷积神经网络预测模型)
- 2018年中国互联网企业百强榜单