mysql数据库sql语句整理

数据库操作

  • 显示所有数据库
    SHOW DATABASES;
    
  • 查看当前数据库中的所有表
    SHOW TABLES;
    
  • 创建数据库
    CREATE DATABASE database_name;
  • 删除数据库
    DROP DATABASE database_name;
  • 选择数据库
    USE database_name;
  • 显示当前所选择数据库
    SELECT DATABASE();
    

表操作

  • 创建表
    CREATE TABLE table_name (
      column1 datatype,
      column2 datatype,
      ...
    );
  • 删除表
    DROP TABLE table_name;
  • 插入数据
    INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
  • 选择数据
    SELECT column1, column2, ... FROM table_name;
  • 修改表结构
    ALTER TABLE table_name [ADD|DROP|MODIFY] column_name datatype;
  • 连接表
    SELECT column1_name, column2_name, ...
    FROM table1
    INNER JOIN table2 ON table1.column1_name = table2.column2_name;
    
  • 显示所有表的状态
    SHOW TABLE STATUS;

  • 显示特定表的状态
    SHOW TABLE STATUS LIKE 'your_table_name';
  • 查看表的结构
    DESCRIBE table_name;
    
  • 修改表的名称
    RENAME TABLE old_table_name TO new_table_name;
    

数据操作

  • 更新数据
    UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
  • 删除数据
    DELETE FROM table_name WHERE condition;
  • 排序数据
    SELECT column1_name, column2_name, ...
    FROM table_name
    ORDER BY column_name ASC|DESC;
    
  • 分组数据
    SELECT column1_name, column2_name, ...
    FROM table_name
    GROUP BY column_name;
    
  • 过滤数据
    SELECT column1_name, column2_name, ...
    FROM table_name
    WHERE condition;
    
  • 限制数据
    SELECT column1_name, column2_name, ...
    FROM table_name
    LIMIT number;
    
  • 偏移数据
    SELECT column1_name, column2_name, ...
    FROM table_name
    LIMIT number OFFSET offset;
    

权限管理

  • 授权
    GRANT privileges ON database_name.table_name TO 'username'@'host';
  • 撤销权限
    REVOKE privilege ON database_name.table_name FROM 'username'@'host';
  • 刷新权限
    FLUSH PRIVILEGES;
    

  • 查看特定用户的权限
    SHOW GRANTS FOR 'username'@'hostname';
  • 查看当前登录用户的权限
    SHOW GRANTS;
  • 允许指定用户从任何主机连接
    UPDATE mysql.user SET host = '%' WHERE user = 'username';
    

索引

  • 创建索引
    CREATE INDEX index_name ON table_name (column_name);
    
  • 删除索引
    DROP INDEX index_name ON table_name;
    
  • 查看索引:
    SHOW INDEXES FROM table_name;
    
  • 优化索引:
    OPTIMIZE TABLE table_name;
    
  • 重建索引:
    ALTER TABLE table_name REBUILD INDEX index_name;
  • 使用索引提示:
    SELECT * FROM table_name USE INDEX (index_name) WHERE column_name = value;
    
  • 避免使用覆盖索引:
    SELECT column_name FROM table_name WHERE index_column_name = value;
    
  • 避免使用冗余索引:
    CREATE INDEX index_name ON table_name (column_name1, column_name2);
    CREATE INDEX index_name2 ON table_name (column_name1);
    
  • 避免使用过长的索引:
    CREATE INDEX index_name ON table_name (column_name(255));
    
  • 避免使用不必要的索引:
    CREATE INDEX index_name ON table_name (column_name) WHERE column_name IS NOT NULL;
    

  • 创建主键
    CREATE TABLE table_name (
      column_name1 datatype PRIMARY KEY,
      column_name2 datatype,
      column_name3 datatype
    );
    
  • 创建外键:
    CREATE TABLE table_name (
      column_name1 datatype,
      column_name2 datatype,
      column_name3 datatype,
      FOREIGN KEY (column_name2) REFERENCES other_table (column_name)
    );
    
  • 创建唯一键:
    CREATE TABLE table_name (
      column_name1 datatype UNIQUE,
      column_name2 datatype,
      column_name3 datatype
    );
    
  • 删除主键:
    ALTER TABLE table_name DROP PRIMARY KEY;
    
  • 删除外键:
    ALTER TABLE table_name DROP FOREIGN KEY foreign_key_name;
    
  • 删除唯一键:
    ALTER TABLE table_name DROP INDEX unique_index_name;
    
  • 查看主键:
    SHOW KEYS FROM table_name WHERE Key_name = 'PRIMARY';
    
  • 查看外键:
    SHOW CREATE TABLE table_name;
    
  • 查看唯一键:
    SHOW KEYS FROM table_name WHERE Key_name = 'UNIQUE';
    
  • 优化键:
    OPTIMIZE TABLE table_name;
    
  • 重建键:
    ALTER TABLE table_name REBUILD KEY key_name;
    
  • 使用键提示:
    SELECT * FROM table_name USE KEY (key_name) WHERE column_name = value;
    
  • 避免使用覆盖键:
    SELECT column_name FROM table_name WHERE key_column_name = value;
    
  • 避免使用冗余键:
    CREATE UNIQUE INDEX index_name ON table_name (column_name1, column_name2);
    CREATE UNIQUE INDEX index_name2 ON table_name (column_name1);
    
  • 避免使用过长的键:
    CREATE UNIQUE INDEX index_name ON table_name (column_name(255));
    
  • 避免使用不必要的键:
    CREATE UNIQUE INDEX index_name ON table_name (column_name) WHERE column_name IS NOT NULL;
    

