Mysql常用语句
创建和管理数据表
创建数据表:
CREATE TABLE 表名 (
列名1 数据类型,
列名2 数据类型,
);
查看数据表结构:
DESC 表名;
修改表结构 (例如,添加列):
ALTER TABLE 表名 ADD 列名 数据类型;
重命名表:
RENAME TABLE 旧表名 TO 新表名;
删除表:
DROP TABLE 表名;
数据操作语句
插入记录:
INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);
查询记录:
SELECT 列1, 列2, ... FROM 表名 WHERE 条件;
更新记录:
UPDATE 表名 SET 列1 = 值1, 列2 = 值2 WHERE 条件;
删除记录:
DELETE FROM 表名 WHERE 条件;
JOIN常用方法
内连接:INNER JOIN
(为了简略写法,有时会写成 JOIN)内连接INNER JOIN是最常用的连接操作,从数学的角度讲就是求两个表的交集。
SELECT * FROM tab1 INNER JOIN tab2 ON tab1.id1 = tab2.id2
左连接:LEFT JOIN
左连接可以看做在内连接的基础上,把左表中不满足ON条件的数据也显示出来,但结果中的右表部分中的数据为NULL
SELECT * FROM tab1 LEFT JOIN tab2 ON tab1.id1 = tab2.id2
右连接:RIGHT JOIN
SELECT * FROM tab1 RIGHT JOIN tab2 ON tab1.id1 = tab2.id2
子查询
子查询是指在一个查询语句中嵌套另一个查询语句的查询。子查询可以出现在 SELECT、INSERT、UPDATE、DELETE 语句中,也可以出现在 WHERE、HAVING 或 FROM 子句中。子查询的结果可以是一个值、一列值或多行多列值。
子查询的基本语法结构如下:
SELECT column1, column2
FROM table1
WHERE column3 = (SELECT column4 FROM table2 WHERE condition);
在这个例子中,内层查询(子查询)首先执行,然后将结果传递给外层查询(主查询)使用。
标量子查询(返回一个值)
把一个sql 执行返回的一个值,作为另一个sql的条件,得到的结果是一行一列,一般出现在where之后
select sum(incoming) from emp where dept2=(select dept1 from dept where dept_name='财务' );
列子查询(返回的结果是一个列)
返回的是一列值
SELECT sid from emp where dept2 in (SELECT dept1 from dept where dept_name='财务' or dept_name='销售')
行子查询
返回的结果是一行多列,一般出现在where 的后面
select name from emp where (age,woektime_start) in (select age,woektime_start from emp where name="小兰" ) ;
表子查询
定义:返回的是多行多表 (返回的就是一个表),一般接在from 的后面,返回的是一个表
select a.name from (select * from dept INNER JOIN emp on dept.dept1=emp.dept2) as a WHERE a.dept_name="财务"
多表查询
三表连接
select * from student as a ,course as b,sc as c where a.stu_no=c.stu_no AND b.c_no=c.c_no ;
三表左连接
select * from student as a left JOIN sc as c on a.stu_no=c.stu_no left JOIN course as b on b.c_no=c.c_no
先合两表在和一表
select * from (select * from 表1 right JOIN 表3 on 表1.关联字段1=表3.关联字段3 )