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 ...
随机推荐
- 剑指offer:数组中只出现一次的数字
题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 思路分析: 1. 直接想法,每个数字遍历,统计出现次数,复杂度O(n^2),超时. 2. 借助 ...
- PyCharm虚拟环(Project Interpreter)手动安装第三方包图解教程
PyCharm虚拟环(Project Interpreter)手动安装第三方包图解教程 an鑫_wolfxin2010 关注 2018.03.13 21:58* 字数 313 阅读 3782评论 1喜 ...
- android -------- SHA 加密算法
安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法.能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的 ...
- EasyUi datagrid列表增加复选框
本文为博主原创,未经允许不得转载 1.增加复选框列 { field: 'oid', title: '<input type=\"checkbox\" name ...
- word 转 pdf,c#代码
通过使用 C# 控制 office 软件 com 组件转 pdf 1 word 转 pdf 方案二:可以使用 netoffice 进行转换 参考文档:https://netoffice.io/docu ...
- [转]图片Premultiplied Alpha到底是干嘛用的
Premultiplied Alpha 这个概念做游戏开发的人都不会不知道.Xcode 的工程选项里有一项 Compress PNG Files,会对 PNG 进行 Premultiplied Alp ...
- 【Java】Spring之基于注释的容器配置(四)
注释是否比配置Spring的XML更好? 基于注释的配置的引入引发了这种方法是否比XML“更好”的问题.答案是每种方法都有其优点和缺点,通常,由开发人员决定哪种策略更适合他们.由于它们的定义方式,注释 ...
- [LeetCode] 804. Unique Morse Code Words 独特的摩斯码单词
International Morse Code defines a standard encoding where each letter is mapped to a series of dots ...
- 通过ip远程控制电脑
现在,很多人都用了不止一台电脑,而同时操作两台电脑是一件比较麻烦的事情,所以,如果能够使用一台电脑的鼠标键盘显示器,去远程控制另一台电脑,那就方便多了. 远程计算机设置 1.先确保本地计算机和远程计算 ...
- nginx+consul-template+consul实现自动负载均衡
所需工具:工具 下载地址 本文使用版本consul https://www.consul.io/downloads.html consul_1.0.7_linux_amd64.zipconsul-te ...