第三十六章 针对记录的SQL语句

本文详细阐述了SQL基本操作,包括数据记录处理、存储引擎选择(MyISAM、InnoDB、MEMORY)、配置文件使用以及各种数据类型(如整型、浮点型、字符串、日期和枚举)的运用。

针对记录的SQL语句

记录:表中的一行一行的数据称之为是一条记录
# 需要先有库、再有表、最后是操作记录


1. 查看记录

    select * from t1;  # 查所有


2. 增加数据

    insert into t1 values(1, 'kevin', 20); # 第一种方式,全字段增加, 单条增加
    insert into t1 values(2, 'kevin1', 20),(3, 'kevin2', 20),(4, 'kevin3', 20),(5, 'kevin4', 20),(6, 'kevin5', 20); # 第二种方式,全字段增加, 批量增加
    insert into t1(id, name) values(7, 'kevin7'); # 空的使用NULL填充


3. 修改

    update t1 set name='tank' where id=1;
    update t1 set age=30 where name='tank';
    update t1 set name='jerry',age=30 where id=3;
    update t1 set name='oscar' where name='tank' and age=30;
    update t1 set name='oscar' where name='kevin3' or name='kevin4';
    update t1 set name='tony';


4. 删除

    delete from t1 where id=1;
    delete from t1 where id=2 or id=7;
    delete from t1;  # 这是清空表

配置文件的使用

每修改一次配置文件,就得重启服务端才能生效
"""把以下内容加到配置文件中"""
[mysqld]
character-set-server=utf8  #改字符编码
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

存储引擎的使用(理论,重要)

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

如何查看存储引擎:show engines;

MyISAM:
    它是MySQL5.5版本及之前的版本默认的存储引擎、它的读取速度很快相比较与InnoDB,但是它的数据安全性较低,相对于InnoDB存储引擎
    """不支持事务、支持的是表锁"""
InnoDB:
    它是MySQL5.6及之后的版本默认的存储引擎、它的读取速度相对慢一些,但是数据的安全性较高一些
    """它支持:事务、行锁、外键"""
MEMORY:
    它是基于内存存储的,意味着断电数据丢失、重启服务端数据就丢失

对于不同的存储引擎,硬盘中保存的文件个数也是不一样的
MyISAM:3个文件
        .frm 存储表结构
        .MYD 存储的是表数据
        .MYI 存索引(当成是字典的目录,加快查询速度)
InnoDB:2个文件
        .frm 存储表结构
        .ibd 存储数据和索引
MEMORY:1个文件
        .frm 存储表结构

数据类型

1.整型

存储整数的:tinyint smallint int bigint 等

不同的数据类型区别就是所存储的范围不一样:

    tinyint: 它是使用一个字节来保存数据,一个字节代表8位 11111111--->256种情况(0-255) (-128-127)
    smallint:2个字节, 代表16位, 65536(0-65535) (-32768-32767)
    mediumint: 3个字节 
    int: 4个字节,2**32=42亿....(-21...- 21...)
    bigint:8个字节(最大的) 可以存手机号(11)

整型默认情况下是带符号的,就例如

tinyint有256种情况,默认情况下范围是(-128-127)

怎么样去掉符号:create table t6 (id tinyint unsigned);  unsigned代表无符号

2.浮点型

    float(255, 30) # 总位数是255位、小数点后30位
    double(255, 30) # 总位数是255位、小数点后30位
    decimal(65, 30) # 总位数是65位、小数点后30位

可以看出来三者的精度不一样

3.字符串

char(4): 定长类型,超出4位,就报错,不够4位,使用空格填充   abc helloworld
 varchar(4): 可变长类型,超出4位,报错,不够4位的,有几位存几位 abc a

    create table t10 (id int, name char(4));
    create table t11 (id int, name varchar(4));
    
    insert into t10 values(1, 'jerry');
    insert into t11 values(1, 'jerry');

如图直接报错        

是因为设置成了严格模式:

命令行模式:临时修改
    set global sql_mode='STRICT_TRANS_TABLES'; # 不区分大小写

 ## 研究定长和不定长
    create table t12 (id int, name char(4));
    create table t13 (id int, name varchar(4));
    
    insert into t12 values(1, 'ke');
    insert into t13 values(1, 'ke');
    
    ## 验证是否补充了空格
    select char_length(name) from t12;
    select char_length(name) from t13;

 # 设置严格模式
    1. 命令行模式:临时修改
    set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH'; # 不区分大小写

4. 日期

date   :年月日       

datetime   :年月日 十分秒         t

ime    :十分秒  

year     :年

create table t14 (
    id int, 
    reg_time date, 
    reg1_time datetime, 
    reg2_time time, 
    reg3_time year
);

insert into t14 values(1, '2023-10-1', '2023-11-11 11:11:11', '11:11:11', 2023);

5.枚举

	# 多选一
    enum
    create table t15 (id int, hobby enum('read', 'music', 'smoking','drink','play','movement'));
    insert into t15 values(1, 'read');
    
    
    # 多选多:包含多选一
    set
	create table t16 (id int, hobby set('read', 'music', 'smoking','drink','play','movement'));
	insert into t16 values(2, 'read,music,play');

     

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值