版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
###数据库
- 之前学习的通过IO流操作文件的形式对数据进行增删改查 存在很多弊端
- 效率低
- 一般只能保存小量数据
- 只能保存文本数据
- 什么是DBMS: DataBaseManagementSystem,数据库管理系统(数据库管理软件),作用就是负责对数据进行增删改查的软件,常见的DBMS: MySQL、Oracle、DB2、SQLServer、SQLite等
- 数据库分类:
1. 关系型数据库: 以表为单位保存数据,经过数学理论验证可以保存现实生活中存在的任何关系
2. 非关系型数据库: 以键值对形式保存数据,一般用于解决特殊场景,如数据缓存。
- 开源和闭源
- 开源:公开源代码, 免费 , 盈利方式:靠卖服务 , 开源有大拿无偿维护升级。
- 闭源:不公开源代码,收费, 盈利方式:靠卖产品+卖服务 ,闭源有大拿攻击 但是公司会花钱养一群人维护升级。
- 主流数据库软件介绍
- MySQL: Oracle公司产品, 08年被Sun公司收购,09Sun被Oracle 拉里.埃里森
MariaDB 市场占有率第一 - Oracle: Oracle公司产品 市场占有率第二 ,性能最高 价格最贵的数据库
- SQLServer: 微软公司产品 排第三 , 主要应用在微软整套解决方案中
- DB2: IBM公司产品 主要应用在IBM整套解决方案中
- sqlite: 轻量级数据库,只具备基础的增删改查操作
###SQL
- Structured Query Language:结构化查询语言,用户程序员和数据库软件进行交流的语言
###如何连接数据
mysql -uroot -p
###数据库相关
- 查看所有数据库
- show databases;
- 创建数据库
- 格式: create database 数据库名;
create database db1;
- 查看数据库详情
- 格式: show create database 数据库名;
show create database db1;
- 创建数据库 指定字符集
- 格式: create database 数据库名 character set utf8/gbk;
create database db2 character set gbk;
- 删除数据库
- 格式: drop database 数据库名;
drop database db2;
- 使用数据库
- 格式: use 数据库名;
use db1;
###表相关 - 前提一定使用了数据库,才能执行表相关的SQL
- 创建表
- 格式:create table 表名(字段1名 字段1类型,字段2名 字段2类型,…);
create table person(name varchar(5),age int); - 练习:创建学生表(student) 字段: 学号id 姓名name 语文chinese 数学math 英语english
create table student(id int,name varchar(10),chinese int,math int,english int);
- 查看所有表
- 格式: show tables;
show tables;
- 查看表详情
- 格式: show create table 表名;
show create table person;
- 引擎:- innodb:默认,支持事物、外键等高级操作
- myisam: 只支持基础的增删改查操作,不支持事物、外键等高级操作
###表相关 续
- 查询表字段信息
- 格式: desc 表名;
desc person;
- 删除表
- 格式: drop table 表名;
drop table person;
- 创建表指定引擎和字符集
- 格式: create table 表名(字段1名 字段1类型,字段2名 字段2类型,…) engine=innodb/myisam charset=gbk/utf8;
create table person(name varchar(10),age int)engine=myisam charset=gbk;
- 修改表名
- 格式: rename table 原名 to 新名;
rename table person to t_person;
- 修改表引擎和字符集
- 格式: alter table 表名 engine=myisam/innodb charset=utf8/gbk;
alter table t_person engine=innodb charset=gbk;
- 添加表字段
- 格式: alter table 表名 add 字段名 字段类型; //最后
- 格式: alter table 表名 add 字段名 字段类型 first;//最前面
- 格式: alter table 表名 add 字段名 字段类型 after xxx;在xxx后面
alter table t_person add sal int;
alter table t_person add id int first;
alter table t_person add gender varchar(5) after name;
- 删除表字段
- 格式: alter table 表名 drop 字段名;
alter table t_person drop gender;
- 修改表名和字段类型
- 格式: alter table 表名 change 原名 新名 新类型;
alter table t_person change sal salary int;
- 修改字段类型和位置
- 格式: alter table 表名 modify 字段名 新类型 first/ after xxx;
alter table t_person modify name varchar(5) after age;
###数据相关
create database db1 character set utf8;
use db1;
create table person(id int,name varchar(10),age int);
- 添加数据
- 全表插入格式: insert into 表名 values (值1,值2,值3); 要求值得数量和顺序必须和表字段的数量、顺序一致
insert into person values(1,‘Tom’,18); - 指定字段插入格式: insert into 表名 (字段1名,字段2名) values (值1,值2); 要求值得数量和顺序和前面指定的一致
insert into person (id,name) values(2,‘Jerry’); - 批量插入数据
insert into person values(3,‘aaa’,10),(4,‘bbb’,11);
insert into person (id,name) values(5,‘ccc’),(6,‘ddd’);
- 查询数据
- 格式: select 字段信息 from 表名 where 条件;
select name from person;
select name,age from person where id<3;
- 修改数据
- 格式: update 表名 set 字段名=值 where 条件;
update person set age=50 where id=2;
- 删除数据
- 格式: delete from 表名 where 条件;
delete from person where name=‘Tom’;
###乱码问题
insert into person values (10,‘刘德华’,17); - 如果执行包含中文SQL 报错时 执行以下指令解决
set names gbk; - 如果执行插入中文没有报错 但是查询出现乱码,此时把数据库删除 重新创建确保数据库字符集为utf8 表的字符集为utf8再次测试,如果还是解决不了问题,重新安装数据库或联系项目经理帮忙解决