常用SQL语句,看这篇就够了


常用SQL语句,看这篇就够了

文章插图
 
一、摘要本文主要以 MySQL 数据库为基础,对常用 SQL 语句进行一次深度总结,由于篇幅较长,难免会有些遗漏的地方,欢迎网友批评指出!
具体内容主要有以下几个部分:
  • 库操作
  • 表操作
  • 数据操作
  • 运算符
  • 视图
  • 函数
  • 存储过程
  • 触发器
  • 序列
  • 用户权限
二、库操作2.1、新增库创建数据库比较简单,在创建的时候直接指定字符集、排序规则即可!
CREATE DATABASE IF NOT EXISTS `库名` default charset utf8mb4 COLLATE utf8mb4_unicode_ci;例子:
CREATE DATABASE IF NOT EXISTS test_db default charset utf8mb4 COLLATE utf8mb4_unicode_ci;2.2、修改库名数据库修改库名的有三种方法,如果是MyISAM存储引擎,那么可以直接去数据库目录mv就可以了,如果是Innodb完全不行,会提示相关表不存在 。
方法一RENAME database olddbname TO newdbname这个语法在 mysql-5.1.7 中被添加进来,到了mysql-5.1.23又去掉了,官方不推荐,会有丢失数据的危险!
方法二思路是先创建一个新库,之后将旧库的数据导入到新库,即可完成修改库名!
  • 1、创建需要改成新名的数据库 。
  • 2、mysqldum 导出要改名的数据库
  • 3、删除原来的旧库(确定是否真的需要)
当然这种方法虽然安全,但是如果数据量大,会比较耗时,同时还需要考虑到磁盘空间等硬件成本 。
例子:
# 将db1库备份到db1.sql文件mysqldump -u root -p db1 > /usr/db1.sql;# 导入备份文件到新库db2mysql -u root -p db2 < /root/db1.sql;# 删除旧库(如果真的需要)DROP DATABASE db1;方法三直接跑一个 shell 脚本!
#!/bin/bash# 假设将db1数据库名改为db2# MyISAM直接更改数据库目录下的文件即可mysql -uroot -p123456 -e 'create database if not exists db2'list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='db1'")for table in $list_tabledomysql -uroot -p123456 -e "rename table db1.$table to db2.$table"done其中p123456,p是password的简称,123456表示数据库密码值!
2.3、删除库名删除库,比较简单,直接删除即可!
DROP DATABASE db1;2.4、使用库USE db2;三、表操作3.1、创建表CREATE TABLE ts_user (id bigint(20) unsigned NOT NULL COMMENT '编码',name varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用户姓名',mobile varchar(11) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '手机号',create_userid varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建人',create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',update_userid varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '更新人',update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (id),KEY idx_create_time (create_time) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';3.2、修改表名ALTERTABLE ts_user RENAME TO ts_new_user;3.3、删除表DROP TABLE ts_new_user;3.4、字段操作3.4.1、查询表字段show full columns from ts_user;3.4.2、新增字段ALTER TABLE ts_user add column gender tinyint(4) NOT NULL DEFAULT '1' COMMENT '性别,1,男;2,女' AFTER mobile;3.4.3、修改字段ALTER TABLE ts_user modify column mobile varchar(30) NOT NULL DEFAULT '' COMMENT '用户手机号';3.4.4、删除字段ALTER TABLE ts_user drop column gender;3.5、索引操作3.5.1、查询表索引 SHOW INDEXES FROM ts_user;3.5.2、新增普通索引alter table ts_user add index idx_id (id);3.5.3、新增唯一索引alter table ts_user add unique idx_id (id);3.5.4、新增主键索引alter table ts_user add primary key idx_id (id) ;3.5.5、新增多列索引alter table ts_user add index idx_id_name (id,name) ;3.5.6、新增全文索引alter table ts_user add fulltext idx_id (id) ;3.5.7、删除索引# 删除普通索引alter table ts_user drop index idx_id;# 删除主键索引alter table ts_user drop primary key;


推荐阅读