修改表添加列: * alter table 表名 add 列名 类型(长度) 约束; * alter table employee add image varchar(50); 修改表删除列: * alter table 表名 drop 列名; * alter table employee drop job; 修改表的列的类型长度及约束: * alter table 表名 modify 列名 类型(长度) 约束; * alter table employee modify image varchar(80) not null; 修改表的列名 * alter table 表名 change 旧列名 新列名 类型(长度) 约束; * alter table employee change image eimage varchar(60); 修改表名 * rename table 旧表名 to 新表名; * rename table employee to user; 修改表的字符集: * alter table 表名character set 字符集; * alter table user character set gbk;使用SQL操作数据库中的表的记录(对表的记录的增删改查的操作)
【插入记录】
语法 * insert into 表名 (列名,列名,...) values (值1,值2,...); ---插入指定列的值 * insert into 表名 values (值1,值2,...); ---插入所有列的值 注意事项: * 列名的个数与值的个数对应. * 列的类型与值的类型对应.位置也要对应. * 列的类型如果是字符串或者日期,写值的时候使用单引号将值引起来. * 插入的值的最大长度不能超过列的最大长度. 插入记录: * 插入某几列的值: * insert into employee (eid,ename,email) values (null,'aaa','aaa@itcast.cn'); * 插入所有列的值: * insert into employee values (null,'bbb','bbb@itcast.cn','1990-09-01','HR','I am HR');
【修改记录】
语法: * update 表 set 列名=值,列名=值 [where 条件]; 注意事项: * 列名和值类型也要一致. * 值不能超过列的最大长度. * 值是字符串或日期,需要使用单引号. 举例: * 修改employee表中所有记录的job为WORKER * update employee set job='WORKER'; * 修改employee表将name为aaa的邮箱改为aaa@163.com * update employee set email ='aaa@163.com' where ename ='aaa'; * 修改employee表将name为bbb的邮箱改为bbb@163.com同时修改job为HR * update employee set email ='bbb@163.com' , job='HR' where ename='bbb';
【删除记录】
语法: * delete from 表 [where 条件]; 注意事项: * 删除表中的一行记录,不能删除某列值 * 如果没有条件删除表中的所有列. 举例: * 删除id为8的记录: * delete from employee where eid = 8; * 删除所有记录: * delete from employee; 删除表中的所有记录truncate table 表名 和 delete from 表 区别? * 区别: * truncate table 删除表的记录:将整个表删除掉,重新创建一个新的表.truncate属于DDL. * delete from 删除表的记录:一条一条进行删除. delete属于DML。 * 事务管理 只能作用在DML语句上.如果再一个事务中使用delete删除所有记录,可以找回.
【基本查询】
查询语句: * select [distinct] *|列名 from 表 [where 条件];
【条件查询】
where语句后面可以加: 条件的关键字: = , > , >= , <, <= , <> like中可以使用占位符: _ 和 % :下划线匹配一个字符, %:可以匹配任意多个字符. * like ‘张%’; like ‘张_’; like ‘%明’; like ‘%明%’; in 后跟着一组值. * id in (1,2,3)and or not
【排序查询】
order by 对数据进行排序.默认升序. (asc升序,desc降序) 举例: * 查询所有学生的信息,并且按语文成绩进行排序. * select * from exam order by chinese; * 查询所有学生的信息,并且按语文成绩进行降序排序. * select * from exam order by chinese desc; * 查询学生的信息,按照英语成绩降序排序,如果英语成绩相同,按照语文降序. * select * from exam order by english desc, chinese desc; * 查询姓李的学生的信息,同时按照英语升序排序. * select * from exam where name like '李%' order by english asc;
【聚合函数】
sum()count()max()min()avg() 举例: * 查询每个学生总成绩: * select name,(english+chinese+math) from exam; * 统计所有学生的总分: * select sum(english+chinese+math) from exam; -- ifnull(english,0) * select sum(english)+sum(chinese)+sum(math) from exam; * 统计学生的个数: * select count(*) from exam; * 统计英语成绩的最高分: * select max(english) from exam; * 统计语文成绩的最低分: * select min(chinese) from exam; * 统计英语成绩平均分: * select avg(english) from exam;
【分组】
group by 举例: 创建一个订单详情的表: * 统计订单中的每类商品所购买的个数: * SELECT product,COUNT(*) FROM orderitem GROUP BY product; * 统计订单中的每类商品所花的金额: * SELECT product,SUM(price) FROM orderitem GROUP BY product; * 统计订单中的每类商品所花总金额大于2000信息. * SELECT product,SUM(price) FROM orderitem GROUP BY product HAVING SUM(price) > 2000; * 统计订单中名称有电子的商品并且所花金额大于1500同时按照价格降序排序: * SELECT product,SUM(price) FROM orderitem WHERE product LIKE '电%' GROUP BY product HAVING SUM(price) > 1500 ORDER BY SUM(price) DESC;