09_02、基本SQL语句、数据类型与存储引擎

一、基本SQL语句

1、创建表的完整结构

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

注意事项:

   1. 字段名和数据类型是必填项
        2. 约束条件是可选的
        3. 在最后一个字段的后面不能加逗号

2、库的增删改查(文件夹)

复制代码
# MySQL是一款远程操作文件的软件

# 增
create database db1;  # 增加db1文件夹(create database db2 charset='utf8';  # 增加文件夹db2并指定utf8编码

# 查
show databases;  # 查看所有文件夹(库)
show create database db1;  # 查看指定单个文件夹db1的详细设定信息

# 改
alter database db2 charset='gbk';  # 修改指定文件夹db2为指定编码utf8

# 删
drop database db2;  # 删除指定文件夹db2
复制代码

3、表的增删改查(文件)

 操作表(文件)的时候,需要指定所在的库(文件夹)

复制代码
# 查看当前所在库的名字
select database();

# 切换库
use db1;


# 增
create table t1(id int,name char(4));  # 增加表1

# 查
show tables;  # 查看当前库下面所有的表名
show create table t1;  # 查看单个指定表表1的详细信息
describe t1;  # 支持简写 desc t1;

# 改
alter table t1 modify name char(16)

# 删
drop table t1;  # 删除指定表1

# 通过用绝对路径形式操作不同的库
create table db2.t1(id int);
复制代码

4、表字段的操作

复制代码
# 1.添加表字段
alter table 表名 add 字段名 字段类型 约束条件;  # 默认尾部追加
alter table 表名 add 字段名 字段类型 约束条件 after 已经存在的字段名; 
alter table 表名 add 字段名 字段类型 约束条件 first;  # 了解 

# 2.修改字段
"""modify只能改字段数据类型完整约束,不能改字段名,但是change可以!"""
ALTER TABLE 表名 MODIFY  字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型 [完整性约束条件…];

# 3.删除字段
ALTER TABLE 表名 DROP 字段名;
复制代码

5、数据的增删改查(一行行数据)

必须先有库,再有表,最后才有数据

复制代码
# 1. 查看
select * from t1;

# 2. 插入数据
insert into t1 (id, name) values  (1, 'ly');  # 插入单条数据
insert into t1 (id, name) values  (2, 'tom'), (3, 'kevin');  # 批量插入数据
insert into t1 values (4,'tank');  # 如果与表头一一对应,可以不写表头
insert into t1 (name) value ('ly');  # 缺少则默认为空

# 3. 修改数据
update t1 set name = 'LY' where id=1;  # 修改指定id=1的为'LY'

# 4. 删除数据
delete from t1 where id=1;  # 删除id=1的哪一行
delete from t1;  # 删除表格t1,保留表头
truncate t1;  # 清空表t1,保留表头
复制代码

二、SQL语句的数据类型

1、整型

整型包括:tinyint, smallint, int, bigint

区别是存储数据的范围不一样

    # 验证:默认情况带不带符号
    create table t5 (id tinyint);
    create table t5 (id int);
    insert into t5 (id) values (-129), (128);

   '''结论:默认带符号'''

注意:整型的存储大小取决于类型,而不取决于括号里面的数字,而字符串的话是取决于括号里面的数字。(eg: varchar(32))

2、浮点型

复制代码
    float(255, 30) # 代表总共255位,小数占30位
    
    double(255, 30) # 代表总共255位,小数占30位
    
    decimal(65, 30) # 代表总共65位,小数占30位

# 区别:
#        精度不一样
#        decimal > double > float
复制代码
复制代码
# 验证
    create table t6 (id float(255, 30));
    create table t7 (id double(255, 30));
    create table t8 (id decimal(65, 30));
    
    # 插入数据
    insert into t6 values (1.11111111111111111111111);
    insert into t7 values (1.11111111111111111111111);
    insert into t8 values (1.11111111111111111111111);
   
复制代码

3、字符串

    char(4)  #
    # 字符串类型,存储的范围是4个字符,超过了直接报错,不超过按照4个字符存(存储较快,但不常用)
    
    varchar(4)
    # 字符串类型,存储的范围是4个字符,超过了直接报错,不超过有几个存几个(存储较慢,但兼容性好,比较常用)

# 验证
    create table t9 (id int, name char(4));
    create table t10 (id int, name varchar(4));
    
    # 插入数据
    insert into t9 (id, name) values(1, 'kevin');
    insert into t10 (id, name) values(1, 'kevin');
    

4、日期

datetime 年月日,时分秒(一般用这种)

date     年月日 

time     时分秒  

year     年份

复制代码
# 验证
    create table t11 (id int, 
                      reg_time datetime, 
                      reg1_time date,
                      reg2_time time,
                      reg3_time year
                     );
    # 插入数据
    insert into t11 values(1, '2022-1-1 11:11:11', '2022-01-02', '11:11:11', '2022');
复制代码

补充:MySQL Date 函数

5、枚举和集合

    枚举:多个里面选一个

# 验证
    create table t12 (
        id int,
        gender enum('', '', 'other')
    );
    
    insert into t12 values (1, '');

    集合:多个里面选多个

# 验证
    create table t13 (
        id int,
        hobby set('music', 'read', 'xj')
    );
    
    insert into t13 values (1, 'music');

三、存储引擎

1、定义及用途

存储引擎是存储数据的方式

存储引擎决定存储数据的方式不同

2、查看所有存储引擎

MySQL提供了多种数据引擎,命令:show engines;

3、MySQL常见的存储引擎

复制代码
1. MyISAM
    # 是mysql5.5及之前的版本默认的存储引擎
    存储的速度快,相对于InnoDB
    '''不支持事务,支持表锁'''
2. InnoDB
    # 是mysql5.6之后的版本默认的存储引擎
    存储速度慢,相对于MyISAM
    ''' 支持事务,行锁,外键'''
3. MEMORY 
    # 数据存储在内存中,一旦断电,数据立马丢失,或者数据重启也丢失
    
复制代码

验证三种存储引擎

复制代码
# 用三种存储引擎分别创建三张表
create table t2 (id int) engine=MyISAM;
create table t3 (id int) engine=InnoDB;
create table t4 (id int) engine=MEMORY;

# 插入数据验证
insert into t2(id) values(1); insert into t3(id) values(2); insert into t4(id) values(3);

# 重启客户端t4表不再存在
# 可以证明t4存在于内存中,重启后消失

复制代码

4、各个存储引擎的存储文件

复制代码
MyISAM的存储文件个数3个:
    1. .frm   # 存储数据的表结构
    2. .MYI   # 存索引 >>> 类似于书的目录 
    3. .MYD   # 存储表数据

 InnoDB的存储文件个数2个:   
    1. .frm # 存储表结构
    2. .ibd  # 存储数据和索引的
 Memory的存储文件个数1个:
    1. .frm #  存储表结构的
复制代码

 

附图:

posted @   三三得九86  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示