MySQL在命令行中的使用

mysql在终端的登录

先用管理员权限打开命令行,若发现不能登录mysql时在管理中查看mysql是否启动

 若未启动可在管理员权限中输入

mysqld --install

再输入

net start mysql

 

在管理中查看mysql已经启动,也可以手动在此点击启动。】

 然后登录mysql

mysql -u root -p

 对mysql库的操作

查看所有的库

show databases;

注意:mysql中的库即对应一个个文件夹、

                        表即对应文件夹中的文件

                        记录即对应文件里面的一条条数据

        要对数据进行修改,首先要进入到库中,再进到表中,然后在表中对数据进行修改。

# 语法:SQL语句必须以分号结尾
1. 增加库
    create database db1; #增加一个叫db1的库
2. 查看所有的库
    show databases;
3. 删除库  
    drop database db1;
4. 查看当前在哪个库
    select database();
5. 如何选择数据库
    use db1;
6. 看一下库的结构信息 
    show create database db1;

 此时已经显示进入到库db1中了。

对mysql表格的操作

1.show tables; 查看库中的表格

2. create table t1 (id int,name varchar(20),age int)   #创建一个t1表,里面的字段有id,name,age

 1.show create table t1;  #查看t1的表结构(混乱)

2. describe t1; #可以简称为desc t1;  用来查看结构化后的表结构

1.alter table t1 rename tt1; #将t1的表名修改为tt1

2. drop table tt1;   #删除表

 

在表中对记录进行修改

1.增加表中的数据

#全字段加入,在表中增加这条数据 括号内依次按照id,name,age的顺序进行添加

insert into t1 values(1,'qq',18);

isert into t1 values(2,'ww',19),(3,'ee',20);  #增加多个记录

insert into t1(id,name) values(4,'rr')  #只增加单条记录

 2.删除表中的数据

delete  from t1 where id=4;

delete from t1 where name='ee' and age=20;

 

 3.修改表中的数据

update t1 set name='aaa'  where id=1;  #修改t1表中id为1 的这行数据的name为aa,符合where后面条件的都会修改。

update t1 set name=‘sss’ , age=11 where id=2;  #修改一行的多个数据值

updata t1 set name='ddd' where id=3 and age=20;  #where后面可以增加多个限定条件

update t1 set name='aaa'; # 没有限定条件修改的是全表的数据,使用时要特别注意!

4.查看表中的数据

select * from t1;  #查看表中的全部数据信息

select id from t1; #查看表中的id信息

select id,name from t1; #查看t1表中的id和name信息

总结:对记录的增加 insert into 表名 values(对应的记录);

                        删除  delete from 表名 where 对应条件;

                        修改 update 表名 set   xxx= xx  where 对应条件;

                        查找 select 数据 from 表名;

存储引擎

存储引擎即数据的存储方式。是负责处理数据存储和检索的组件。MySQL 提供了多种存储引擎,每个存储引擎都有其特定的特点和用途。

可以通过show engines;来查看mysql中存在的搜索引擎。

  1. InnoDB:InnoDB 是 MySQL 5.6的默认存储引擎,它支持事务和行级锁定。相对于MyISAM来说更慢了,但是数据会更安全。它通过实现 ACID(原子性、一致性、隔离性和持久性)特性来提供高度的数据完整性和并发处理能力。InnoDB 还支持外键约束和崩溃恢复功能,并具有较好的性能。

  2. MyISAM:MyISAM 是较早版本5.5及之前默认的 MySQL 中常用的存储引擎,相对于InooDB来说不够安全,它不支持事务和行级锁定。MyISAM 在处理大量插入和查询操作时执行得很好,但在并发写操作和高度并发读写场景下性能可能有限。MyISAM 适合于非事务性应用或只读应用,如日志记录和报表生成。

  3. MEMORY/HEAP:MEMORY 存储引擎将数据存储在内存中,提供了非常快速的数据访问。断电及重启服务端都会丢失数据。对丢失它适合于需要快速读取和写入数据的临时表和缓存表。然而,由于数据存储在内存中,系统重启后数据将丢失。

  4. NDB Cluster:NDB Cluster 存储引擎(也称为 MySQL Cluster)是一个分布式、高可用的存储引擎,适用于需要高性能和高可靠性的应用。它使用多个节点来存储和处理数据,并具有自动分区和故障恢复功能。

  5. ARCHIVE:ARCHIVE 存储引擎专注于数据归档和压缩。它适用于需要长期保存、不频繁访问和占用较少磁盘空间的存档数据。

  6. CSV:CSV 存储引擎以逗号分隔值的形式存储数据,类似于 CSV 文件格式。它适用于在 MySQL 中导入和导出 CSV 数据。

 等其他引擎,着重需要掌握前三个。

可以看出t1表中用的引擎是默认的InnoDB的。

create table t2(id int) engine=MyISAM;  #建立不同引擎的表格

