本文最后更新于 2025-12-17,文章内容可能已经过时。

数据库操作

  • 查看当前所有的数据库: show databases;

  • 创建数据库:create database 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

    create database day25db;
    
    create database day25db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    

  • 删除数据库:drop database 数据库名;

  • 进入数据(进入文件):use 数据库;

  • 进入数据库 use 数据库;,查看当前所有表:show tables;

数据表操作

  • 创建表结构

    create table 表名(
        列名  类型,
        列名  类型,
        列名  类型
    )default charset=utf8;
    
    create table tb1(
    	id int,
        name varchar(16)
    )default charset=utf8;
    
    create table tb2(
    	id int,
        name varchar(16) not null,   -- 不允许为空
        email varchar(32) null,      -- 允许为空(默认)
        age int
    )default charset=utf8;
    
    create table tb3(
    	id int,
        name varchar(16) not null,   -- 不允许为空
        email varchar(32) null,      -- 允许为空(默认)
        age int default 3            -- 插入数据时,如果不给age列设置值,默认值:3
    )default charset=utf8;
    
    create table tb4(
    	id int primary key,			 -- 主键(不允许为空、不能重复)
        name varchar(16) not null,   -- 不允许为空
        email varchar(32) null,      -- 允许为空(默认)
        age int default 3            -- 插入数据时,如果不给age列设置值,默认值:3
    )default charset=utf8;
    

    主键一般用于表示当前这条数据的ID编号(类似于人的身份证),需要我们自己来维护一个不重复的值,比较繁琐。所以,在数据库中一般会将主键和自增结合。

    create table tb5(
    	id int not null auto_increment primary key,	-- 不允许为空 & 主键 & 自增
        name varchar(16) not null,   		-- 不允许为空
        email varchar(32) null,      		-- 允许为空(默认)
        age int default 3            		-- 插入数据时,如果不给age列设置值,默认值:3
    )default charset=utf8;
    

    注意:一个表中只能有一个自增列【自增列,一般都是主键】。

  • 删除表 drop table 表名;

  • 清空表 delete from 表名;truncate table 表名;(速度快、无法回滚撤销等)

  • 修改表

    • 添加列

      alter table 表名 add 列名 类型;
      alter table 表名 add 列名 类型 DEFAULT 默认值;
      alter table 表名 add 列名 类型 not null default 默认值;
      alter table 表名 add 列名 类型 not null primary key auto_increment;
      
    • 删除列

      alter table 表名 drop column 列名;
      
    • 修改列 类型

      alter table 表名 modify column 列名 类型;
      
    • 修改列 类型 + 名称

      alter table 表名 change 原列名 新列名 新类型;
      
      alter table  tb change id nid int not null;
      alter table  tb change id id int not null default 5;
      alter table  tb change id id int not null primary key auto_increment;
      
      alter table  tb change id id int; -- 允许为空,删除默认值,删除自增。
      
    • 修改列 默认值

      ALTER TABLE 表名 ALTER 列名 SET DEFAULT 1000;
      
    • 删除列 默认值

      ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;
      
    • 添加主键

      alter table 表名 add primary key(列名);
      
    • 删除主键

      alter table 表名 drop primary key;
      

*数据操作(重点)

数据行操作的相关SQL语句(指令)如下:

  • 数据

    insert into 表名 (列名,列名,列名) values(对应列的值,对应列的值,对应列的值);
    
    insert into tb1(name,password) values('武沛齐','123123');
    insert into tb1(name,password) values('武沛齐','123123'),('alex','123');
    
    insert into tb1 values('武沛齐','123123'),('alex','123'); -- 如果表中只有2列
    

  • 除数据

    delete from 表名;
    delete from 表名 where 条件;
    
    delete from tb1;
    delete from tb1 where name="wupeiqi";
    delete from tb1 where name="wupeiqi" and password="123";
    delete from tb1 where id>9;
    

  • 数据

    update 表名 set 列名=值;
    update 表名 set 列名=值 where 条件;
    
    update tb1 set name="wupeiqi";
    update tb1 set name="wupeiqi" where id=1;
    
    update tb1 set age=age+1;  -- 整型
    update tb1 set age=age+1 where id=2;
    
    update L3 set name=concat(name,"db");
    update L3 set name=concat(name,"123")  where id=2;  -- concat一个函数,可以拼接字符串
    

  • 询数据

    select * from 表名;
    select 列名,列名,列名 from 表名;
    select 列名,列名 as 别名,列名 from 表名;
    select * from 表名 where 条件;
    
    select * from tb1;
    select id,name,age from tb1;
    select id,name as N,age, from tb1;
    select id,name as N,age, 111 from tb1;
    
    select * from tb1 where id = 1;
    select * from tb1 where id > 1;
    select * from tb1 where id != 1;
    select * from tb1 where name="wupeiqi" and password="123";