原生SQL的CRUD

数值类型

  1. 整数

    类型 字节 范围 最大长度(+/-占一位)
    tinyint 1 2^8^ 4
    smallint 2 2^16^ 6
    mediumint 3 2^24^ 8
    int 4 2^32^ 11
    bigint 8 2^64^ 20
  2. 浮点数

    类型 字节 范围
    float 4 2^32^
    double 8 2^64^
    decimal 可变 可变
  3. 字符串

    类型 最大长度 说明
    char(n) 255字符 固定长度n,存储加密后的密码
    varchar(n) 65535字符 动态长度,实际存储的字节数要加1/2
    tinytext 2^8^字节 短文本字符串
    text 2^16^字节 文章内容、产品描述、日志
    mdiumtext 2^24^字节 大型文章、书籍章节
    longtext 2^32^字节 整个电子书、巨量日志数据
  4. 日期和时间类型

    类型 格式
    date YYYY-MM-DD
    time HH:MM:SS
    datetime YYYY-MM-DD HH:MM:SS
    year YYYY

CURD操作

  1. DATABASE

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    -- 增
    create database class
    character set utf8mb4
    collate utf8mb4_unicode_ci; --ci是case insensitive意识,输入sql语法对于数据大小写都视为一个对象

    -- 删
    drop database if exists class; --不加条件删除不存在数据库会报错

    -- 改
    ALTER DATABASE class CHARACTER SET utf8mb4;

    -- 查
    show databases;

    -- 使用
    use class;

    -- 位置
    select database();
  2. TABLE

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    -- 增
    CREATE TABLE user(
    id INT(2) zerofill UNSIGNED AUTO_INCREMENT PRIMARY KEY, --int(2)不是限制存储范围,而是宽度至少,比如5 -> 05,要配合zerofill才能看到效果,zerofill紧跟int(2)后面
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(30) UNIQUE,
    password VARCHAR(30) NOT NULL,
    age TINYINT UNSIGNED,
    `created at` DATETIME DEFAULT '2025-03-29 11:11:11' --``标识符,''或者""字符串
    );

    -- 删
    drop table if exists users;

    -- 查
    show users;
    desc users;

    -- 添加/删除新列
    ALTER TABLE users ADD/DROP age INT;

    -- 修改原有列的类型
    ALTER TABLE users MODIFY username VARCHAR(100);

    -- 重命名列
    ALTER TABLE users CHANGE username user_name VARCHAR(100);

    -- 重命名表
    ALTER TABLE users RENAME TO customers;
  3. DATA

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    -- 增
    1.明确给的值插入
    insert into users (username,email,passwd,age,created_at)
    values('zjy','2013369261@qq.com','zjyhhh666',19,'2025-03-29 10:10:10'),
    ('serein','zjy2013369261@gamil.com','zjyhhh666',19,'2025-03-29 10:10:10');
    2. 查询结果插入
    INSERT INTO users (username) SELECT username FROM users;
    -- 删
    delete from users where id=1;

    -- 改
    update users set name='serein' where username='zjy';

    -- 查
    select username,passwd from users where id=1;
    select * from users order by age desc,id asc; --优先age降序,一样的话id升序排序
    select count(*) from users; --总共多少行,包含null
    select count(username) from users; --不包含null
    select * from users limit 2; --查询前两条
    select * from users limit 2,3; --跳过2条,查询3条

运算符

!= in
= or
< and
> is null
>= between
<= like
not

  1. null不等于空字符串
  2. like基本使用:select * from users where name like ‘%jy%’ –查询中间包含’jy‘的

分组函数

count() min()
avg() sum()
max()

:括号里面写列名

索引

1
2
3
4
5
6
7
8
9
--查看
show index from student\G;

--创建
create index index_name on student(name);
create unique index index_name on student(name);

--删除
drop index index_name on student;

事务和锁

1
2
3
4
5
6
7
8
9
10
11
12
13
1. 事务
--开启事务
begin

--回滚
rollback

--提交
commit

2. 读写锁
lock table student read/write
unlock tables;