Mysql数据操作管理
为表中字段插入数据
insert into <表名> values(值1,值2.....值n);//不指定具体的字段名
insert into 表名(字段1,字段2...) values(值1,值2...);//列出所有的字段名,字段名顺序可以变换,值也随之变换
为表的指定字段插入数据
insert into 表名(字段名1,字段名2..) values(值1,值2...);
同时插入多条记录
insert into 表名(字段1,字段2....字段n) values
(...),
(...)
);
修改数据
update 表名 set 字段1=值1,字段2=值2...字段n=值n where 条件表达式;
删除数据
delete from 表名[WHERE条件表达式];//where表达式指定删除哪条记录
单表查询(从一张表中查询所需的数据)
select 字段列 from <表名或视图名> [where <条件表达式>]...;
查询学生的所有信息
select * from 表名;
查询指定字段
select 字段1,字段2 from 表名;
为表和字段取别名
select sno'学号',grade'成绩' from sc;
条件查询(where)
带关系运算符和逻辑运算符的查询
select sno,sname from where grade>90;
带IN关键字的查询
select sno,grade from sc where grade in(65,75,85);
Between and查询
select sno,grade from sc where grade between 70 and 80;
带IS NULL关键字的空值查询
select sno,grade from sc where zno is null;//不可将is换成=
带LIKE关键字的查询
select * from sc where sname like '蓝莓';//like此时与‘=’等价
%:代表任意长度的字符串(b%k表示以b开头,k结尾的字符串)
‘-’:只能表示单个字符(b_k表示三个字符)
NOT LIKE:查询字符串不匹配的情况
分组查询
group by 字段名 [HAVING 条件表达式][WITH ROLLUP];//HAVING限制分组后的显示,WITH ROLLUP为所有记录的总和
eg:select sex,count(ssex) from sc gruop by ssex having count(ssex)>=10;
select * from sc group by ssex://按ssex字段进行分组查询
对查询结果排序
order by 字段名[ASC|DESC];//ASC表升序,DESC表降序
eg:select * from sc order by zno DESC;//按zno字段降序排列
限制查询结果数量
select * from sc order by sno limit 2,3;//从表中查找第三名同学开始的三位学生的信息(行数从0开始)
COUNT统计sc表中的记录数
select count(*) as '学生总人数 from sc;//统计sc记录数
SUM函数(求某个字段的和)
select sno,sum(grade) from sc where sno='1412';//1412号同学的总成绩
合并查询结果
select * from sc where sex='女' union select * from student where birth>'1997=01-09';
内连接查询
等值连接(INNER JOIN)
select * from sc inner join course on sc.cno=course.cno limit 4;//返回的结果限制在4条以内
自然连接(NATURAL JOIN)---------在等值连接基础上去掉重复记录
外连接查询
select 字段表 from 表1 left|right join 表2 on 表1.字段=表2.字段;
eg:select course.cno,course.cname,sc.cno,sc.cname from course left join sc on course.cno=sc.cno;
子查询
select * from sc where sno not in(select sno from sc);
EXISTS查询
select * from sc where exists(select * from specialty where zname='金融');
ANY、ALL关键字查询(课本196)