Linux——MySQL

一、数据库的基本概念

1.什么是数据库?

用于存储和管理数据的仓库

2.数据库的特点?

1)持久化存储数据的,其实数据库就是一个文件系统

2)方便存储和管理数据库

3)使用了统一的方式操作数据库------SQL

3.常见的数据库软件

Oracle数据库:大型数据库

MySQL:小型数据库

DB2:常用在银行系统

SQLServer:中型数据库

SQLite:嵌入安卓手机

4.windows和Linux使用mysql的不同之处

操作 Windows(CMD) Linux(终端)
启动 MySQL net start mysql sudo systemctl start mysql
停止 MySQL net stop mysql sudo systemctl stop mysql
重启 MySQL net restart mysql sudo systemctl restart mysql
查看状态 sudo systemctl status mysql
设置开机自启 自动 sudo systemctl enable mysql
路径写法 C:\mysql\bin /usr/bin/mysql
大小写 不区分 严格区分(表名区分)
注释 # 或 -- # 或 --
端口占用查看 netstat -ano netstat -tlnp

5.SQL

1)什么是SQL?

结构化查询语言:其实就是定义了操作所有关系型数据库的规则。每一种数据库查询的语句不一样,就叫做"方言"

2)SQL通用语法?

1.SQL语句可以单行可以多行书写,以分号结尾。

2.可以使用空格和缩进来增强语句的可读性。

3.MySQL数据库的SQL语句不区分大小写,但是Linux下表名区分,关键字建议使用大写

4.单行注释:-- 注释内容(两个-,一个空格);多行注释:#

二、第一次登录MySQL

1.使用系统权限登录 MySQL

bash 复制代码
sudo mysql

2. 修改认证方式

在 MySQL 命令行中依次执行:

sql 复制代码
USE mysql;
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;

3.设置新密码

sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

4.退出并测试

bash 复制代码
exit;
sudo systemctl restart mysql  # 重启 MySQL 服务

三、对数据库基本操作

1.MySQL登录

bash 复制代码
//登录自己的数据库
mysql -uroot -p密码

//登录你要连接的数据库
mysql -hip -uroot -p连接目标的密码

mysql --host=连接目标的ip --user=root --password=root

2.MySQL退出

sql 复制代码
exit

quit

3.展示已经创建的数据库

bash 复制代码
show databases;

4.展示已经创建的数据库的字符集

sql 复制代码
show create database 数据库名称;

5.创建数据库

bash 复制代码
create database 数据库名;

//判断这个数据库是否创建过,创建过不报错;没创建过,再创建
create database if not exists 数据库名;

6.创建数据库并指定字符集

sql 复制代码
create database if not exists 数据库名 character set 字符集;

7.修改数据库的字符集

sql 复制代码
alter database 数据库名称 character set 字符集名称;

8.删除数据库

sql 复制代码
drop database if exists 数据库名;

9.查看当前使用数据库

sql 复制代码
select database();

10.使用数据库

sql 复制代码
use 数据库名;

四、对数据库表的基本操作

1.创建表:

语法:

create table 表名(

列名1 数据类型1,

列名2 数据类型2,

.....

列名n 数据类型n

);

注意:最后一行绝对不加逗号

数据库类型:

  • int:整数类型 age int,
  • double:小数类型 score double(5,2),
  • data:日期 只包含年月日,yyyy-MM-dd
  • datatime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss,
  • timestamp:时间戳类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss

注:如果将来不给这个字段赋值,或者赋值为null,则默认使用当前的系统时间,来自动赋值

  • varchar:字符串 name varchar(20):姓名最大20个字符
sql 复制代码
create table student( 
id int,
name varchar(20),
age int,
score double(4,1),
birthday date,
insert_time timestamp
);

2.删除表:

sql 复制代码
drop table if exists 表名;

3.查询表:

(1)查询某个数据库中的所有表:

sql 复制代码
show tables;

(2)查询表结构:

sql 复制代码
desc 表名;

(3)查询表创建的SQL语句:

sql 复制代码
 show create table stu;

4.修改表:

sql 复制代码
//增加列 
alter table 表名 add 列名 varchar(20);

//修改列名称 类型
alter table 表名 change 当前列名 新列名 新数据类型;

//只修改列的数据类型
alter table 表名 modify 列名 新数据类型;

五、对数据库表中的数据的基本操作(CRUD)

5.插入数据(Create)

语法:

insert into 表名(列名1,列名2,列名3,....,列名n)values(值1,值2,值3,....);

**注:**除了数字类型其他类型都需要用引号(单双都可以)括起来

(1)往想要添加的列里添加数据:

sql 复制代码
insert into stu(id,name,age,score,birthday,insert_time,sex)values(1,'张无忌',12,100,'2021-01-01',NULL,1);

