SQL语句

需要在数据库上执行的大部分工作都由 SQL 语句完成。

注意:一定要记住,SQL 对大小写不敏感!

分号是在数据库系统中分隔每条 SQL 语句的标准方法。

SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。

数据定义语言(DML)

这里我们用company数据库进行对数据的操作

INSERT INTO(插入语句)

单条数据插入
    INSERT INTO `表名`(`字段1`,`字段2`)VALUES('值1''值2');

多条数据插入
    INSERT INTO `表名`(`字段1`,`字段2`)VALUES('值1',‘值2’),('值1','值2');

例:
/*在部门表插入数据*/
    INSERT INTO `pre_department`(`name`)VALUES('技术部');

UPDATE(更新语句)

更新一个表的数据
    UPDATE 表名 SET `字段1`=值1,`字段2`=值2,`字段n`=值n WHERE 条件;

例:
/*把技术部更新为行政部*/
    UPDATE `pre_department` SET `name`='行政部' WHERE `id` = 1;

DELETE(删除语句)

删除一条数据
    DELETE FROM `表` WHERE 条件;
删除多条数据
    DELETE FROM `表` WHERE `id` IN ('值1','值2');

例:
    DELETE FROM `pre_department` WHERE `id` IN ('1','2');

SELECT(查询语句)

表示查询全部字段
    SELECT * FROM `表`;

要查哪个字段就直接写字段
    SELECT 字段1,字段2 FROM 表;

根据where后面的条件查询内容
    SELECT * FROM `表` WHERE 条件;

查询的条件是id=5并且depid=3的数据
    SELECT * FROM `表` WHERE `id`=5 and `depid`=3;

查询的条件是id=5或者是id=8的数据
    SELECT * FROM `表` WHERE `id`=5 or `id`=8;

查询 5 - 10之间的数据
    SELECT * FROM `表` WHERE `id` BETWEEN 5 AND 10;
    SELECT * FROM `表` WHERE `id` >= 5 AND `id` <= 10;

查询的条件是id=1,或者id=3,或者id=6的数据    
    SELECT * FROM `表` WHERE `id` IN (1,3,6);

查询的条件是id不等于1,3,6的数据
    SELECT * FROM `表` WHERE `id` NOT IN (1,3,6);

只查询5条
    SELECT * FROM `表` LIMIT 5;

从第4条数据开始,只查询5条
    SELECT * FROM `表` LIMIT 3,5;

排序(升序:asc,降序:desc)
    SELECT * FROM `表` ORDER BY `id` ASC;

根据title分组(把相同的title数据分到一组)
    SELECT * FROM `表` GROUP BY title;

模糊查询name这个字段里面数据有 '你是'
    SELECT * FROM `表` WHERE `name` like '%你是%';

连表查询

LEFT JOIN(左连表)

以左边的表为基准,先把左边的表查出来,再查右边的表,若右边的表没对应的数据显示的就为NULL。

left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.ID = B.bID).
B表记录不足的地方均为NULL.

例:
    SELECT d.name,j.name FROM `pre_department` as d LEFT JOIN `pre_job` as j on d.id = j.depid;

RIGHT JOIN(右连表)

以右边的表为基准,先把右边的表查出来,再查左边的表,若左边的表没对应的数据显示的就为NULL

仔细观察一下,就会发现right join和left join的结果刚好相反,这次是以右表(B)为基础的,
A表不足的地方用NULL填充。

例:
    SELECT j.name,d.name FROM `pre_job` as j RIGHT JOIN `pre_department` as d on j.depid = d.id;

INNER JOIN(内连表)

以两个表中有至少一个匹配,否则不显示
这说明inner join并不以谁为基础,它只显示符合条件的记录。

    SELECT d.name,j.name FROM `pre_department` as d INNER JOIN `pre_job` as j ON d.id = j.depid;
powered by GitbookEdit Time: 2023-04-08 10:28:32