mySql入门-(二)

栏目: 数据库 · 发布时间: 5年前

内容简介:最近刚刚开始学习所有的 SQL 语句都以下列关键字之一开始:有一点需要特别注意:

最近刚刚开始学习 Mysql ,然而学习 MySql 必经的一个过程就是 SQL语句 ,只有按照文档从头开始学习 SQL 语句。学习的过程是痛苦的,但是学完的成果是甘甜的。

SQL 语法

所有的 SQL 语句都以下列关键字之一开始: SELECT、INSERT、UPDATE、DELETE、ALTER、DROP、CREATE、USE、SHOW ,并以一个分号( ; )结束。

有一点需要特别注意: SQL 不区分大小写,也就是说 SELECTselectSQL 语句中有相同的含义。然而, 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 查询。

ANDOR 同时使用。

//  查询 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 关键字用于对结果集进行排序。

  1. 先将查询值这一列排序,同为 CN 的排前面,同属 USA 的排后面。
  2. 然后在同属 CN 的这些多行数据中,再根据 alexa 值的大小排列。
  3. 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

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的交集。

mySql入门-(二)

语法

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

mySql入门-(二)

语法

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

mySql入门-(二)

语法

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

总结

简单的做了一些笔记,虽然很基础个人觉得很实用,如果哪里有错误,请在下方留言指正,我会尽快做出修改。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

第三次浪潮

第三次浪潮

托夫勒 / 黄明坚 / 中信出版社 / 2006-6 / 38.00元

《第三次浪潮》作者托夫勒在20多年前预见的未来是:跨国企业将盛行;电脑发明使SOHO(在家工作)成为可能;人们将摆脱朝九晚五工作的桎梏;核心家庭的瓦解;DIY(自己动手做)运动的兴起……时过境迁,如今我们才发现托夫勒的预言竟大多已成为了现实。   20年前的《第三次浪潮》在打开国门之初给人们心灵造成的冲击,其影响至今仍然连绵不绝。托夫勒在这本书中将人类社会划分为三个阶段:第一次浪潮为农业阶段......一起来看看 《第三次浪潮》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具