(2)往整个表里添加数据:

sql 复制代码
insert into stu values(1,'张',12,98,'2022-01-02',NULL,1);

6.查询数据(Read)

1)基础查询:

1.多个字段查询

select 字段名1,字段名2...from表名;

注意:如果查询所有字段,则可以使用*来替代字段列表

sql 复制代码
//查询整个表的数据
select* from 表名;

//查询某列数据
select 列名 from 表名;

//查询某列根据条件
 select *from stu where name="马云";
2.去除重复

distinct

3.计算列

一般可以使用四则运算计算一些列的值(一般只会进行数值型的计算)

ifnull(表达式1,表达式2):null参与的运算,计算结果都为null

表达式1:哪个字段需要判断是否为null

如果该字段为null后的替换值

4.起别名

as:as也可以省略

2)条件查询:

1.where子句后跟条件
2.运算符

(1)*>、<、<=、>=、=、<>

查询年龄小于20岁的

sql 复制代码
select* from score where age<20;

查询年龄不等于20岁的

sql 复制代码
select* from score where age<>20;
select* from score where age!=20;

(2)BETWEEN....AND

sql 复制代码
select *from score where age between 20 and 30;

(3)IN(集合)

sql 复制代码
 select *from score where age in(15,20,30);

(4)LIKE

语句 通配符 含义 匹配结果
WHERE name LIKE '马_' _(下划线) 匹配恰好一个字符 马?(两个字)
WHERE name LIKE '马%' %(百分号) 匹配零个或多个字符 马、马?、马??、马???...

查询姓马的有哪些

sql 复制代码
select *from score where name like'马%';//只要姓马
select *from score where name like'马_';//姓马两个字

(5)IS NULL

查询英语成绩为NULL

sql 复制代码
select* from score where age=NULL;//错误的
select* from score where age is NULL;//必须用is

(6)and或&&

sql 复制代码
select *from score where age =30 and name="马云";

(7)or或||

查询年龄30或15的(OR)

sql 复制代码
select *from score where age=30 or age=15;

(8)not或|

查询英语成绩不为NULL

sql 复制代码
select* from score where age is not NULL;

3)排序查询:

语法:

order by 子句(升序)

order by 排序字段1 排序方式1,...,排序字段2 排序方式2.....

sql 复制代码
select* from score order by maths;

排序方式:

ASC:升序,默认的

DESC:降序

按照数学成绩排名,如果数学成绩一样,按照语文成绩排名

sql 复制代码
select* from score order by maths ASC,chinese ASC;

**注意:**如果有多个排序条件,则当前边的条件值一样时才会判断第二条件

4)聚合函数

聚合函数:将一列数据作为一个整体,进行纵向计算

count:计算个数

max:计算最大值

min:计算最小值

sum:计算和

avg:计算平均值

5)分组查询

7.更新数据(Update)

注:不加条件会修改全部

sql 复制代码
updata stu set age=111 where id=1;

update stu set sex=0,age=27 where id=2;

update score set chinese=99,English=88 where id=1;

8.删除数据(Delete)

语法:

delete from 表名 where 条件

注意:

如果不加条件,则删除表中所有数据

如果要删除所有记录

delete from 表名; ----不推荐使用,有多少条记录就执行多少次

TRUNCATE TABLE 表名;---推荐使用,删除表再创建一个空表

truncate table 表名;

sql 复制代码
delete from stu where id=1;
相关推荐
我会尽全力 乐观而坚强6 分钟前
MySQL库与表的操作
linux·数据库·mysql
着迷不白18 分钟前
Linux 磁盘管理完全指南:分区、文件系统、挂载与 LVM 实战
linux·运维·服务器
lilihuigz18 分钟前
产品附加选项插件WooCommerce Product Add-Ons:9种字段类型与3种定价模式提升销售 - 易服客工作室
数据库·mysql·wordpress插件·woocommerce扩展·定制选项
山川而川-R25 分钟前
LangChain
linux·运维·服务器
QH_ShareHub29 分钟前
Linux 根目录结构详解
linux·运维·服务器
郝学胜-神的一滴1 小时前
CMake 038:OBJECT目标复用编译+Linux动态库版本自动化管理
linux·c++·程序人生·软件工程·软件构建·cmake·工程配置
单位圆的日常2 小时前
FRP反向隧道实现异地SSH家用Linux
linux·运维·ssh·frp
小比特_蓝光2 小时前
匿名管道+进程池
linux
BS_Li3 小时前
【Linux网络编程】NAT、代理服务、内网穿透
linux·网络·智能路由器
要开心吖ZSH3 小时前
处方物流信息同步优化:从 36 秒到亚秒级的踩坑记录
java·数据库·mysql·性能优化