mySql入门-(二)
最近刚刚开始学习Mysql
,然而学习MySql
必经的一个过程就是SQL语句
,只有按照文档从头开始学习SQL
语句。学习的过程是痛苦的,但是学完的成果是甘甜的。
SQL 语法
所有的 SQL 语句都以下列关键字之一开始:SELECT、INSERT、UPDATE、DELETE、ALTER、DROP、CREATE、USE、SHOW
,并以一个分号(;
)结束。
有一点需要特别注意:SQL
不区分大小写,也就是说SELECT
和select
在SQL
语句中有相同的含义。然而,MySQL
在表的名称方面并不遵循此规定。所以,如果你在使用MySQL
的话,你需要在程序中严格按照它们在数据库中名字进行使用。
SQL语句
中使用*
代表通配符。
SELECT
SELECT
关键字用来从数据中查询数据。
语法
SELECT 查询字段 FROM 表名;
// 在 loglists 表中查询 id,name 两个字段
SELECT id,name FROM `loglists`;
SELECT DISTINCT
SELECT DISTINCT
语句用于返回唯一不同的值。
语法
SELECT DISTINCT 查询字段 FROM 表名;
// 查询 loglists 表中 content,name 全部不相同数据
SELECT DISTINCT content,name FROM `loglists`;
若SELECT DISTINCT
查询多个字段的话,会根据当前的这些字段中的值全部不相同的数据。在使用时需要注意的是,不要把唯一主键作为查询条件。
WHERE
WHERE
子句用于提取那些满足指定标准的记录。
语法
SELECT 查询字段 FROM 表名 WHERE 查询条件;
// 查询 loglists 表中 content为111 的数据,查询字段包括 content,name,id
SELECT content,name,id FROM loglists WHERE content="111";
AND
第一个条件和第二个条件都成立,则AND
运算符显示一条记录。
语法
SELECT 查询字段 FROM 表名 WHERE 条件 AND 条件;
// 查询 loglists 表中 content="111" 并且 id<=150 的数据,查询字段包括 id,content,name
SELECT id,content,name FROM loglists WHERE content="111" AND id<=150;
如果有多个条件可以连续AND
查询。
OR
第一个条件和第二个条件中只要有一个成立,则OR
运算符显示一条记录。
语法
SELECT 查询字段 FROM 表名 WHERE 条件 OR 条件;
// 查询 loglists 表中 content="111" 或 id<=150 的数据,查询字段包括 id,content,name
SELECT id,content,name FROM loglists WHERE content="111" OR id<=150;
如果有多个条件可以连续OR
查询。
AND
与OR
同时使用。
// 查询 loglists 表中 content="111" 并且 id<=150 或者 name="111" 的数据,查询数据包括 id,content,name
SELECT id,content,name FROM loglists WHERE content="111" AND id<=150 OR name="111";
ORDER BY
ORDER BY
关键字用于对结果集进行排序。
- 先将查询值这一列排序,同为
CN
的排前面,同属USA
的排后面。 - 然后在同属
CN
的这些多行数据中,再根据alexa
值的大小排列。 ORDER BY
排列时,不写明ASC DESC
的时候,默认是ASC
。
ASC
升序
DESC
降序
语法
SELECT 字段 FROM 表名 ORDER BY 字段 ASC|DESC;
// 查询 loglists 包括字段 id,content,name
// 先将 name 升序排列,把查询的数据再按照content查询分区块,按降序排序
SELECT id,content,name FROM loglists ORDER BY name ASC,content DESC;
INSERT INTO
INSERT INTO
语句用于向表中插入新记录。
语法
INSERT INTO 表名 (添加字段) VALUES (值);
// 向 loglists 中添加一条数据 字段为 name,content,text 值为 "aaron","my's aaron","haha"
INSERT INTO loglists (name,content,text) VALUES ("aaron","my's aaron","haha");
下面这种也是插入一条数据带有条件查询
// 向 loglists 中插入一条数据
// 插入的数据为 loglists 表中 content = 123 的结构
INSERT INTO loglists SELECT * FROM loglists WHERE content = "123";
上面这种写写法需要注意:
- 插入表中与查到的表中的
主键
不能相同,一旦相同则会抛出错误 - 若查询表中有多条数据,则会重复添加多条数据
- 要求表必须存在
UPDATE
UPDATE
语句用于更新表中的记录。
语法
UPDATE 表明 SET 更新数据(name="liergou") WHERE 条件;
// 更新loglists表
// name="liergou",text="eroguzi",content="ok"
// 根据 id=1 或 text="999"
// 查找数据并更新
UPDATE loglists SET name="liergou",text="eroguzi",content="ok" WHERE id=1 OR text="999";
DELETE
DELETE
语句用于删除表中的记录。
语法
DELETE FROM 表名 WHERE 查询条件;
// 删除 loglists 中 id=1 或 text="angie" 的数据
DELETE FROM loglists WHERE id=1 OR text="angie";
删除所有数据:
DELETE FROM table_name;
DELETE * FROM table_name;
++友情提示:在删除记录时要格外小心!因为不能重来!++
LIMIT
截取查询数据。
语法
SELECT 字段 FROM 表名 ORDER BY 查询字段 ASC LIMIT 截取位数;
// 在 loglists 表中
// 按id升序排列,截取1-3位
SELECT * FROM loglists ORDER BY id ASC LIMIT 3;
如果LIMIT
后面只有一个数则默认为1-n
之间。
在看SQL
语句的时候看到有个一TOP
语句,但是在Mysql
使用的时候,报错。
Mysql
中实现类似TOP
语句:
SELECT * FROM loglists ORDER BY id ASC LIMIT 1,3;
LIKE
LIKE
操作符用于在WHERE
子句中搜索列中的指定模式。
语法
SELECT 字段 FROM 表名 WHERE 搜索字段 LIKE 条件;
// 查询 loglists 表中 text 字段
// text含有a字母
// 包含所有字段
SELECT * FROM loglists WHERE name LIKE "%a%";
模糊搜索规则:
- '%a':以
a
结尾的数据 - 'a%':以
a
开头的数据 - '%a%':含有
a
的数据 - '_a_':三位且中间字母是
a
的 - '_a':两位且结尾字母是
a
的 - 'a_':两位且开头字母是
a
的
IN
IN
操作符允许在WHERE
子句中规定多个值。
语法
SELECT 字段 FROM 表名 WHERE 查询字段 in 查询条件;
// 在 loglists 查询 name 字段为 a 或 b的数据
SELECT * FROM loglists WHERE name in ("a","b");
若不使用IN
操作符也是可以实现的:
SELECT * FROM loglists WHERE name="a" OR name="b";
这样的写法与上面是等价的。
BETWEEN
BETWEEN
操作符用于选取介于两个值之间的数据范围内的值。
语法
SELECT 字段 from 表明 WHERE 条件字段 BETWEEN 条件1 AND 条件2;
// 在 loglists 表中查询 id 为 9-11之间的数据
SELECT * from loglists WHERE id BETWEEN 9 AND 11;
JOIN 与 INNER JOIN
join
用于把来自两个或多个表的行结合起来。INNER JOIN1
产生的结果集中,是表1和表二2的交集。
语法
SELECT 字段(loglists.id) FROM 表1 INNER JOIN 表2 ON 条件;
// 查询 loglists 与 children 表
// loglists.id 与 children.cid 相同的数据
// 查询字段为
// loglists.id,
// loglists.name,
// children.age,
// loglists.content,
// loglists.text
SELECT
l.id,
l.name,
c.age,
l.content,
l.text
FROM
loglists AS l
INNER JOIN
children AS c
ON
l.id = c.cid;
LEFT JOIN
LEFT JOIN
关键字从左表(table1
)返回所有的行,即使右表(table2
)中没有匹配。如果右表中没有匹配,则结果为NULL
。
语法
SELECT 字段 FROM 表1 LEFT JOIN 表二 ON 条件;
// 查询 loglists 与 children 表
// loglists.id 与 children.cid 相同的数据
// 查询字段为
// loglists.id,
// loglists.name,
// children.age,
// loglists.content,
// loglists.text
SELECT
l.id,
l.`name`,
c.age,
l.text,
l.content
FROM
loglists AS l
LEFT JOIN
children AS c
ON
l.id = c.age;
查询数据如下:
id | name | age | text | content |
---|---|---|---|---|
12 | aaron | 12 | 简介 | 什么都没有 |
13 | angie | null | 简介 | 有点东西 |
RIGHT JOIN
RIGHT JOIN
关键字从右表(table2
)返回所有的行,即使左表(table1
)中没有匹配。如果左表中没有匹配,则结果为NULL
。
语法
SELECT 字段 FROM 表1 RIGHT JOIN 表二 ON 条件;
// 查询 loglists 与 children 表
// loglists.id 与 children.cid 相同的数据
// 查询字段为
// loglists.id,
// loglists.name,
// children.age,
// loglists.content,
// loglists.text
SELECT
l.id,
c.age,
l.`name`,
l.text,
l.content
FROM
loglists AS l
RIGHT JOIN
children AS c
ON
l.id=c.age;
查询数据如下:
id | name | age | text | content |
---|---|---|---|---|
12 | aaron | 12 | 简介 | 什么都没有 |
null | null | 55 | null | null |
null | null | 77 | null | null |
总结
简单的做了一些笔记,虽然很基础个人觉得很实用,如果哪里有错误,请在下方留言指正,我会尽快做出修改。
mySql入门-(二)的更多相关文章
- <MySQL>入门二 增删改 DML
-- DML语言 /* 数据操作的语言 插入:insert 修改:update 删除:delete */ 1.插入 -- 插入语句 /* 语法:insert into 表名(列名...) values ...
- MySQL入门笔记(二)
MySQL的数据类型.数据库操作.针对单表的操作以及简单的记录操作可参考:MySQL入门笔记(一) 五.子查询 子查询可简单地理解为查询中的查询,即子查询外部必然还有一层查询,并且这里的查询并非仅 ...
- MySQL概述及入门(二)
MySql概述及入门(二) MySQL架构 逻辑架构图: 执行流程图: MySQL的存储引擎 查询数据库支持的存储引擎 执行: show engines: 多存储引擎是mysql有别于其他数据库的一大 ...
- 21分钟 MySQL 入门教程(转载!!!)
21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...
- MYSQL入门全套(第三部)
MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引简介 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构.如果想按特定职员的姓来查找 ...
- MySQL入门(三)
写了两篇<MySQL入门>以后我发现,写书的人还是都挺有本事的,起码人家知道怎么编排自己想讲的知识点,我实在是不知道该先说那里后说哪里,那我就想到什么讲什么吧. 一 写SQL 其实我是不想 ...
- MySQL入门笔记
MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: · rpm包形式 · 通用二进制 ...
- MySQL入门转载
21分钟 MySQL 入门教程 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html 目录 一.MySQL的相关概念介绍 二.Wi ...
- mysql 入门 基本命令
MYSQL入门学习之一:基本操作 1.登录数据库 www.2cto.com 命令:mysql -u username –p (mysql -h主机地址 -u用户名 -p用户密码) ...
- MySQL入门笔记(一)
一.数据类型 1. 整型 2. 浮点型 3. 字符型 4. 日期时间型 二.数据库操作 1. 创建库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_nam ...
随机推荐
- dockerfile文件语法命令
dockerfile文件语法命令 (1) FROM命令,支持两种形式,构建新镜像使用的基础镜像,所以源镜像必须存在,并且是非注释的第一条命令. DOCKERFILEFORM <image> ...
- idea docker docker-compose发布springboot站点到tomcat
允许docker被远程访问 见:https://www.cnblogs.com/wintersoft/p/10921396.html 教程:https://spring.io/guides/gs/sp ...
- Python语言编写BP神经网络
Python语言编写BP神经网络 2016年10月31日 16:42:44 ldy944758217 阅读数 3135 人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善 ...
- Jmeter获取 json字符的另外一种写法
在jmeter使用过程中,我们经常会看到接口返回数据类型为application/json,也就时我们常说的json格式. 而在功能测试时,我们经常会要对它的结果进行断言,确认结果是否与预期一致,有时 ...
- matlab学习笔记10 一般运算符
一起来学matlab-matlab学习笔记10 10_1一般运算符 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 感谢张 ...
- 【转】SOA架构和微服务架构的区别
SOA架构和微服务架构的区别 https://blog.csdn.net/zpoison/article/details/80729052
- 简易商城 [ html + css ] 练习
1. 前言 通过使用 HTML + CSS 编写一个简易商城首页. 如图: 2. 布局思路 通过页面分析,大致可以决定页面的布局分为 5 大板块. 接下来,可以先定义页面的布局: <!DOCTY ...
- 【c++基础】C与C++接口相互调用
前言 编译程序的时候出现错误,入口程序如果是cpp文件可以编译成功,如果是c程序则出错.一般这个问题是c与c++之间接口相互调用出现的问题. 出现的错误是undefined reference to ...
- 算法练习之x的平方根,爬楼梯,删除排序链表中的重复元素, 合并两个有序数组
1.x的平方根 java (1)直接使用函数 class Solution { public int mySqrt(int x) { int rs = 0; rs = (int)Math.sqrt(x ...
- jquery向上滚动页面的写法
jquery向上滚动页面的写法<pre> $('.arrow_top').on('click',function () { $body = (window.opera) ? (docume ...