MySQL增删改查的基本命令

发布时间 2023-09-06 22:51:41作者: Lubomierz
1. 数据库相关命令
1. 查看所有的数据库
show databases;

2. 查看一个库的基本信息
show create database db1;

3. 创建一个数据库
create database db1;

4. 删除一个数据库
drop database db1;

5. 修改库的字符编码
alter database charset='utf8';

2. 表相关命令

1. 创建一个表
create table t1(id int(11),name varchar(16),age int(11));

# id,name,age 代表的是字段 后面代表的是字段类型

2. 删除一个表
drop table t2;

3. 修改表  只能修改表名
alter table t1 rename tt1;

4. 查看表
show tables;  # 查看所有表
show crtate table t1;     # 查看表结构
desc t1;                 # 查看表的字段

                    

3. 字段的增删改查

select、# 查看
insert、# 插入一条记录
update、# 更新一条或多条记录
delete     删除一条或多条记录

1. 查看表这的记录
select * from t1;    # * 代表的是全部字段 如果写字段名 则代表看某个字段
select id,name from t1;  # 查看t1这张表的 id 和 name 字段

2. 增加数据
insert into t1 values(1,'huang',18); # 不指定字段 则是按顺序添加
insert into t1(id,name,age) values(2,'tank',20),(3,'shun',19);  # 一次性添加多个

3. 修改数据
update t1 set name='kevin' where id=3;  # name代表字段 where代表条件
可以同时修改几个字段
update t1 set id=5,name='kevin',age=88 where id=3 and name='shun'   # where 可以同时筛选几个条件 那个条件成立 就直接执行
update t1 set name='aaa'; # 没有筛选条件则是 全表改,一定不能使用
    '''以后你在写更新语句的时候,一定别忘了检测更新条件'''
    """以后可千万要有安全意识,尤其是对公司里的核心数据,数据对一个公司太重要了"""

4. 删除数据 
delete from t1 where id =1;
delete from t1 where id =1 and name='';  # 可以筛选条件

4. 存储引擎(存储数据的方式)

1. 什么是存储引擎?
    # 就是存储数据的方式!

2. MySQL中有哪些存储数据的方式:
    show engines;  数据库查看存储引擎信息

# 总共支持9中存储引擎,我们需要掌握2种:
"""
MyISAM:
    它是MySQL5.5及之前的版本默认的存储引擎,它的存取速度更快,但是数据相对InnoDB不够安全。

InnoDB
    它是MySQL5.6及之前的版本默认的存储引擎,它的存取速度相对MyISAM更慢了,但是数据相对MyISAM更加安全

MEMORY
    它的数据是在内存中存着的,内存是基于电工作的,所以断电数据丢失,重启服务端也会丢失数据
"""

# 验证以上三者存储引擎所产生的文件
create table t2(id int) engine=MyISAM;
create table t3(id int) engine=InnoDB;
create table t4(id int) engine=MEMORY;

1. 
MyISAM:
    # 产生三个文件
    .frm: 这个文件存表结构
    .MYD:这个文件存数据 data
    .MYI: 这个文件存数据的索引 index >>> 类似于是书的目录 >>> 加快查询速度的

2.
InnoDB        
    # 产生两个文件
    .frm: 这个文件存表结构
    .ibd: 这个文件存数据的索引和数据 index >>> 类似于是书的目录 >>> 加快查询速度的

3.
MEMORY
    # 产生两个文件
    .frm: 这个文件存表结构

5. 数据类型有五种

1. 整形 有四种 int tinyint bigint  smallint
# 不同的类型存储的范围不一样
存储范围比较:
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---->

# 默认情况整型是否带符号
create table t5 (id tinyint);
create table t5 (id smallint);
create table t5 (id int);
create table t5 (id bigint);
"""得出结论:默认情况整型是带符号的"""

2. 浮点型 有三种 float  double  decimal

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

decimal(8, 2) # 表示的最大范围是:999999.99  8代表一共可以存8位 小数是两位 6位整形跟2位小数

# 这三个有什么区别? """得出结论:精确度不一样"""
decimal  >>> double >>> float
create table t6(id float(255, 30));
create table t7(id double(255, 30));
create table t8(id decimal(65, 30)

3. 字符串类型 有两种 char varchar
# 这两个都是用来存储字符串使用的
char(4):   它是定长,那么他就存4位,如果没有超出4位,空格填充到4位,超出4位,报错或者,最大存4位

varchar(4):可变长的,不超出4位,有几位存几位,超出4位,报错或者,最大存4位

# 如果你想让报错,需要设置严格模式
如何查看严格模式
    1. select @@sql_mode;
    2. show variables like '%mode%' # 模糊查询,变量中带有mode的

# 设置严格模式
    1. 永久修改:需要改配置文件
    2. 临时修改:
    set global         sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';

# 以后到底使用定长还是不定长呢,
大多数情况使用的都是varchar,如果你的存储数据就是固定的,就是有char


4. 日期类型有4种
    datetime      date      time      year
    年月日 时分秒   年月日    时分秒     年份 



5. 枚举类型  enum
    1.多选一
create table t15 (id int,
                         hobby enum('tangtou', 'hejiu', 'xijio', 'chouyan')
                         );
insert into t15 values(1, 'tangtou');  # 只能从枚举里面选择 否则报错

    2. 多选多
create table t16 (id int,
                         hobby set('tangtou', 'hejiu', 'xijio', 'chouyan')
                      );

insert into t15 values(1, 'tangtou''hejiu', 'xijio'); 

    

6. 整型中的数字代表的什么意思

字符串类型:
    char(4)
    varchar(4) # 括号里的数字代表的就是存储的长度

整形 
int
tinyiny
smallint
# 整型的存储范围跟括号中的数字有没有关系:
# 整型中括号中的数字代表的是数据展示的位数

7. 创建表的完整语法结构

create table 表名(
    字段名1  数据类型  约束条件 约束条件 约束条件,
        字段名2  数据类型  约束条件 约束条件 约束条件
    ...
);

create table t17 (
    id int,
    name varchar(16),
    age int
);

# 注意事项:
1. 字段名和数据类型是必须要写的
2. 约束条件是可选的,有就写,没有不写
3. 最后一个字段的末尾不能加逗号