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;