在Linux系统中的数据库操作:
啥叫数据库?管理数据
数据库主流产品:oracle,access,sqlLite,mysql,db2,sql server
今天的目标:mysql
----------------------------------------------------------
uBuntu系统安装步骤:
1.更新一下软件库
【sudo apt-get update】
2.下载并安装mysql
【sudo apt-get install mysql-server】
3.检测一下安装结果以及是否启动成功
【ps -ef|grep mysql】:ps -ef 是查询任务管理器,grep用来搜索mysql是否启动了
----------------------------------------------------------
数据库由两部分组成:服务端和客户端
对数据的增删改查需要通过客户端:mysql自带了一个,第三方有Sqlyong,Navicat
----------------------------------------------------------
登录数据库
【sudo mysql -uroot -p】:默认root密码是空的,直接敲回车就行
看到“Welcome to the MySQL monitor” 就成功了
修改root密码
【alter user 'root'@'localhost' identified by '新密码';】:必须以英文分号结尾,表示结束
创建新用户
【create user 用户名@localhost identified by '新密码';】
验证新密码
【exit】:退出数据库
【sudo mysql -uroot -p】:重新登录
【sudo mysql -u新用户 -p】:使用新创建的用户登录
删除某个用户(root来删除)
【drop user 用户名@localhost;】
----------------------------------------------------------
进入数据库之后:
【show databases;】:查看目前所有的数据库名称
【use 某个库名;】:进入这个数据库,会提示(DataBase Changed)
【show tables;】:查看当前这个数据库里面有多少张表
【select * from 某个表名;】:查看这张表里面的详细数据
【\c】:中断当前操作
【\q】:退出mysql,等同于 exit命令
----------------------------------------------------------
新建数据库:
【create database 数据库名;】
进入数据库:
【use 数据库名;】
建立数据表:
【create table 表名(字段1 类型,字段2 类型)】
例如:
【create table classes(
id int primary key auto_increment,name varchar(10) not null,room varchar(10),
date datetime);
】
关键字说明:
【auto_increment】:每次插入数据的时候,自动递增1
【primary key】:主键,不能重复且不能为空的,也只能给一个字段加
【not null】:不能为空
数据类型选型:
int(整数),smallint(小型整数),float(浮点数),decimal(货币),blob(二进制数据)
varchar(长度可变文本),char(固定长度文本),text(长文本)
bit(0和1的两种结果),date(日期),time(时间),datetime(日期时间)
删除数据表:
【drop table 表名;】
删除数据库:
【drop database 数据库名;】
查看表结构:
【desc 表名;】
--------------------------------------------------
插入数据:
【insert into 表名(字段1,字段2,字段3)values(值1,值2,值3)】:字段1和值1对应,后面以此类推
例如:
【insert into classes(id,room,name)values(2,'102室','网安300期');】
【insert into classes(id,name,room,date)values(1,'物联网101期','10室','2024-01-06 09:00:00');】
有auto_increment的表,就不要自己去存id了
【insert into student(name,age,sex,phone)values('小三儿',20,0,'18272828192');】
一次存多条数据:
【insert into teacher(name,age,sex,phone) values ('龚老师',34,1,'23123'),('王老三',28,1,'129281812'),('马老师',50,0,'192829191');】
查询是否存储成功:
【select * from 表名;】:查询这个表里的全部数据
删除数据:
【delete from 表名;】:清空表数据
【delete from 表名 where 条件1 and 条件2;】按条件进行有选择的删除
例如:
【delete from student where age<18;】:删除小于18岁的学生
【delete from student where sex=0;】:删除所有女学生
【delete from student where name!='张三';】:删除除了张三以外的其他人
【delete from student where sex=0 and age>50;】:删除大于50岁的女学生
【delete from classes where date<'2024-01-01'】:删除2024年之前的班级信息
修改数据:
【update 表名 set 列名=新值;】批量更新
【update 表名 set 列名=新值 where 条件1 and 条件;】: 按条件进行更新
例如:
【update teacher set sex=1 where name='马老师';】将马老师性别改成男
【update classes set date='2024-01-01 00:00:00',room='101室' where date is null;】
将原本date为空的那些数据,date字段设置为2024年1月1日,同时room字段改为101室
is null :表示为空,其它数据都用 = 来判断
is not null:表示不为空,其它数据都用 !=来判断