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;
相关推荐
艾莉丝努力练剑1 小时前
【Linux网络】多路转接select
java·linux·运维·服务器·网络·tcp/ip
Cx330❀1 小时前
【Linux网络】从零定制应用层协议:黏包问题、全双工缓冲区与 Jsoncpp 序列化深度解析
linux·运维·服务器·开发语言·网络·c++·人工智能
Benszen1 小时前
云计算基础-5:Linux 重定向与管道
linux·运维·服务器
__Witheart__1 小时前
RK 3588 Ubuntu SDK 编译 Linux Header(标头)
linux·ubuntu·rockchip
艾莉丝努力练剑1 小时前
【Linux网络】五种IO模型与非阻塞IO
linux·运维·服务器·开发语言·网络·tcp/ip
lihao lihao1 小时前
Linux线程同步与互斥
linux·数据结构·算法
能喵烧香10 小时前
深度解析:Linux 与 Windows 超级权限账户的本质差异
linux·windows
Moshow郑锴12 小时前
Ubuntu 26.04 中文输入法 : fcitx5+Rime中州韵引擎
linux·运维·ubuntu
qq_1631357514 小时前
Linux 【04-more命令超详细教程】
linux