- 通过IO流自己对数据进行操作需要写
- 大量的代码,而且不能保证程序的执行效率,IT行业中凡是很常用实现又很麻烦的业务,通常会有完整的解决方案,数据库软件就是对数据增删改查的解决方案,程序员只需要学习如何使用数据库软件即可。
- 什么是DBMS:
DataBase数据库Management管理System系统
(数据库管理软件
),常见的DBMS: MySQL、Oracle、DB2、SQLserver等
1. MySQL: Oracle公司产品,
08年被SUN公司收购,
09年Sun公司被Oracle收购,担心MySQL被闭源,原MYSQL创始人们离开Oracle创建了MariaDB,市场占有率排名第一。
2. Oracle: Oracle公司产品,市场占有率排名第二,性能最高,价格最贵,老板拉力
.艾莉森。
3. SQLServer: 微软公司产品,市场占有率排名第三,主要应用在微软的整套解决方案中
整套解决方案: 开发语言
+操作系统
+web服务软件
+数据库软件
4. DB2: IBM公司产品,一般应用在IBM整套解决方案中
5. SQLite: 轻量级数据库。安装包只有几十k,应用在移动设备和嵌入式设备中
- 开源和闭源区别:
1. 开源: 开放源代码,免费,盈利方式:靠提供服务赚钱,有技术大牛无偿维护升级。
2. 闭源:不公开源代码,收费,盈利方式:靠卖产品和卖服务赚钱,有技术大牛攻击,不过公司有钱可以养一帮人维护。
- Structured Query
Language:结构化 查询 语言 ,用于程序员和数据库之间的交流,学习数据库主要学习的就是这门语言
1. window:
2. linux:在空白区域右键
-》终端
-》mysql
-uroot
-p 回车
-》输入密码(没有密码直接敲回车)敲回车
3. 退出指令:
exit
1. 查询所有数据库
- 格式:
show databases;
2. 创建数据库并指定字符集
- 格式:
create database 数据库名
character set utf8
/gbk
;
create database db1
character set utf8
;
show databases;
create database db2
character set gbk
;
3. 查看数据库详情
- 格式:
show create database 数据库名
;
show create database db1
;
4. 删除数据库
- 格式:
drop database 数据库名
;
drop database db1
;
5. 使用数据库
- 格式:
use 数据库名
;
use db1
;(前提db1已经存在
)
- 练习:
1. 分别创建mydb1和mydb2数据库 第一个是gbk第二个是utf8
2. 创建完后查询两个是不是都存在
3. 查询两个字符集是否正确
4. 先使用mydb1再使用mydb2
5. 删除两个数据库
- 表相关的各种操作必须已经使用了数据库
create database db1
character set utf8
;
use db1
;
1. 创建表
- 格式:
create table 表名
(字段名 类型
,字段名 类型
);
create table person
(name
varchar(10),age
int);
- 练习: 创建学生表student 字段有: 学号id 姓名name 语文chinese 数学math 英语english
create table student
(id
int,name
varchar(10),chinese
int,math
int,english
int);
2. 查询所有表
- 格式:
show tables;
3. 查看表详情
- 格式:
show create table 表名
;
show create table student
;
4. 创建表指定字符集
- 格式:
create table 表名
(字段名 类型
,字段名 类型
) charset=utf8
/gbk
;
create table t1
(name
varchar(10),age
int)charset=gbk
;
show create table t1
;
5. 查看表字段
- 格式:
desc 表名
;
desc student
;
6. 删除表
- 格式:
drop table 表名
drop table t1
;
7. 添加表字段
- 最后添加格式:
alter table 表名
add 字段名 类型
;
alter table person
add sal
int;
- 最前面添加格式:
alter table 表名
add 字段名 类型
first;
alter table person
add id
int first;
- xxx的后面添加格式:
alter table 表名
add 字段名 类型
after xxx
;
alter table person
add gender
varchar(10) after name
;
8. 删除表字段
- 格式:
alter table 表名
drop 字段名
;
alter table person
drop gender
;
9. 修改表字段名和类型
- 格式:
alter table 表名 change 原名 新名 新类型
;
alter table person change sal gender
varchar(10);
1. 创建数据库mydb1 字符集为utf8 并使用该数据库
create database mydb1
character set utf8
;
use mydb1
;
2. 在mydb1中创建员工表emp 字段有name 字符集为utf8
create table emp
(name
varchar(10)) charset=utf8
;
3. 添加表字段age在最后面
alter table emp
add age
int;
4. 添加id字段在最前面
alter table emp
add id
int first;
5. 添加sal字段在name的后面
alter table emp
add sal
int after name
;
6. 修改字段sal为salary
alter table emp change sal salary
int;
7. 删除age字段
alter table emp
drop age
;
8. 删除emp表
drop table emp
;
9. 删除数据库
drop database mydb1
;
create database newdb1
character set utf8
;
use newdb1
;
create table emp
(id
int,name
varchar(10),age
int);
1. 插入数据
- 全表插入格式:
insert into 表名
values(值
1,值
2,值
3);
insert into emp
values(1,'Tom',18);
- 指定字段格式:
insert into 表名
(字段名
1,字段名
2)values(值
1,值
2);
insert into emp
(name
,age
) values('Jerry',15);
- 批量插入数据格式:
insert into emp
values(4,'悟空',500),(5,'八戒',300),(6,'沙僧',200);
insert into emp
(name
,age
) values('刘备',25),('关羽',23),('张飞',18);
- 中文问题:
insert into emp
values(3,'刘德华',25);
如果有同学执行以上
SQL语句报错的话执行以下
SQL语句即可
set names gbk
;
2. 查询数据
- 格式:
select 字段信息
from 表名
where 条件
;
- 举例:
1. 查询所有的员工姓名
select name
from emp
;
2. 查询所有员工的所有信息
select * from emp
;
3. 查询年龄小于
100岁的员工姓名和年龄
select name
,age
from emp
where age
<100;
4. 查询悟空的信息
select * from emp
where name
='悟空';
3. 修改数据
- 格式:
update 表名
set 字段名
=值
,字段名
=值
where 条件
;
- 举例:
1. 修改悟空名字为孙悟空
update emp
set name
='孙悟空' where name
='悟空';
2. 修改刘备年龄为
50岁
update emp
set age
=50 where name
='刘备';
3. 修改
30岁以下的员工年龄为
10岁
update emp
set age
=10 where age
<30;
4. 删除数据
- 格式:
delete from 表名
where 条件
;
- 举例:
1. 删除Tom
delete from emp
where name
='Tom';
2. 删除年龄
10岁的员工
delete from emp
where age
=10;
3. 删除所有数据
delete from emp
;
1. 创建hero表 id 名字name 类型
type 价格money
create table hero
(id
int,name
varchar(10),type varchar(10),money
int);
2. 保存以下数据
insert into hero
values
(1, '诸葛亮', '法师', 18888), (2, '周瑜', '法师', 13888),
(3, '孙悟空', '打野', 18888), (4, '小乔', '法师', 13888),
(5, '黄忠', '射手', 8888), (6, '刘备', '战士', 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. 删除价格低于
15000的英雄
delete from hero
where money
<15000;
8. 添加性别gender字段在name的后面
alter table hero
add gender
varchar(10) after name
;
9. 修改所有英雄的性别为男 udpate hero
set gender
='男';
10. 删除所有数据
delete from hero
;
11. 删除表
drop hero
;
1. 整数:
int(m
) 和
bigint(等效java中的long)
,m代表显示长度 需要结合zerofill关键字使用
create table t_int
(id
int,age
int(10) zerofill
);
insert into t_int
values(1,20);
select * from t_int
;
2. 浮点数:
double(m
,d
) m代表总长度 d代表小数长度 m
=5 d
=3 23.456,超高精度浮点数
decimal(m
,d
) 只有涉及到超高精度运算时使用
3. 字符串:
- char(m
): 固定长度 m
=5 "abc" 所占长度为
5,执行效率略高 ,最大长度
255
- varchar(m
):可变长度m
=5 "abc" 所占长度为
3,节省空间,最大长度
65535 超过
255建议使用
text
- text(m
):可变长度 最大长度
65535
4. 日期:
- date: 只能保存年月日
- time: 只能保存时分秒
- datetime:年月日时分秒 默认值
null 最大值
9999-12-31
- timestamp:时间戳 默认值当前系统时间 最大值
2038年
1月
19号
create table t_date
(t1
date,t2
time,t3
datetime,t4
timestamp);
insert into t_date
values('2019-9-5',null,null,null);
insert into t_date
values(null,'17:37:28','2019-9-5 17:37:28',null);
1. 数据库相关
SQL
- show databases;
- create database db1
character set utf8
/gbk
;
- show create database db1
;
- drop database db1
;
- use db1
;
2. 表相关
SQL
- create table t1
(id
int,name
varchar(10)) charset=utf8
/gbk
;
- show tables;
- show create table t1
;
- desc t1
;
- drop table t1
;
- alter table t1
add age
int first/ after xxx
;
- alter table t1
drop age
;
- alter table t1 change 原名 新名 新类型
;
3. 数据相关
SQL
- insert into t1
(字段名
1,字段名
2) values('值1','值2'),('值1','值2');
- select 字段信息
from t1
where 条件
;
- update t1
set xxx
=xxx
where 条件
;
- delete from t1
where 条件
;
4. 数据类型
- 整数:
int和
bigint
- 浮点数:
double(m
,d
) m总长度 d小数长度 超高精度
decimal(m
,d
)
- 字符串:
char 固定长度 最大
255 varchar 可变长度最大
65535 超高
255建议使用
text text 可变长度最大
65535
- 日期:
date time datetime 最大
9999-12-31 默认
null timestamp最大
2038-1-19 默认值当前系统时间
html
css
JavaScript
jQuery
Bootstrap
MySQL
个人文件里有很多粉丝专享文件,教程和源码