复习MySQL

表相关操作

创建表
sql 复制代码
CREATE TABLE [IF NOT EXISTS] table_name (
  `runoob_id` INT UNSIGNED AUTO_INCREMENT COMMENT '自增主键ID', 
  `runoob_title` VARCHAR(100) NOT NULL COMMENT '文章标题(非空)',
  `runoob_author` VARCHAR(40) NOT NULL COMMENT '作者(非空)',
  `submission_date` DATE DEFAULT NULL COMMENT '提交日期(允许空)',
  -- 统一指定主键(若单个主键,也可在 `runoob_id` 后直接加 PRIMARY KEY)
  PRIMARY KEY (`runoob_id`)
) 

ENGINE=InnoDB 
DEFAULT CHARSET=utf8mb4 
COLLATE=utf8mb4_general_ci 
COMMENT='文章信息表'; -- 表的备注
查看表结构
mysql 复制代码
desc table table_name;
删除表
mysql 复制代码
-- 表结构也会删除
drop table [IF EXISTS] table_name;
mysql 复制代码
-- 保留表结构, 只删除数据
truncate TABLE table_name;
插入数据
mysql 复制代码
insert into table_name (column1, column2, column3, ...)
values (value1, value2, value3, ...);

如果要在每一列列插入数据,可以省略列名:

mysql 复制代码
insert into table_name
values (value1,value1, value3, ...);
查询
mysql 复制代码
select [distinct] column1, column2, ...       -- distinct 去重  
from table_name                             
    [join table2 on table_name.column = table2.column]     -- 内连接(取两表中匹配的记录)  
    [left join table3 on table_name.column = table3.column] -- 左连接(取左表全部+右表匹配记录)  

where condition                            -- 过滤条件(分组前过滤)  
group by column_name(s)                    -- 按字段分组(通常和聚合函数一起用) 
having condition                           -- 分组后过滤(作用于聚合结果)  
order by column_name [asc | desc]          -- asc 升序(默认),desc 降序  
limit [offset,] row_count;                 -- 限制返回的行数,可带偏移量(分页)
更新
mysql 复制代码
update customers  
set total_purchases = (  
    select sum(amount)  
    from orders  
    where orders.customer_id = customers.customer_id  
)  
where customer_type = 'premium';
alter

添加列

mysql 复制代码
alter table table_name 
add column column_name datatype;

修改数据类型:

mysql 复制代码
alter table table_name  
modify column column_name new_datatype;

修改列名:

mysql 复制代码
alter table table_name  
change column old_column_name new_column_name datatype;

删除列:

mysql 复制代码
alter table table_name  
drop column column_name;

添加主键:

mysql 复制代码
alter table table_name  
add primary key (column_name);
通配符
  1. 百分号 %:匹配零个或多个字符。比如 'a%' 匹配以字母 'a' 开头的任何字符串。

  2. 下划线_ :表示一个字符

连接

INNER JOIN(内连接/等值连接)

返回两个表中满足连接条件的匹配记录(即两表的交集)。

sql 复制代码
  SELECT 列名 FROM 表1 INNER JOIN 表2 ON 表1.关联列 = 表2.关联列;

INNER可省略

LEFT JOIN(左连接)

返回左表的所有记录 ,以及右表中与左表匹配的记录;若右表无匹配,显示NULL

sql 复制代码
  SELECT 列名 FROM 左表 LEFT JOIN 右表 ON 左表.关联列 = 右表.关联列;
RIGHT JOIN(右连接)

返回右表的所有记录 ,以及左表中与右表匹配的记录;若左表无匹配,显示NULL

sql 复制代码
  SELECT 列名 FROM 左表 RIGHT JOIN 右表 ON 左表.关联列 = 右表.关联列;

数据库相关操作

注意 sql 结尾有分号

切换数据库:

mysql 复制代码
use database;  

列出所选数据库中所有表:

mysql 复制代码
show tables;

创建数据库:

mysql 复制代码
create database [if not exists] database_name
  [character set charset_name] -- 字符集
  [collate collation_name];   -- 排序规则

删除数据库:

mysql 复制代码
drop database database_name; -- 直接删除数据库,不检查是否存在 或 
drop database [if exists] database_name;

NULL值

NULL 表示缺失或未知,不等于空字符串("")或0,不代表任何具体值

普通的 =!= 对NULL无效,需使用以下运算符:

  1. IS NULL :当列值为NULL时返回true

    例:SELECT * FROM 表 WHERE 列 IS NULL;

  2. IS NOT NULL :当列值不为NULL时返回true

    例:SELECT * FROM 表 WHERE 列 IS NOT NULL;

  3. <=> :特殊比较运算符,当两值相等或都为NULL 时返回true

    例:SELECT * FROM 表 WHERE 列 <=> NULL;(等价于IS NULL

相关推荐
黑金IT4 小时前
3D虚拟人模型转换的完整指南
服务器·数据库·3d
凌~风4 小时前
数据库原理实验报告:在ider里搭建mysql数据库
数据库·mysql·实验报告
keke_俩个科4 小时前
ShardingSphere分库分表基础配置与使用说明
java·数据库·分布式·spring
2401_841495644 小时前
【数据库开发】个人信息管理的数据库创建以及查询方法(最简单)
数据库·sql·mysql·sqlite·数据库开发·个人数据库·管理个人信息
RestCloud5 小时前
GaussDB 数据集成方案:ETL 工具如何简化企业上云过程
数据库
森G5 小时前
2六Ubuntu文件系统移植
linux·ubuntu
21号 16 小时前
4.客户端(Redis)
开发语言·数据库·github
lang201509286 小时前
MySQL 8.0动态TLS配置全解析
mysql