一、MySQL
1MySQL发展史
……目前更新到了8.0.18版本,现在直流还是使用5.7版本
2.什么是数据库
数据库的软件:
需要安装软件,才能写SQL语句 存储数据关系型数据库:MySQL Oracle SQLServer DB2 SQLite非关系型数据库:redis mongodb memorycache两者的区别:关系型数据库存储的数据是**表结构**,比如Excele非关系型数据库存储的数据是**键值对**形式的数据 比如map集合
3.数据库的概念
数据库服务器:
安装好MySQL以后,这个就是数据库服务器
数据库:
一个项目对应一个数据库
数据表:
一个库下面可以有多张表
数据和字段:
一张表由数据和字段组成,一个字段可以有多个数据字段:id name age info
数据1:1 朱志伟 24 zzw
数据2:1 朱志伟 24 zzw
数据3:1 朱志伟 24 zzw
总结:数据库服务器下面可以有很多数据可,数据库中可以有很多数据表,数据表中有哦很多字段和数据。
4.通过命令操作数据库【重点】
前提是安装好数据库服务器,并且配置好全局的环境变量,才可以使用以下命令
#1.将命令提示符打开window + r :输入cmd#2.如果mysql数据库没有开机自己启动,以下命令是手动启动mysqlnet start mysql#3.连接数据库方式1 不安全 一般用方式2mysql -hlocalhost -uroot -p123456:#4.连接数据库:方式2 安全C:\Users\ZHU>mysql -uroot -pEnter password: ******#5.展示所有得数据库,一定要以分号结束show databases;#有四个是数据库自带的,数据库服务器 也得保存数据,这四个不要动#6.创建数据库,不能创建同名得数据库,一定要以分号结束create database 数据库名字;Query OK, 1 row affected (0.10 sec) #创建成功#7.删除数据库,得有这个数据库才可以删,一定要以分号结束drop database 数据库名字;Query OK, 0 rows affected (0.07 sec) #删除成功#8.选中某一个库之后use 数据库名字;Database changed #进入成功#9.查看数据库下面得表show tables;#9.选中某一个库之后,才可以创建数据表create table 表的名字 (字段1 类型,id int,name varchar(32),info text);#例子:create table person (id int,name varchar(32),age int,info text);#10.查看创建好的表的结构 desc描述desc person(表的名字);mysql> create table person1(-> id int, #int 字段默认11位-> name varchar(32), #varchar(32) 可变长字符串 最大32位-> age tinyint, #tinyint 占4位-> info text #text 文本类型 不限制长度-> );Query OK, 0 rows affected (0.33 sec)#11.删除表drop table person1;#12.显示创建数据库和数据表的过程 (了解)show create database java2204;show create table person;
简洁版
进入数据库:mysql -uroot -p密码:123456展示数据库:show databases;创建数据库:create database java2204;删除数据库:drop database java2204;进入某个库:use java2204;查看库下的表:show tables;创建表:create table person (字段1 类型,字段2 类型);查看表结构:desc person删除表:drop table person;
5.修改表【alter 改变】
修改一个表中的字段
#删除表中的字段# alter table 表明 drop 字段;alter table person drop info;#添加字段#alter table 表明 add 字段 类型;alter table person add info text;#在固定的某一个字段后面添加字段 (想在name后面添加一个sex字段)#alter table 表明 add 字段 类型 after 某字段;alter table person add sex boolean after name;#修改某个字段的数据类型 (name varchar-->char)#区别:varchar(25) 可变长的字符串 会根据存入的数据 进行变化#区别:char(25) 定长的字符串 就是写3个字符在系统中也是占用25位#alter table 表明 modify 旧字段 信类型;alter table person modify name char(25);#修改指定的字段和类型 (sex变成gender 数据类型变成int)#alter table 表明 change 旧字段 新字段 新字段类型;alter table person change sex grnder int;
简洁版
删除表中字段alter table person dorp name;添加字段alter table person add name varchar(32);在某字段后面添加字段 添加字段在什么之后alter table person add sex boolean after name;修改某个字段的数据类型 修改name的类型alter table person modify name char(25);修改指定字段的名字和类型 修改sexalter table person change sex xingbie int;
5.1一些常用的数据类型
float(size,d)size大小 d小数点后位数。
double(size,d)size大小 d小数点后位数。
decimal(size,d) size大小 d小数点后位数。 更精确
size 最大长度为8,小数点占2位 888888.99
6.添加数据到表中【增】
insert into
语法格式
案例
#查询表中的所有数据#select *(*代表所有的字段) from person;select * from person;#添加数据 这种方式必须按照表中字段的顺序添加,不可乱不可缺。#insert into 表名 values(值1,值2);insert into person values(1,"朱志伟",1,24,"abcdefg",4999.99);#指定字段添加数据#insert into 表名(字段1,字段2) values(值1,值2);insert into person(id,name,info) values(3,"朱航","吉林沈阳");#一次添加多条数据#insert into person(字段1,字段2) values(值1,值2),(值1,值2);insert into person(id,name,info) values(4,"路飞","海贼王"),(5,"索隆","世界第一剑豪^S");
7.删除表中的数据【慎用】
delete 在做删除操作时一定要添加条件,如果不加条件,后果自负
where 后面的是条件;
delete from 表名 where 列名 = 值;
案例
#delete from 表名 where 列明 = 值;#删除 id为4的这一行delete from person where id = 4;#删除 name为“博儿”的这一行delete from person where name = "博儿";#一次删除多行#delete from 表名 where 列明 in(值1,值2);delete from person where id in(1,3,5);
8.修改数据【慎用】
update 在做修改时,和删除一样,一定要加条件
set 后面的是条件
update 表名 set 字段1 = 值2,字段2 = 值2 where 列 = 值;
案例
#修改数据#update 表明 set 字段=值1,字段=值2 where 列 = 值;update person set info="世界第一大剑豪",age=18,grnder=1 where id = 3;
9.事务
为了保障数据库安全的
总结三个命令:
1.set autocommit = 0; 关闭自动提交
2.增删改sql 不会自动提交
3.两种状态:
要么回滚(rollback;) 不执行sql语句要么手动提交(commit;)执行sql语句
#比如路飞给索隆转账#牵涉到两个sql语句 一个减 一个加 修改sql语句 要么同时成功 要么同时失败#想要在sql中使用事务,一定要先开启,系统默认时关闭的#开启事务 自动提交 设置为0set autocommit = 0;#两个事务 这时候还没有修改update person set salary=salary-100 where id = 2; #路飞-100update person set salary=salary+100 where id = 3; #索隆+100#以上两个sql语句没有真正的执行。#要么回滚,都回到原来的状态rollback;#要么执行,两个sql语句都执行 commit(因为第一步将自动提交关闭了,现在需要手动提交)commit;