多表查询

  • 内连接
    SELECT column_name1, column_name2
    FROM table1
    INNER JOIN table2
    ON table1.column_name1 = table2.column_name2;
    
  • 左连接:
    SELECT column_name1, column_name2
    FROM table1
    LEFT JOIN table2
    ON table1.column_name1 = table2.column_name2;
    
  • 右连接:
    SELECT column_name1, column_name2
    FROM table1
    RIGHT JOIN table2
    ON table1.column_name1 = table2.column_name2;
    
  • 全连接:
    SELECT column_name1, column_name2
    FROM table1
    FULL JOIN table2
    ON table1.column_name1 = table2.column_name2;
    
  • 自然连接:
    SELECT column_name1, column_name2
    FROM table1
    NATURAL JOIN table2;
    
  • 使用别名:
    SELECT t1.column_name1, t2.column_name2
    FROM table1 AS t1
    JOIN table2 AS t2
    ON t1.column_name1 = t2.column_name2;
    
  • 使用连接条件:
    SELECT column_name1, column_name2
    FROM table1
    JOIN table2
    ON table1.column_name1 = table2.column_name2
    AND table1.column_name3 = table2.column_name4;
    
  • 使用连接子查询:
    SELECT column_name1, column_name2
    FROM table1
    JOIN (SELECT column_name3, column_name4 FROM table2) AS t2
    ON table1.column_name1 = t2.column_name3;
    
  • 使用多表连接:
    SELECT column_name1, column_name2, column_name3
    FROM table1
    JOIN table2 ON table1.column_name1 = table2.column_name2
    JOIN table3 ON table2.column_name3 = table3.column_name3;
    
  • 使用UNION操作符:
    SELECT column_name1, column_name2
    FROM table1
    UNION
    SELECT column_name3, column_name4
    FROM table2;
    
  • 使用INTERSECT操作符:
    SELECT column_name1, column_name2
    FROM table1
    INTERSECT
    SELECT column_name3, column_name4
    FROM table2;
    
  • 使用EXCEPT操作符:
    SELECT column_name1, column_name2
    FROM table1
    EXCEPT
    SELECT column_name3, column_name4
    FROM table2;
    

其他

  • 创建用户
    CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
    
  • 修改用户密码
    SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');

    or

    ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
  • 查看用户和用户信息
    SELECT user, host FROM mysql.user;
    
  • 删除用户
    DROP USER 'username'@'host';
  • 事务提交
    COMMIT;
  • 事务回滚
    ROLLBACK;
  • 子查询
    SELECT column1_name, column2_name, ...
    FROM table1
    WHERE column1_name IN (SELECT column2_name FROM table2);
    
  • 视图
    CREATE VIEW view_name AS
    SELECT column1_name, column2_name, ...
    FROM table_name
    WHERE condition;
    
  • 存储过程
    CREATE PROCEDURE procedure_name (
      parameter1_name parameter1_type,
      parameter2_name parameter2_type,
      ...
    )
    BEGIN
      -- Code to be executed
    END;
    
  • 函数
    CREATE FUNCTION function_name (
      parameter1_name parameter1_type,
      parameter2_name parameter2_type,
      ...
    )
    RETURNS return_type
    BEGIN
      -- Code to be executed
    END;
    
  • 触发器
    CREATE TRIGGER trigger_name
    ON table_name
    FOR INSERT|UPDATE|DELETE
    AS
    BEGIN
      -- Code to be executed
    END;
    

  • 33
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值