mysql增删改查
插入: insert into 表名 values()
更新:update 表名 set 列名 where 条件=""
删除:delete from 表名 where 条件=""
as起别名
distinct去重
where 条件1and/or/between/<> 条件2
where 条件is = ""
where 列名like "李%" %代表任意个字符 _:表示一个字符
聚合函数中的count统计的记录数量不包括null的数据
分页查询: limit 跳过的数据量,查询几条数据量
order by asc/desc 默认正序
分组查询
SELECT gender,COUNT(*) FROM student GROUP BY gender;
统计数量,统记的是student的性别
例: 男 3 女 2
truncate 截断
与delete不同的是,执行后会自动提交
truncate比delete快,会影响自增,truncate table 清空表
外键
假如有一个部门表,有一个员工表, 这些员工肯定都属于某个部门,在mysql靠外键来设置这个约束
假如id用来表示部门表中每个部门, 员工表靠deptId来写自己属于哪个部门
所以deptId一定不存在id中没有的值
constraint 外键名 foreign key(自己的键) reference dept(参考的键)
级联操作
有了外键之后,希望修改主表的值,副表的值也受到影响
在外键的语句后补加
cascade汉语小瀑布
级联修改: ON UPDATE CASCADE
级联删除: ON DELETE CASCADE
级联删除: ON DELETE SET NULL
`constraint 外键名 foreign key(自己的键) reference dept(参考的键) on..... on....`
关联查询(多表查询)
SELECT empName,deptName FROM employee,dept;
一般这样查询,会产生笛卡尔积的情况,会有很多重复记录
使用频繁的是内连接查询(有条件的查询)
SELECT empName,deptName -- 2)确定哪些哪些字段
FROM employee,dept -- 1)确定查询哪些表
WHERE employee.deptId=dept.id -- 3)表与表之间连接条件
内连接的另一种语法
SELECT empName,deptName
FROM employee
INNER JOIN dept
ON employee.deptId=dept.id;
左(外)连接查询(就是无论另一个表有没有和自身匹配的,自身的数据都是全部显示的)
SELECT d.deptName,e.empName
FROM dept d
LEFT OUTER JOIN employee e
ON d.id=e.deptId;