l MySQL 安装配置
卸载
在mysql安装目录 my.ini
datadir="C:/Documentsand Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/"
1) 在控制面板中卸载MySQL
2) 删除mysql 安装目录
3) 删除MySQL数据文件目录
重置密码
方法一:
在my.ini的[mysqld]字段加入:
skip-grant-tables
重启mysql服务,这时的mysql不需要密码即可登录数据库
然后进入mysql
mysql>use mysql;
mysql>update user set password=password('新密码') WHERE User='root';
mysql>flush privileges;
运行之后最后去掉my.ini中的skip-grant-tables,重启mysqld即可。
方法二:
不使用修改my.ini重启服务的方法,通过非服务方式加skip-grant-tables运行mysql来修改mysql密码
1) 停止mysql服务器 运行输入services.msc 停止mysql服务
2) 在cmd下 输入 mysqld --skip-grant-tables 启动服务器 光标不动 (不要关闭该窗口)
3) 新打开cmd 输入mysql -u root -p 不需要密码
use mysql;
update user set password=password('abc') WHERE User='root';
4) 关闭两个cmd窗口 在任务管理器结束mysqld 进程
5) 在服务管理页面 重启mysql 服务
密码修改完成
l MySQL存储结构
l MySQL数据库的备份与恢复
备份命令 mysql/bin/mysqldump 将数据库SQL语句导出
语法:mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径
例如: 备份day12数据库 --- c:\day12.sql
cmd > mysqldump -u root -p day12 > c:\day12.sql 回车输入密码
注意:不是在mysql窗口下输入,而是在cmd下输入命令
恢复命令 mysql/bin/mysql 将sql文件导入到数据库
语法: mysql -u 用户名 -p 数据库名 < 磁盘SQL文件路径
***** 导入SQL 必须手动创建数据库 ,SQL不会创建数据库
例如:将c:\day12.sql 导入 day12数据库
cmd > mysql -u root -p day12 < c:\day12.sql 回车密码
补充知识:恢复SQL也可以在数据库内部执行 source c:\day12.sql
l 多表设计原则 :所有关系数据只能存在三种对应关系 (一对一、一对多、多对多)
多对多关系 : 雇员和项目关系
一个雇员可以参与多个项目
一个项目可以由多个雇员参与
建表原则:必须创建第三张关系表,在关系表中引用两个实体主键 作为外键
关系表中每条记录,代表一个雇员参与了一个项目
一对多关系: 用户和博客关系
一个用户可以发表多篇博客
一个博客只能由一个作者
建表原则:不需要创建第三方关系表,只需要在多方添加 一方主键作为 外键
一对一关系 : 这种关系很少见到 负责人和工作室
一个负责人 管理一个工作室
一个工作室 只有一个负责人
建表规则:在任一方添加对方主键 作为外键
l 多表查询――笛卡尔积
将A表中每条记录 与 B表中每条记录进行 匹配 获得笛卡尔积
select * from emp;
select * from dept;
select * from emp,dept; 显示结果就是笛卡尔积
笛卡尔积结果就是两个表记录乘积 例如A 表3条 B表4条 ---- 笛卡尔积 12条
笛卡尔积结果是无效的,必须从笛卡尔积中选取有效的数据结果 !!!
内连接
select * from a,b where a.a_id = b.a_id;
* 内连接查询结果条数 一定小于 两个表记录较少哪个表 ----- 例如 A表3条 B表5条 ---- 内连接结果条数 <= 3
l 数据库完整性约束
primary key 主键、unique 唯一、not null非空 、foreign key 外键、check 条件约束(mysql不支持,oracle中使用)
数据库启动和关闭。
* cmd > net start mysql
* cmd > net stop mysql
* 显示当前数据库服务器中的数据库列表
* mysql> show databases;
* 使用数据库
* mysql> use 库名;## 注意:只有在命令创建时,才需要手动使用数据库
* 显示当前数据库中的数据表
* mysql>show tables;
* 显示当前所使用的数据库名称
* mysql> select database();
* 显示当前数据库的状态
* mysql> status;
* 显示当前数据库中某表的表结构 (DESCRIBE(describe) )
* mysql> desc user;
* 显示所支持的字符集
* mysql > show character set;
mysql -uroot -pasa 登陆mysql
Show databases; 展示数据库
Use database_name; 打开指定数据库
Show tables; 显示数据库里面的表
select * from table_name 查询表的内容
字段:
* 添加字段:mysql > alter table 表名 add column 字段描述;
* 删除字段:mysql > alter table 表名 drop column 字段名称;
Create database database_name; 添加数据库
Drop database database_name;删除数据库
Create table table_name(
Id int,
Name varchar(32)
);
创建表,前几行再后面加单引号,定义最后一行属性不需要加任何符号,最后结尾处加“ ; ”。
Drop table table_name; 移除表
Insert:
Insert into table_name(属性1,属性2,属性。。。) values(' ', ' ', ' ' );
Update
Update table_name set 属性=123 where id=XXX;
Delete
Delete from table_name; 清空整个表的内容,但是保留表名。
Select 查询的内容 from 表 where 条件 group by 以XX分组 having 分组的条件 order by desc,asc 排序。
mysql> select age from users order by age asc; 按照年龄排序
mysql> select distinct age from users order by age asc;# 去重复
Group by 应用:
mysql> select classes ,sum(count)/count(id) as classAvg from users group by classes having classAvg <60;
Show create table table_name 显示创建表的编码情况。
Show variables like '%char%' 显示数据库编码环境变量
解决方法:预先设置 set names gbk;
主键约束:
Id int primary key auto_increment 自动增长列
constraint primary key(字段名称)
alter table 表名 add constraint primary key(字段1,字段2,...);
还有外键约束,没时间一步步的敲,待结束完JDBC再继续整理。脑地不给力,容易忘