create table t3(id int) engine=InnoDB;

create table t4(id int) engine=MEMORY;  #里面的数据重启或断电会消失。

可以在文件中看到t2表产生了三个文件,t3表产生了两个文件,t1表产生了一个文件。是因为所使用的引擎不同。

MyISAM:产生了三个文件

.frm:这个文件用来存储表结构

.MYD:用来存放数据data

.MYI:存放数据的索引

InnoDB:产生了两个文件

.frm:这个文件用来存储表结构

.ibd:存放数据的索引和数据

 MEMORY:产生了一个文件

.frm:这个文件用来存储表结构

数据类型
1.整型 

不同类型存储的范围不同

tinyint: 1个字节------>8位------>2 **8----> 256-----> 0-255-----> -128-127
smallint: 2个字节----->16位---->2 ** 16 ----> 65536-----> 0-65535----> -32768-32767
int:         4个字节------>32位----->2 ** 32----> 21...---->
bigint:  8个字节----->64位----->2 ** 64---->

整型是带符号的,如果超过了最大范围,只会显示最大范围内的数字

 

2.浮点型

不同类型的浮点数精确度不同

float(255, 30);  # 255表示的是存储的位数,30代表的是小数位数        最低
double(255,30);  # 255表示的是存储的位数,30代表的是小数位数     其次
decimal(65, 30); # 65表示的是存储的位数,30代表的是小数位数       最高

create table t8(id float(255, 30));

create table t6(id double(255,30));

create table t7(id decimal(65, 30));

insert into t8 values(1.111111111111111111111111111);

insert into t6 values(1.111111111111111111111111111);

insert into t7 values(1.111111111111111111111111111);

3.字符串类型

char(n):   它是定长,那么他就存n位,如果没有超出n位,空格填充到n位,超出n位,报错或有只存n位。
varchar(n):可变长的,不超出n位,有几位存几位,超出n位,报错或只存n位。

create table t9(name char(3)) ;

create table t10(name varchar(3));

insert into t9 values('qwer');

insert into t10 values('qwer');

select * from t9;

select * from t10;

可以看到当规定了长度为3时,如果存的长度超过3则剩余部分不能被存放进去。

但是也不会报错,如果想要超出长度报错则要设置严格模式

如何查看严格模式
1. select @@sql_mode;
2. show variables like '%mode%'   # 模糊查询,变量中带有mode的

 

可以看出此时的模式为非严格模式

设置严格模式

1.临时修改

set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';

 PAD_CHAR_TO_FULL_LENGTH设置可以看到char 和vachar的存储长度

 

可以看到已经修改为严格模式,此时如果再超出规定的长度则会报错。

2.永久修改

需要修改配置文件

 

将这句话放到my.ini文件中,然后重启服务。

insert into t9 values('k');
insert into t10 values('k');

select char_length(name) from t9;

select char_length(name) from t10;

若没有设置模式,则这两个‘k’的长度是一样的,设置了模式后可以看到char类型时会在前面填充的,而vachar则不会填充长度,有多长就是多长。

 ps: 整型中括号中的数字代表的是数据展示的位数

对于 INT(3) 数据类型,括号中指定的显示宽度并不会影响值的存储范围或对存储的限制。

INT 类型仍可以存储超过三位数的整数。

这里的 (3) 仅仅表示当将 INT 类型的值转换为字符串进行显示时,MySQL 将补充前导零或空格,以确保显示宽度为 3。

例如,对于值为 12 的 INT(3),MySQL 在显示时会将其作为 " 12"(前面有一个空格)。

但需要注意的是,无论括号中的显示宽度是多少,都不会对存储的实际数值有任何影响。INT 类型始终占用 4 个字节的存储空间,并且可以存储的数值范围是固定的(-2147483648 到 2147483647)。

显示宽度只是在将整数值转换为字符串表示时的表现形式,并不会限制实际存储的数值范围。

因此,如果存储的整数超过了指定的显示宽度,MySQL 仍会将其存储为 INT 类型,不会截断或引发错误。而要控制存储范围或限制具体数值的长度,需要使用其他方式,例如检查输入值或定义适当的约束条件。

4. 日期类型

datetime: 年月日时分秒

date:         年月日

time:        时分秒

year:        年份

create table t11(id int, nyrsfm datetime ,nyr date,sfm time,nianfen year);

insert into t11 values(1,'2023-7-11 11:11:11','2023=7-11','11:11:11','2023');

 5.枚举类型

多选一枚举类型enum:

create table t12(id int,name enum('qq','ww','ee'));

insert into t12 values(1,'qq');  #只能选择enum这个里面的,不能选择其他的,否则会报错

 

 

多选多集合类型set:

create table t13(id int,name set('qq','ww','ee'));

insert into t13 values(1,'qq,ww'); #在enum类型中选择多个则会报错,而在set类型中不会报错。

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值