一、摘要
本文主要以 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; # 导入备份文件到新库db2 mysql -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_table do mysql -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、修改表名
ALTER TABLE 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;