数据库简介
之前使用的流操作把数据存储到txt文档上,对于修改/插入等,首先代码繁琐,对于查询操作效率极低,另外,如果数据很大,不可能长期保存在文件中. 为了解决上述问题,我们需要使用数据库
DBMS:数据库的管理软件
数据库的分类
关系型数据库
非关系数据库
主流关系型数据库
Oracle 甲骨文 拉里.艾力森 收费 核 闭源 卖产品
DB2 IBM,应用于大型系统,UNIX/linux,是oracle的主要竞争对手
SQL Server 微软 只能在windows下运行 .net(C#)
Mysql 免费 开源 卖服务
2008被sun收购,除了5.1版本
2010年sun超过2000亿,被oracle74亿收购
Mysql牛X程序员,要求Mysql不能闭源,oracle口头答应,没签合同
mysql除了5.5版本,使用了oracle的核心技术,性能提升了15%-30%
mysql威胁到了oracle市场,导致5.5版本闭源收费
Mysql牛X程序员,mariadb
mysql免费开源社区,支持mariadb
mysql5.5 mariadb5.5 mysql5.6 mariadb10.0
SQL基本操作
SQL语言是操作数据库的语言 每一种数据都有自己独特的方言
linux 打开终端 输入 mysql -u root -p回车 password:(有密码就输入密码回车,没密码就直接回车)
操作数据库
对数据库的操作
显示所有的数据
选定要操作的数据库
创建新的数据库
查看创建数据库的语句
设置默认解码的创建库语句
删除数据库
需求,创建库demo1,要求默认编码utf8,创建完成后,选定这个库demo1.
显示所有表
查询表结构
创建表
create table 表名( 列名 数据类型(长度) 约束, 列名 数据类型(长度) 约束, ... 列名 数据类型(长度) 约束 );
create table stu(
id int not null,
name varchar(10),
sex varchar(10)
);
查看表结构
desc 表名;
CREATE TABLE stu
( id
int(11) NOT NULL, name
varchar(10) DEFAULT NULL, sex
varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql的引擎有两种ENGINE=
- InnoDB
- 支持数据库高级功能
- 事务
- 外键
- myisam
- 数据存储基本功能
- 效率非常高
-- 课堂练习
create table user(
name varchar(16),
age int
)engine=innodb charset=gbk;
- **对已经创建好的表进行修改**
1. 修改表名
- rename table 旧表名 to 新表名
- rename table user to tb_user;
2. 修改表属性(引擎,字符编码)
- alter table 表名
engine=myisam charset=utf8;
- alter table tb_user
engine=myisam charset=utf8;
3. 添加字段
- alter table 表名 add 新字段 新字段的数据类型 新字段的约束 first;
- alter table tb_user add id int first;
- alter table tb_user add(
gender char(5),
tel char(11)
);
4. 修改字段名称
- alter table 表名 change 旧字段名
新字段名 新字段数据类型;
- alter table tb_user change gender sex varchar(10);
5. 改数据类型
- 删除某一个字段,再添加一个新的
- 使用命令关键字直接修改
- alter table 表名 modify 字段名 字段新类型
- alter table tb_user modify tel varchar(11);
6. 修改列的顺序
- alter table 表名 modify 目标列名 目标列数据类型 after 某一列列名
- alter table tb_user modify tel varchar(11) after age;
- 小练习,把sex 放到age字段的前面
- alter table tb_user modify sex varchar(10) after name;
7. 删除列
- alter table 表名 drop 列名
- alter table tb_user drop sex;
- **删除表**
- drop table 表名;
- DROP TABLE TB_USER;
- **课堂练习1**
-- 创建员工表emp
create table emp( //员工表
empno int(4), //工号
ename varchar(10),//姓名
job varchar(10), //工种
mgr int(4), //上级领导的工号
hiredate date, //入职时间
sal double(7,2), //工资
comm double(7,2), //奖金
deptno int(4) //所属部门编号
);
create table dept( //部门表
deptno int(4), //部门编号
dname varchar(14),//部门名称
loc varchar(13) //部门办公所在地
);
- insert into 表名 (列名1,列名2,...) values (值1,值2,...);
insert into emp(empno,ename,job,sal) values (1001,'lily','programmer',5500);
insert into emp(empno,ename,job,sal) values (1001,"lily","programmer",5500);
insert into emp(empno,ename,hiredate) values (1002,'simth','18-01-24');
- update 表名 set 字段名=值 where 列名=值;
- update emp set ename='lucy' where empno=1001;
- 1.把叫simth的员工的入职时间改为17年10月12日
update emp set hiredate="17-10-12" where ename="simth";
- 2.插入新员工lilei,工号1003,工资3000,奖金5000,上级领导编号1002
insert into emp(empno,ename,sal,comm,mgr) values(1003,'lilei',3000,5000,1002);
- 3.插入新员工zhangsanfeng,工号1004,上级领导编号1001,工资8000,奖金1000
- 修改字段类型
alter table emp modify ename varchar(20);
insert into emp(empno,ename,mgr,sal,comm) values(1004,'zhangsanfeng',1001,8000,1000);
- 4.插入新员工liuchuanfeng,工号1005,上级领导1004,入职时间18年01月22日,工资800,奖金2000
- 5.修改zhangsanfeng的工资,修改为8500
- 6.修改lilei的奖金,修改为2000
- 7.修改liuchuanfeng的上级领导为1001,工资为3000
update emp set mgr=1001,sal=3000 where ename='liuchuanfeng'
- delete from 表名 where 条件
- delete from emp where job is null;
- truncate删除表内容的原理
先把整张表删除,然后重新创建一个表结构一模一样的空表
truncate table 表名
truncate table emp;
1.把上课所有的代码重新敲一遍
创建 t_item 商品表
在 t_item 表插入商品数据 7,'苹果',iphone X 9999 now()
insert into emp values (1001,'hanmeimei','sal',1001,now(),3000,5000);