# MySQL 数据库表相关
# 本demo由 baldyoung 提供
########################################################################
#(以Windows系统为例,需确保当前路径能够搜索到mysql.exe这个可执行文件,如果没有配置环境变量,记得切换到mysql的bin目录)
-- cmd连接MySQL数据库
mysql -h 地址 -u 用户 -p 数据库名
(例如>> mysql -h localhost -u root -p mysql)
-- 执行SQL脚本
source 绝对路径或者相对路径/文件名.sql;
########################################################################
# 数据库的常见操作
-- 切换数据库
USE mysql;
-- 查看建数据库的语句
SHOW CREATE DATABASE mysql;
-- 罗列当前数据库下的所有表
SHOW TABLES;
-- 查看建表的语句
SHOW CREATE TABLE db;
-- ------ 因MySQL版本的不同,修改密码的方式可能不同!
-- 修改账号密码(方法一)
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
-- 修改账号密码(方法二)
update user set password=password('新密码') where user='用户名';
-- 修改账号密码(方法三)
update mysql.user set authentication_string=password('新密码') where user='用户名';
-- 同步当前变动
FLUSH PRIVILEGES;
########################################################################
# 创建数据库
/*
CHARACTER 指定数据库存储字符串的默认字符集;
COLLATE 指定数据库的默认校对规则,用来比较字符串的方式,解决排序和字符分组的问题;
*/
CREATE DATABASE IF NOT EXISTS targetDB
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
-- 跳转到指定数据库下
USE targetDB;
-- 创建表
-- ---------------------------------------- 用户表
DROP TABLE IF EXISTS x_user;
CREATE TABLE x_user (
userId INT UNSIGNED UNIQUE NOT NULL AUTO_INCREMENT COMMENT'主键[唯一, 非空]{默认:自增}',
userName VARCHAR(10) NOT NULL COMMENT'用户名称',
userAccount VARCHAR(10) UNIQUE NOT NULL COMMENT'用户登录名',
userEmail VARCHAR(30) NOT NULL COMMENT'用户邮箱',
userPassword VARCHAR(8) NOT NULL COMMENT'用户登录密码',
userStatus SMALLINT DEFAULT 0 COMMENT'用户状态',
userInfo VARCHAR(50) COMMENT'用户备注',
updateDateTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最近修改时间',
createDateTime DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT'创建时间',
PRIMARY KEY (userId)
) AUTO_INCREMENT=1001;
-- 创建索引
CREATE INDEX index_userEmail ON x_user(userEmail);
-- 数据操作
INSERT INTO x_user (userName, userEmail, userAccount, userPassword)
VALUES ('测试账号', 'email@126.com', 'test', 'password');
DELETE FROM x_user WHERE userId = 0;
UPDATE x_user SET userId = 0 WHERE userId = 0;
-- 展示指定表的字段数据
SHOW FULL FIELDS FROM x_user;
# 修改数据库表
-- 新增字段(int类型)
ALTER TABLE testUser ADD COLUMN arg_not_null INT NOT NULL AFTER id; # int类型的字段在这种情况下会被默认设为0
ALTER TABLE testUser ADD COLUMN arg_can_null INT AFTER id; # 在未指明not null时,默认是null
ALTER TABLE testUser ADD COLUMN arg_default_value INT DEFAULT 3; # 所以新增一个字段,最好还是指明默认数值
-- 新增字段(varchar类型)
ALTER TABLE testUser ADD COLUMN arg_type_varchar VARCHAR(50) NOT NULL; # varchar类型默认是一个空字符串
ALTER TABLE testUser ADD COLUMN arg_type_varchar_can_null VARCHAR(50); # 未指明not null时,默认是null
ALTER TABLE testUser ADD COLUMN arg_type_varchar_default_value VARCHAR(20) NOT NULL DEFAULT '我的天'; # 所以新增一个字段,最好还是指明默认值
-- 新增字段(timestamp类型)
ALTER TABLE testUser ADD COLUMN update_date TIMESTAMP FIRST;
ALTER TABLE testUser ADD COLUMN old_name TIMESTAMP DEFAULT CURRENT_TIMESTAMP ;
-- 修改表字段
ALTER TABLE testUser MODIFY create_date TIMESTAMP;
ALTER TABLE testUser CHANGE old_name temp INT;
ALTER TABLE testUser DROP temp;
ALTER TABLE testUser RENAME TO officialUser;
ALTER TABLE testUser ADD COLUMN lastModified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最新修改时间';