MySQL SQL

测试版本:MySQL-8.0.33

SQL 语言分类:

DDL:数据定义语言,CREATE、ALTER、DROP、RENAME、TRUNCATE等。

DML:数据操作语言,SELECT、INSERT、UPDATE、DELETE等。

DCL:数据控制语言,COMMIT、ROLLBACK、SAVEPOINT、GRANT、REVOKE等。


DDL:不支持回滚,8版本新特性:DDL操作具有原子性。


数据库操作

-- 查看数据库列表
SHOW DATABASES;

-- 查看当前数据库
SHOW DATABASE();
SELECT DATABASE() FROM DUAL;

-- 创建数据库
CREATE DATABASE db_test;
CREATE DATABASE IF NOT EXISTS db_test;
CREATE DATABASE IF NOT EXISTS db_test CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

-- 切换数据库
USE db_test;

-- 查看数据库创建信息
SHOW CREATE DATABASE db_test;

-- 修改数据库字符集
ALTER DATABASE db_test CHARACTER SET = gbk;

-- 删除数据库
DROP DATABASE db_test;


数据表操作

-- 查看表
SHOW TABLES;
SHOW TABLES FROM db_test;

-- 创建表
CREATE TABLE t_user_info (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    user_name VARCHAR(36) NOT NULL,
    gender VARCHAR(2) NOT NULL DEFAULT '3' COMMENT '性别',
    id_card VARCHAR(18) NOT NULL UNIQUE COMMENT '证件号码',
    phone VARCHAR(64) COMMENT '电话',
    birthdate DATETIME COMMENT '出生日期',
    other VARCHAR(512) COMMENT '备注',
    -- PRIMARY KEY(id)
    -- 直接在字段声明上增加 UNIQUE 则约束名称为字段名(对应唯一索引名称也是字段名)
    CONSTRAINT uk_user_info_phone UNIQUE(phone)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT '用户表';

-- 查看表定义
DESC t_user_info;

-- 重命名表
RENAME TABLE t_user_info TO user_info;
ALTER TABLE t_user_info RENAME TO user_info;

-- 删除表
DROP TABLE t_user_info;

-- 清空表
TRUNCATE TABLE user_info;

每个表只可以设置一个主键(可以是多个字段的联合主键),并且主键约束和索引的名字永久都为 “PRIMARY ”,使用 CONSTRAINT 声明不起作用。

每个表只可以设置一个自增长 AUTO_INCREMENT 列,并且只能用在单字段主键上。


字段操作

-- 增加字段
ALTER TABLE user_info ADD email VARCHAR(125) comment '邮箱';
ALTER TABLE user_info ADD email VARCHAR(125) COMMENT '邮箱' FIRST;
ALTER TABLE user_info ADD email VARCHAR(125) COMMENT '邮箱' AFTER phone;
-- 修改字段
ALTER TABLE user_info MODIFY birthdate DATE comment '出生日期';
-- 删除字段(会同时删除该字段相关约束和索引)
ALTER TABLE user_info DROP COLUMN other;
-- 重命名字段
ALTER TABLE user_info CHANGE birthdate birth_date DATE comment '出生日';


约束与索引操作

约束只能通过删除索引方式同时删除约束。

-- 查看相关表约束
SELECT * FROM information_schema.table_constraints
WHERE table_name = 'user_info';
-- 查看表索引
SHOW INDEX FROM user_info;

-- 增加约束(在增加唯一约束和外键约束时会自动创建相应索引)
ALTER TABLE user_info ADD CONSTRAINT uk_user_info_email UNIQUE KEY(email);
ALTER TABLE user_info ADD CONSTRAINT fk_name FOREIGN KEY(id) REFERENCES other_table(pk);

-- 删除主键索引
--(有自增长 AUTO_INCREMENT 关键字时,不可直接删除)
ALTER TABLE user_info DROP PRIMARY KEY;
-- 删除外键约束
ALTER TABLE user_info DROP FOREIGN KEY fk_name;
-- 删除索引
ALTER TABLE user_info DROP INDEX uk_user_info_phone;
DROP INDEX uk_user_info_phone ON user_info;



转载请指明出处!http://www.miselehe.com/article/view/538