mySql入门-(二)

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

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

最近刚刚开始学习 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 关键字用于对结果集进行排序。

  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

总结

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


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

查看所有标签

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

计算机网络(第7版)

计算机网络(第7版)

谢希仁 / 电子工业出版社 / 2017-1 / 45.00

本书自1989年首次出版以来,曾于1994年、1999年、2003年、2008年和2013年分别出了修订版。在2006年本书通过了教育部的评审,被纳入普通高等教育“十一五”国家级规划教材;2008年出版的第5版获得了教育部2009年精品教材称号。2013年出版的第6版是“十二五”普通高等教育本科国家级规划教材。 目前2017年发行的第7版又在第6版的基础上进行了一些修订。 全书分为9章,比较......一起来看看 《计算机网络(第7版)》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具