MySQL与JDBC
一、对数据库的操作
启动数据库 net start mysql (若显示权限不足需要进入在管理员界面操作)
进入数据库目录下的bin文件夹
进入数据库 mysql -u root -p //u是用户名p是密码,默认没有密码
1.创建一个库
create database web08; //创建默认格式的数据库
create database web08_01 character set gbk; //创建带有编码的数据库
查看所有数据库:输入show databases;查看已有数据库查看是否创建成功
查看单个数据库的编码:show create database web08_01;
2.删除一个库
drop database web08; //删除数据库
3.使用数据库
use web08;
4.查看当前正在操作的库
select databaase();
二、对数据库表的操作
1.创建一张表
create table name(
字段名 类型(长度) [约束],
字段名 类型(长度) [约束],
字段名 类型(长度) [约束]
);
2.数据库表的操作
show tables; //查看数据库表
desc tablename; //展示表的结构
drop tablename; //删除数据库表
alter table tablename add 字段名 类型(长度) [约束] //添加列
alter table 表名 modify 要修改的字段名 //修改列的类型(长度、约束)
alter table 表名 change 旧列名 新列名 类型(长度) [约束] //修改列名
alter table 表名 drop 列名 //删除表的类
rename table 旧表名 新表名 //修改表的名称
show create table 表名 //查看当前表的编码
alter table 表名 character set 编码 //修改表的字符集
三、对数据库进行操作(修改)
1.插入记录
insert into 表名 (列名1,列名2,列名3...) values(值1,值2,值3...)
insert into 表名 value(值1,值2,值3...)
2.修改表记录
update 表名 set 字段名='值',字段名='值',字段名='值'... //不带条件的 会把所有该字段的值都改成这个值
update 表名 set 字段名='值',字段名='值',字段名='值'... where 字段名='值' //带条件的 只改动满足条件的
3.删除表记录
delete from 表名 where 条件 //带条件的
delete from 表名 //不带条件的
注意:用delete删除后UID不会重置
//delete与truncate的区别//
delete删除的时候是一条一条删除记录,它配合事务(transaction),可以将删除的数据找回。
truncate删除是将整个表摧毁,再创建一张一模一样的表,它删除的数据无法找回。删除后UID会重置,从1开始
4.查询操作
简单查询:
select [distinct] *|列名,列名 from 表名 [where 条件]
select * from 表名 //查询所有
select 列名,列名 from 表名 //查询列
select * from 表名 as 表别名; //使用表别名查询所有
select 列名 as 列别名 from 表名; //使用列别名查询列
select distinct(列名) from 表名; //去掉重复值(按照price)
select 列名,列名+10 from 表名; //将所有的价格加10进行显示
条件查询:
select * from 表名 where 列名='条件' //查询列名为条件值的列
select * from 表名 where 列名>值 //查询列中值大于给定值的列
select * from 表名 where 列名 like '值' //模糊查询(查询含有条件值的列)
select * from 表名 where 列名 in (值,值,值) //查询列中值为条件值的列
select * from 表名 where 列名 操作 '值' and 列名 '值' //查询同时满足两个条件的列
select * from 表名 where 列名 操作 '值' or 列名 '值' //查询满足任意两个条件之一的列
select * from 表名 where not 条件 //查询不满足条件的列
5.排序
select * from 表名 order by 列名 asc //列名升序排列
select * from 表名 order by 列名 desc //列名降序排列
select * from 表名 where 列名 like '值' order by 列名 desc //把满足条件的列降序排列
6.聚合
select sun(列名) from 表名; //获得值的总和
select avg(列名) from 表名; //获得值的平均值
select count(*) from 列名; //获得列的个数
注意:函数不统计null值
7.分组
select 列名,count(*) from 表名 group by 列名; //把列名相同的分成一组,并获得相同列名的个数
select avg(列名1) from 表名 group by 列名2 having avg(列名) 条件 //根据分组进行操作
四、外键
4.1外键相关
alter table 从表名 add [constraint] [外键名称](外键名称不能重复) foreign key(从表外键字段名) references 主表(主表的外键)//声明外键约束
//存在外键约束的时候无法删除主表的字段,要先删除外键约束才能对主表的字段进行删除
alter table 从表名 drop foreign key 外键名称//声明外键的时候使用了方括号内的内容时可以用这种方法来删除外键约束
//如果声明外键约束的时候省略了方括号内的内容则需先删除从表内相应外键的字段
/***也就是主表不能删除从表已经引用的记录***/
/***从表也不能添加主表中不存在的引用***/
/***所以外键可以保证字段的完整性***/
4.2多表查询
内连接:查询两个表的交集
左外连接:左表的全部及两个表的交集
右外连接:右表的全部及两个表的交集
select * from 表名 表名; //交叉连接查询(基本不会用到-得到的是两个表的乘积)
select * from 表名 表名 where 条件; //隐式内连接
select * from 表名 inner join 表名 on 条件; //显式内连接
select * from 表名 left outer join B on 条件; //左外连接
select * from 表名 riget outer join B on 条件; //右外连接
4.3子查询
select 列名 from 表名 where 条件 //一条SQL语句
select * from 表名 where 列名 = (select 列名 from 表名 where 条件) //一条SQL语句的结果作为另一条SQL语句语法的一部分(条件、结果、表等)
4.4分页查询
select * from 表名(每页有几条,要查第几页)