日期:2014-05-16  浏览次数:20592 次

day11 mysql基础及乱码问题

day11 -- day16 MySQL 数据库 练习SQL语句 JDBC编程

关系化数据模型?

常见关系化数据库有哪些?
收费产品
免费产品

Microsoft SQL Server : 微软公司产品,中等规模数据库 收费产品,运行在windows平台上 --- .net平台+SQLServer进行开发
Oracle :甲骨文公司产品,大型商业数据层,收费 运行在任何操作系统上 windows linux --- Oracle收购sun(Java) ---- Java +? Oracle
MySQL :最初是一个开源免费数据库产品 ,中小型数据库 ---- 互联网行业主流数据库? Mysql被Oracle收购后,Mysql6.0开始推出收费版本---- 企业主流5.X
SYBASE:收费,中型数据库,银行证券 ----- PowerDesigner PD (数据库设计建模软件)
HSQL : 迷你数据库 开源免费,纯java开发 ----- 被java开源框架内置使用
SQLITE : 嵌入式开发,Android 内部主要数据库 ---- 开源免费
DB2 : IBM产品 大型数据库 ---- BEA 被Oracle weblogic+ Oracle? ----- websphere + DB2

下载Mysql ----- Oracle网站、开源社区下载
版本:5.X版本(5.0 、5.5 )

安装MySQL
卸载
1、在控制面板 卸载mysql程序
2、手动删除mysql目录

安装
1、安装mysql ---- 修改安装路径
2、安装结束后,一定要对mysql进行配置
修改mysql默认字符集 Latin1(就是ISO-8859-1) ---- 设置utf-8
将mysql安装window服务 ---- 通过服务启动mysql数据库
将mysql/bin 放入环境变量path? ----- 勾选
设置mysql超级管理员 root 用户密码

3、安装mysql后,通过运行 services.msc
MySQL服务启动,mysql数据库启动了
* 在每次使用mysql之前必须启动mysql

4、在cmd创建 mysql -? 如果命令识别,证明mysql/bin 放入环境变量path
5、连接mysql数据 :
C:\Documents and Settings\seawind>mysql -u root -p
Enter password: ***


将root密码修改 abc
1、停止mysql服务
2、新建cmd窗口 输入 mysqld-nt --skip-grant-tables ----- 窗口阻塞,不要关闭
3、新建窗口登陆mysql 不需要输入密码
use mysql
update user set password = password('abc') where user='root' ;
4、关闭mysql服务窗口 ---- 打开任务管理器关闭mysqld-nt.exe
5、重启mysql服务

安装mysql后,自带两个数据库 mysql、test
mysql 存放数据核心数据 ----- 用户、权限 ...
test 练习数据库, 默认该数据库空的

mysql数据库组成
1、在mysql数据库软件内部创建使用多个数据库 database
2、在每一个数据库database中创建使用多个数据表 table
3、table存放数据记录,一条数据记录,对应java程序中一个对象
4、在数据库中存在很多用户,用户根据相应权限操作数据库或者数据表

SQL 结构化查询语言
1、非过程性语言 ----- 每一条SQL语句都是独立执行的,没有先后依赖关系
int a = 10;
int b = 20;
int c = a+b;
print(c) ;
上面程序典型过程性语言

2、官方提供数据库标准语言 ---- 任何数据库都必须支持SQL语法
* 每个数据都应该提供sql扩展,增强sql过程化编程

SQL分类:数据定义语言 DDL 、数据操纵语言 DML 、数据控制语言 DCL
有人将select查询语句自成一类 数据查询语言 DQL
DDL:数据定义语言,定义、修改、删除 数据库内部结构 ---- 例如 : 对数据库、数据表 以上操作
DML:数据操纵语言 ,对数据表记录 增加、删除、修改
DCL:数据控制语言 用户授权、if 、while、事务管理
DQL:数据查询语言 select查询语句


SQL语句使用:数据库操作SQL 、数据表操作SQL 、数据记录操作SQL

第一部分:数据库 SQL
1、数据库创建 create database 数据库名称;
创建一个名称为mydb1的数据库 ----- create database mydb1;
* 通过show databases; 查看所有数据库

在创建数据库时,为数据库指定字符集及字符集比较方式 ---- 语法: create database 数据库名称 character set 编码集 collate 比较方式;
* 如果不指定字符集和比较方式,使用默认 --- 修改utf-8

---------------------------------------
mysql安装目录
bin ---- mysql执行程序
docs ---- 文档
share --- 各国编码信息
data ---- 存放mysql 数据文件
* 每个数据库 创建一个同名文件夹,.frm 存放table表结构、ibdata1存放mysql中所有数据表数据记录
* 在数据库每个文件夹中存在db.opt ---- 保存数据默认编码集
* win7 数据库文件夹默认?? C:\ProgramData\MySQL\MySQL Server 5.5\data

---------------------------------------

创建一个使用utf8字符集的mydb2数据库 -----? create database mydb2 character set utf8;
创建一个使用utf8字符集,并带校对规则的mydb3数据库 ----- create database mydb3 character set utf8 collate utf8_unicode_ci;
* 什么是校对规则? 用于排序? 对张三和李四排序,按照拼音排序、按照笔画排序,按照名字数量
* 一个字符集对应很多校对规则

2、查看和删除数据库
查看当前数据编码集 show create database 数据库名;
查看前面创建的mydb2数据库的定义信息 ----- show create database mydb2;

删除数据库:drop database 数据库名称;
删除前面创建的mydb1数据库 ----- drop database mydb1;

3、修改数据库编码
语法: alter database 数据库名称 character set 编码集;

将mydb2 数据库编码集设置gbk -------------? alter database mydb2 character set gbk;

4、切换数据库
如果想对数据库中数据表和数据记录进行操作,必须先切换到指定数据库 ---- use 数据库名称;
查看当前正在使用数据库 select database();

第二部分:数据表table ---- 表结构SQL
1、创建数据表 create table 表名(列名 类型(长度),列名 类型(长度) ...) character set 编码集;
* 如果不设置编码集,数据表将采用数据库默认字符集

create table users(
?? id int,
?? name varchar(40),
?? password varchar(40),
?? birthday date
);
* 所有数据类型中,除了char 、varchar 必须指定长度,其它类型默认长度


数据库类型
1) 整数类型 tinyint (byte)? smallint(short) int(int) bigint(lo