阿东的笔记_  工具
## MySQL数据库相关,常用SQL - [数据库表](#sql-table-) - 建库 - 建表 - 修改表,新增字段 - 修改表,修改字段 - 删除字段 - [索引](#sql-index-unique-primary-key-) - [函数](#sql-function-) - [存储过程](#sql-procedure-) - [事件](#sql-event-) - [用户授权](#sql-user-) #### SQL TABLE 数据库表 ``` SQL -- MySQL 8.0.13 -- 建库 CREATE DATABASE IF NOT EXISTS `dbname` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE `user`; -- 建表 DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT, `username` VARCHAR(16) NOT NULL COMMENT '用户名', `nickname` VARCHAR(16) NOT NULL COMMENT '昵称', `pwd` VARCHAR(32) NOT NULL COMMENT '密码', `score` DECIMAL(16,2) DEFAULT NULL COMMENT '得分', `balance` INT(11) DEFAULT NULL COMMENT '余额(单位/分)', `other_info` TEXT DEFAULT NULL COMMENT '其他信息', `user_type` ENUM('admin','develop','normal') DEFAULT NULL COMMENT '类型', `update_time` TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '更新时间', `create_time` TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), -- UNIQUE KEY `username` (`username`), KEY `nickname`(`nickname`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; -- 修改表,新增字段 ALTER TABLE `dbname`.`user` ADD COLUMN `last_login_time` TIMESTAMP(3) DEFAULT NULL COMMENT '最后登陆时间' AFTER `user_type`; -- 修改表,修改字段 ALTER TABLE `dbname`.`user` MODIFY COLUMN `last_login_time` TIMESTAMP(6); -- 修改表,修改字段名或数据类型 ALTER TABLE `dbname`.`user` CHANGE `last_login_time` `last_login` TIMESTAMP(6) DEFAULT NULL; ALTER TABLE `dbname`.`user` CHANGE `last_login` `last_login` DATETIME NOT NULL; -- 删除字段 ALTER TABLE `dbname`.`user` DROP COLUMN `last_login`; ``` #### SQL INDEX UNIQUE PRIMARY KEY 索引 ``` SQL -- 创建索引 ALTER TABLE -- 普通索引 ALTER TABLE `dbname`.`user` ADD INDEX `index_last_login` (`last_login`); -- 唯一索引 ALTER TABLE `dbname`.`user` ADD UNIQUE (`username`); -- 主键索引 ALTER TABLE `dbname`.`user` ADD PRIMARY KEY ('id'); -- 创建索引 CREATE CREATE INDEX `index_username` ON `dbname`.`user` (`username`); CREATE UNIQUE INDEX `un_username` ON `dbname`.`user` (`username`); -- 删除 索引 DROP INDEX `index_username` ON `dbname`.`user`; ALTER TABLE `dbname`.`user` DROP INDEX `index_username`; ALTER TABLE `dbname`.`user` DROP PRIMARY KEY; ``` #### SQL FUNCTION 创建函数 ```SQL DROP FUNCTION IF EXISTS `fun_get_value`; DELIMITER ;; -- 创建函数 CREATE DEFINER=`root`@`%` FUNCTION `fun_get_value`(u float , v float ) RETURNS decimal(16,4) BEGIN return cast(sqrt(u+v) as decimal(16,4)); END;; DELIMITER; ``` #### SQL PROCEDURE 创建存储过程 ``` SQL DROP PROCEDURE IF EXISTS `proc_insert_data`; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `proc_insert_data`( p_1 VARCHAR(6), -- 参数 p_2 DATETIME, -- 参数 p_3 INT,-- 参数 OUT p_4 INT ) BEGIN SET @time = NOW(); -- 操作 END;; DELIMITER; ``` #### SQL EVENT 创建事件 ``` SQL DROP EVENT IF EXISTS `job_load_data`; DELIMITER ;; CREATE DEFINER=`root`@`%` EVENT `job_load_data` ON SCHEDULE EVERY 10 MINUTE STARTS '2021-01-01 00:00:00' ON COMPLETION PRESERVE ENABLE DO BEGIN call `xxxxx`(); -- 执行 END;; DELIMITER; ``` #### SQL USER 用户/授权 ```SQL -- 创建 CREATE USER 'root_test'@'%' IDENTIFIED BY 'adong98765'; -- 修改 ALTER USER 'root_test'@'%' IDENTIFIED BY '123456'; -- 授权 GRANT ALL PRIVILEGES ON *.* to 'root_test'@'%'; -- 授权 GRANT SELECT ON *.* TO 'root_test'@'%'; -- 生效 FLUSH PRIVILEGES; ```
adddge@sohu.com  | 桂ICP备2022009838号-2