在咱们传智播客学习就是好,老师讲的那些东西一听就懂,讲的真仔细啊,那学习气氛,是集体的气氛。传智播客在业界的口碑很不错的,这不是浪得虚名,是拿自己的付出打拼出来的,这口碑里面有多少得心血汗水在里面,因为学校的每一位领导每一位老师都是在用心去做事去任教,我的命运此次在传智播客改变,是传智播客给力我腾飞的翅膀,让我又能力去蓝天飞翔,而且飞的比谁都高,比谁都远,传智播客的老师们,你们辛苦了!!!!!
开始讲数据库啦,给大家晒晒吧
什么是数据库? 就是一个文件系统,通过标准SQL语言操作文件系统中数据 ---- 用来存放软件系统的数据
Oracle 甲骨文公司,专门数据库厂商他收购了BEA 、SUN、MySQL ------- oracle是收费大型数据库 ,用于任何系统任何平台
MySQL 早期是开源免费数据库产品,LAMP组合 Linux + Apache + MySQL + PHP 完全开源免费
,自从mysql被oracle收购后,从6.0开始出现收费版本
DB2 IBM数据库产品 大型收费数据库 websphere服务器一起使用
SYBASE 中等规模数据库 收费 PowerDesigner 数据库建模工具
SQL Server 微软公司数据库产品 收费中等规模数据库 ,操作系统要求是windows 结合.net 一起使用
Java开发者主要使用 MySQL 、Oracle、DB2 三种数据库
创建数据库 会为每个软件系统创建单独数据库
SQL语句分类 按功能(定义、操纵、控制、查询)分类
DDL 数据定义语言,定义表、库、视图
DML 对数据表记录 增加、修改和删除操作
DCL 授权、事务控制、条件判断
DQL (不是W3C组织 给出分类) 数据表记录查询
MySQL 安装配置:
1.安装
选择自定义安装
MySQL Server 默认位置 c:\program files\mysql目录
Server Data File 数据文件 C:\Documents and Settings\All Users\Application Data\MySQL 目录
安装后进行mysql配置
1) 配置mysql 默认字符集
默认latin1 等价于 ISO-8859-1 改为 utf8
2) Include Bin Directory in Window Path 将mysql/bin 目录配置环境变量path ---- 勾选
3) 输入超级管理root 密码
测试mysql是否安装成功 启动cmd窗口 输入 mysql -u root -p 回车 输入密码 123 ==== 出现 mysql> 安装成功
2.重置root密码
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 服务
密码修改完成
MySQL 服务器内部存储结果
一个数据库服务器可以创建多个数据库
一个数据库可以创建多张数据表
每张数据表 用来保存 数据记录
use 数据库名;//切换到使用的数据库
desc 表名;查看表结构
操作数据表
1.创建数据库
(1)语法 : create database 数据库名称 ;
复杂写法 create database 数据库名称 character set 字符集 collate 比较规则
create database 数据库名字 ;//创建一个数据库
create database 数据库名字 character set 字符集;//设置字符集
create database 数据库名字 character set 字符集 collate 比较方式;
创建一个名称为mydb1的数据库。 create database mydb1;; (创建数据库采用数据库服务器默认字符集 )
创建一个使用utf8字符集的mydb2数据库。 create database mydb2 character set utf8;
创建一个使用utf8字符集,并带校对规则的mydb3数据库。create database mydb3 character set utf8 collate utf8_bin;
(2)查询数据库
show databases; ----- 查看所有数据库
show create database 数据库名; ------ 查看数据编码集
(3)删除数据库
语法 :drop database 数据库名称;
(4)修改数据库编码集
语法:alter database 数据库名称 character set 字符集 collate 比较规则;
修改mydb2字符集为gbk; alter database mydb2 character set gbk;
切换当前使用数据库: use 数据库名称
查看当前正在使用数据库: select database();
2.创建数据库表
MySQL 常用数据类型
java 中 char String ----- mysql 中字符串型 char varchar* char是定长 varchar是变长
java 中 byte short int long float double ----- mysql 中数值类型 TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
java 中 boolean ---- mysql 逻辑性 bit 存放一位数值 0 或者1
java 中 Date ----- mysql 日期类型 date (只有日期) time(只有时间) datetime(日期时间都有) timestamp(日期时间都有 )*
datetime和timestamp 表现形式上完全相同,区别就在于timestamp 在数据库可以自定更新(当前时间)
java中 大数据类型 inputStream 二进制文件 Reader 文本文件 ------- mysql 大数据类型 blob(存放大二进制数据)
text(存放大的文本文件) * tinyblob tinytext 255字节 blob text 64KB mediumblob mediumtext 16MB longblob longtext 4GB
1、数据表的创建
语法:create table 表名(列名 类型(长度),列名 类型(长度)... );
一个数据表 可以存在很多列,每列具有类型和长度
* 创建表时没有指定 字符集,将采用数据库默认字符集
* 创建表之前 必须使用use db 语法指定操作数据库
一个java类 对应数据库中一张数据表,一个java对象 对应数据表中一条数据记录
2.查看表:
desc 表名;
创建day12 数据库 create database day12;
切换到day12 数据库 use day12;
3.数据表结构修改
1) 增加列 语法: alter table 表名 add 列名 类型(长度) 约束;
2) 修改现有列类型、长度和约束 语法:alter table 表名 modify 列名 类型(长度) 约束;
3) 修改现有列名称 语法:alter table 表名 change 旧列名 新列名 类型(长度) 约束;
4) 删除现有列 语法:alter table 表名 drop 列名 ;
5) 修改表名 rename table 旧表名 to 新表名;
6)删除表 drop table 表名;
* 修改表的字符集:alter table student character set utf8;
4.数据表删除
语法:drop table 表名;
约束:
主键约束:primary key 信息记录某个字段可以唯一区分其他信息记录,这个字段就可以是主键 (唯一 非空) 如果主键约束类型为 数值型 int bigint ,添加auto_increment自动增长
唯一约束:unique 该字段的值不允许重复 * 一张表中可以有很多个唯一约束,只能有一个(两个)作为主键约束
非空约束:not null 非空约束 not null :该字段的值不能为空
列子:创建一个表
创建一个表:
create table employee (
id int,
name varchar(20),
gender varchar(20),
birthday date,
entry_date date,
job varchar(30),
salary double,
resume longtext
);
3.往数据库表中添加数据
1.insert增加数据
insert into 表名(列名,....) values (值,....);增加数据 注意key 与value类型的对应,
注意事项
1) 插入值 类型必须和 列类型匹配
2) 值长度不能超过 列定义长度
3) 值的顺序和 列顺序对应
4) 字符串和日期型值 必须写 单引号
5) 插入空值 可以写 null
默认cmd是以gbk存储数据的,而mySql的配置客户端码表是utf-8,服务器就会以utf-8解码,如果指定gbk,那么服务器就会以gbk解码
存中文数据
查看系统所有字符集 : show variables like 'character%';
解决办法:修改客户端字符集为gbk
MYSQL中共有6个地方字符集 :client connetion result 和客户端相关 、database server system 和服务器端相关
第一种:
当前窗口临时修改 set names gbk ;
* 只对当前窗口有效,关闭后就会失效
第二种:去mysql目录下修改my.ini配置文件
[mysql] 修改客户端配置
[mysqld] 服务器端配置
修改客户端字符集 [mysql] 字符集为gbk default-character-set=gbk
编码;当前窗口才有用,mysql/myini文件中[mysql]客户端配置[mysqld]服务器配置,修改客户端的编码为gbk
2.delete删除数据
where的运算符 :
比较:
> < <= >= <> =
between and 在指定区间的值
in(set) 显示满足列表中的值 (100,200...)
like ‘张%’%代表一个或多个任意字符 ‘张_’_代表一个字符
is null 判断是否为空
逻辑:
and 多个条件相同时成立
or 多个条件任一成立
not 不成立
delete from 表名 where如果不加条件删除所有表数据
如果要删除表中所有数据记录,使用 truncate table 表名; 等价于 delete from 表名;
试题:如果使用delete删除表中所有记录和使用truncate table 表名 删除表中所有记录 有何不同 ?
truncate 删除数据,过程先将整个表删除,再重新创建
delete 删除数据,逐行删除记录
* truncate 效率要好于 delete
truncate 属于DDL ,delete 属于DML ======== 事务管理只能对DML 有效 ,被事务管理SQL语句可以回滚到SQL执行前状态
(也就是别删除的数据还是可以再恢复的)
删除表中名称为’zhangsan’的记录。 ------ delete from 表名 where name='zhangsan';
删除表中所有记录。----- delete from 表名; (可以事务回滚)
使用truncate删除表中记录。 ---- truncate table 表名;使用truncate删除表中记录,数据无法在恢复
3.update更新数据
update 表名 set 列=value where=条件表达式;如果不加where条件那么修改的是所有列
4.select查询数据
select * form 表名。查看表中所有的的数据
select 列名,... from 表名;查询指定的列名
select distinct 列名 from exam; 查询所有列并过滤完全重复的数据
select 列名,列名+5,列名+5,列名+5 from exam;所有列都加5分,返回
select 列名 as 别名 from 表名;修改列名为指定别名
select * from 表名 where 列名 between 条件 and 条件;查询在指定区间的数据
select * from 表名 where 列名 in(80,90);查询显示满足列表中的值的数据
select * from 表名 where 列名 like '赵%';'赵_' 代表一个或多个任意字符 ‘张_’_代表一个字符
select * from 表名 where 列名 is not null;查找指定列名不等于null的数据 is null 代表等于空
select 列名,列名+列名.. as 别名 from exam; 查询指定列名,并将指定列相加,在起一个别名返回
select * from 表名 order by 列名 asc|desc ; ---- asc升序 desc降序 默认asc升序
select * from exam order by 列名+列名+列名 desc; 从高到低(降序)的顺序输出
4. show databases ;显示所有数据库
show database();显示当前使用的数据库
show tables;显示所有表
show create table 表名;查看键表语句和字符集
use 数据库名;//切换到使用的数据库
desc 表名;查看表结构
quit 退出MySQL