标题: 【石家庄校区】java小白总结前端第八天的知识笔记-MySQL [打印本页] 作者: 隔壁小白 时间: 2017-11-27 23:07 标题: 【石家庄校区】java小白总结前端第八天的知识笔记-MySQL *插入数据
insert into 表名 (列名,列名...) values (值1,值2...); 插入指定列的值
insert into 表名 values (值1,值2...); 插入所有列的值 * 注意事项: * 列名的个数与值的个数对应. * 列的类型与值的类型对应.位置也要对应. * 列的类型如果是字符串或者日期,写值的时候使用单引号将值引起来. * 插入的值的最大长度不能超过列的最大长度.
*中文乱码问题
黑窗口默认是gbk字符集,而MYSQL的客户端和服务器端都是utf8
查看字符集
show character like %**%
去安装目录的ini找到客户端的字符集更改字符集(改的时候先把文件弄到桌面改,改完替换回去),
然后重新加载MySQL的配置文件 services.msc
然后停止MySQL服务,重新启动MySQL服务
执行之前的SQL语句就可以了 *修改记录
*语法
update 表名 set 表名=值,列名=值 [where 条件]; *删除记录
delete from 表 [where 条件]
删除表中的一行记录,不能删除某列;
如果没有条件,则删除的是表中所有的列
*删除表中所有记录truncate table 表名 和delete from 表名的区别:
truncate table 表名:删除表的记录:将整个表删除,探后重新创建一个新的表,truncate属于DDL.
delete from 表名:删除表的记录,逐条删除记录,delete属于DML.
事务管理,只能作用在DML语句上,在事务中使用delete,可以找回来. *查询记录
select [distinct] */列名 from 表名 [where 条件];
*where条件的关键字: *=,>,<,<=,>=,<>,!= *like中可以使用占位符:
_:匹配一个字符
%:可以匹配任意多个字符 *in后面跟一组值
id in(1,2,3) id=1 or id=2 or =3;
id in(select id from table where id>1) *and or not *is not null,其他全是not * *排序查询
order by 对数据进行排序,默认升序
*升序 asc (a-c)
*降序 desc(d-c)
* 查询学生的信息,按照英语成绩降序排序,如果英语成绩相同,按照语文降序.
select * from exam order by english desc, chinese desc;
* 查询姓李的学生的信息,同时按照英语升序排序.
select * from exam where name like '李%' order by english asc; *聚合函数
sum():计算的是列的值
count()
max()
min()
avg()
null+任意数都是null
有成绩为null时,可以使用ifnull(English,0)(把英语为null的成绩赋值为0)
*分组
* 一对一的关系的建表原则:
* 唯一外键对应:假设一对一的双方是一对多的关系.在多的一方创建外键执向一的一方的主键. 需要在外键上添加一个unique约束.
* 主键对应:将一对一的双方的主键建立映射. *使用SQL创建一对多的关系的约束
* 约束:用来保证数据的完整型.
* 多表约束:外键约束!!!
* 给orders表中的cid添加外键约束.(关联)
alter table orders add foreign key (cid) references customer(cid);
外键由Java程序维护,关联后只能先删除关联的id,然后删除主键id
*多表的查询
多表的查询的方式
交叉连接
select * from a,b --获得是两个表的笛卡尔积
内连接 inner join --inner可以省略 得到两个表的交集
*显示内连接:select * from A inner join B on 条件;
*隐式内连接:
外链接 左外链接,得到左侧所有和右侧的交集
外连接:outer join -- outer 可以省略
* 左外连接:left outer join -- select * from A left outer join B on 条件;
* SELECT * FROM customer c LEFT OUTER JOIN orders o ON c.cid = o.cid;
* 右外连接:right outer join -- select * from A right outer join B on 条件;
* SELECT * FROM customer c RIGHT OUTER JOIN orders o ON c.cid = o.cid;
先使用外连接,不行再使用没连接,最后才使用交叉连接
*多表查询的子查询
*一个SQL语句查询的过程中需要依赖另一个查询语句.
SELECT * FROM customer c,orders o WHERE c.cid = o.cid AND c.cid IN (SELECT cid FROM orders WHERE addr LIKE '海淀%');