刘国斌 bjliugb@tedu.cn
MySql01
课程介绍
[图片上传失败...(image-2a1576-1519536729651)]数据库简介
之前通过流操作文件的方式存储数据弊端:
- 效率低
- 不管是存还是取都比较麻烦
- 一般只能存储小量数据
- 只能存储文本数据
什么是DB
DataBase:数据库
数据库是一个文件集
什么是DBMS
DataBaseManagementSystem:数据库管理系统
是管理数据库文件的软件
数据库分类
- 关系型数据库
经过数学理论验证可以存储现实生活中各种关系的数据库,如果存储的数据之间有关系会在数据库中以表的形式把相关数据封装起来 - 非关系型数据库
有多种存储数据的方式如Redis(非关系型数据库的一种)
redis是通过Key-Value
主流关系型数据库介绍
-MySql
系统:windows Linux
背景故事:08年被Sun 09年被Oracle收购 Oracle 开源 卖服务
发展:MySql5.5 使用了Oracle数据库的核心技术 性能提高30%,但因为影响了Oracle导致mysql面临闭源,MySql面临闭源后 一些大牛程序员从Orecle出来 创建了MariaDB数据库
-Oracle
windows Linux Oracle公司 拉里艾莉森32 执行效率最高 性能最好 最贵 闭源
-DB2
IBM 大型数据库 Linux和unix操作系统 闭源 收费软件
-SQL Server
微软公司 windows系统 市场排名第三 主要被.net(C#)开发的网站所使用
-Sqlite
轻量级数据库 ios android 或一些嵌入式设备上,很小只有几十k
开源和闭源
-开源:免费 公开源代码 大牛程序员会无偿的去维护和升级
-闭源:收费 不公开源代码 大牛程序员会攻击
安装MySql数据库
windows安装具体步骤参见安装文档
注意端口号为3306 编码utf8
SQL
什么是SQL
Structured Query Language:结构化查询语言
Sql是执行在客户端(windows在命令行下执行,linux在终端执行)下或者通过java代码执行在JDBC
打开客户端并登陆mysql
linux下在任何位置直接打开终端即可
windows下使用各种客户端打开
登陆mysql命令 直接在终端下执行以下代码 然后输入密码
mysql -uroot -p
退出:exit;
SQL语句规范
- 以;(分号)结尾
- 关键字之间有空格 通常一个空格 但是有多个也没问题
- sql语句中可以添加换行
- SQL 不区分大小写
数据库相关SQL
-
查看所有数据库命令:
show databases;
-
创建数据库 通常一个项目只对应1个数据库
格式:create database 数据库名称;create database db1;
指定字符集的创建格式 :create database 数据库名称 CHARACTER SET utf8;
create database db2 character set gbk;
-
查看数据库详情
-格式:show create database 数据库名称;show create database db1;
-
删除数据库
-格式:drop database 数据库名称;drop database db2;
-
选中数据库
use db2;
表相关SQL
什么是表
-表是数据库中的数据组成单位 类似于Java中的对象
表中的字段 对应对象中的属性
创建表
格式: create table 表名 (字段1名 字段类型,字段2名 字段类型);
create table person (name varchar(10),age int);
创建表的原理:
-在客户端中写完创建表的sql语句后客户端会把sql语句交给DBMS(MySql)DBMS解析后 会在数据库中创建语句中的表 和表中的字段
[图片上传失败...(image-9dbdaf-1519536729651)]
查看所有表
show tables;
查看表结构
-格式:show create table 表名;
show create table person;
-格式: desc 表名
表的引擎
InnoDB:支持数据库的高级处理包括 事物 外键等 默认是innodb
Myisam:只支持数据的基本存储
创建表时指定表的字符集 和 引擎
-格式
create table person (id int,name varchar(10)) engine=myisam charset=utf8;
练习:创建5个数据库 在每个数据库里面创建1个表 然后删除数据库
练习 创建学生表
create table student (
id int,
name varchar(10),
chinese int,
math int,
english int
);
对已经创建好的表进行修改
-
修改表名称
-格式: rename table 原名 to 新名;rename table student to t_student;
-
修改表的属性
-格式: alter table 表名 engine=myisam charset=gbk;alter table t_student engine=myisam charset=gbk;
-
添加表的字段
-在最后添加
-格式:alter table 表名 add age int;alter table student add age int;
-在最前面添加
-格式:alter table 表名 add fatherAge int first;alter table student add fatherAge int first;
-在某个字段之后添加
-格式:alter table 表名 add fatherName varchar(10) after fatherAge;alter table student add fatherName varchar(10) after fatherAge;
-
删除表字段
-格式: alter table 表名 drop 字段名;alter table student drop fatherAge;
-
修改字段名和类型
-格式: alter table 表名 change 原字段名 新字段名 新字段类型;alter table student change age fatherAge varchar(10);
-
修改类型和顺序
-格式1: alter table 表名 modify 字段名称 新字段类型 after 字段名
-格式2: alter table 表名 modify 字段名称 新字段类型 firstalter table student modify fatherAge int first; alter table student modify fatherAge int after id;
删除表
-格式: drop table 表名
drop table student;
练习:
1.创建一个hero表 有 id name type 三个字段
create table hero (id int,name varchar(10),type varchar(10));
2.修改hero表的属性 引擎为myisam 编码属性为utf8
alter table hero engine=myisam charset=utf8;
3.给hero表添加一个money int 字段 添加在name字段的后面
alter table hero add money int after name;
4.修改type字段 名称修改为 hero_type varchar(30)
alter table hero change type hero_type varchar(30);
5.修改hero表名为heros
rename table hero to heros;
6.修改name字段到最后面
alter table heros modify name varchar(10) after hero_type;
7.把money字段删除
alter table heros drop money;
8.删除hero表
drop table heros;
数据相关SQL
create table student(
id int,
name varchar(20),
chinese int,
math int,
english int
);
-
插入语句
-全表插入格式:insert into 表名 values(值1,值2,值3....);
全表插入values后面的值的数量和顺序必须和表中字段的数量和顺序一致insert into student values(1,'lisi',18,26,88);
-指定字段插入格式:insert into 表名 (字段名1,字段名2)values(值1,值2);
insert into student (name,math)values('张三',90);
-批量插入
-全表批量
insert into student values(10,'刘备',10,20,30),(11,'关羽',12,34,22),(12,'张飞',3,4,2);
-指定字段批量insert into student (id,name,english)values(20,'孙悟空',0),(21,'猪八戒',90),(22,'沙师弟',5);
-
查询语句
-格式: select 字段1, 字段2,字段3... from 表名
-如果字段位置写* 代表查询所有的字段select * from student; select id,name,math from student;
-
更新(修改)语句
-修改全表格式:update 表名 set math=100;update student set math=100;
-添加条件修改格式:
update 表名 set math=50 where id=10;update student set math=50 where id=10;
-
删除语句
-删除指定条件的数据格式:delete from 表名 where id=10;delete from student where id=10; delete from student where chinese is null;
-删除表中所有数据
delete from student;
练习操作数据语句:
1.创建hero表 id 名字 类型 money
create table hero (id int, name varchar(10), type varchar(10),money int);
2.插入以下5条数据
insert into hero values(
1,'诸葛亮','法师',18888),
(2,'孙悟空','打野',18888),
(3,'小乔','法师',13888),
(4,'黄忠','射手',8888),
(5,'刘备','战士',6888);
3.修改所有18888的价格为28888
update hero set money=28888 where money=18888;
4.修改所有法师为 战士
update hero set type='战士' where type='法师';
5.删除价格为6888
delete from hero where money=6888;
6.修改孙悟空为猪八戒
update hero set name='八戒' where name='孙悟空';
7.删除所有数据
delete from hero;
练习1:
- 创建员工表emp
- 创建部门表dept;
练习2:
-
给dept表插入4条数据
10,'ACCOUNTING','NEW YORK' --财务部 纽约
20,'RESEARCH','DALLAS' --研究部 达拉斯市
30,'SALES','CHICAGO' --销售部 芝加哥
40,'OPERATIONS','BOSTON' --运营部 波士顿
练习3:
- 创建 mydb 数据库,使用 utf8 编码
- 创建 t_item 商品表
- 在 t_item 表插入商品数据
- 修改 id 是7的商品,修改库存量为20
- 删除商品 7
eclipse SQL客户端
1.先准备mysql-connector-java-5.1.6.jar
2.打开eclipse 打开window-》showView->Other找到DataSource Explorer 和 SQLResults 显示出来
3.在DataSourceExplorer里面的DatabaseConnections 上右键 点击 New
4.在弹出窗口中找到MySql
5.点击下拉选项旁边的加号
6.在弹出页面中选中5.1 然后点击第二个选项卡(JarList) 点击clear All
7.点击AddJar 找到第一步下载的jar包
8.点击ok
9.在新页面中把URL:jdbc:mysql://localhost:3306/db1 最后的值修改为自己已存在数据库的名称
10.finish
11.在New MySQL(MySQL v.5.50)上右键点击 OpenSQLScrapbook
12.在type中选择 mysql5.1 在name 选择唯一的值 在database中选择 唯一的值
在此工具中不能操作数据库
乱码问题
1.数据库编码保证是utf8
2.表保证是utf8
3.windows的命令行默认编码为gbk 需要在命令行中先进入mysql执行 set names gbk;
4.修改mysql默认数据库的编码格式
windows: 在开始菜单中找到所有程序找到mariaDB里面的my.ini 在里面添加 character-set-server=utf8 即可