数据库基础操作
--创建数据库
create database 数据库名;
create schema 数据库名;
--创建指定字符集的数据库,在my.ini文件中可以通过default-character-set=来指定默认的字符集
create database 数据库名 character set = utf8;
--用判断语句创建数据库
create schema if not exists 数据库名;
--查看数据库
show databases;
--模糊匹配,%匹配任意字符
show databases like "搜索字符%";
--选择数据库
use 数据库名;
--修改数据库的字符集和校对规则,需要一定的权限
alter database 数据库名 default character set gbk default collate gbk_chinese_ci;
--删除数据库
drop database 数据库名;
drop database if exists 数据库名;
--查看存储引擎
show engines;
--查看系统变量
show variables;
show variables like "%engine%";
库操作
--新建库
CREATE DATABASE IF NOT EXISTS `库名` default charset utf8mb4 COLLATE utf8mb4_unicode_ci;
----修改数据库名
--方法一:不推荐,存在丢失数据的风险
RENAME database olddbname TO newdbname;
--方法二:较耗时,同时需要考虑磁盘空间
-- 1.将db1库备份到db1.sql文件
mysqldump -u root -p db1 > /usr/db1.sql;
-- 2.导入备份文件到新库db2
mysql -u root -p db2 < /root/db1.sql;
-- 3.删除旧库(如果真的需要)
DROP DATABASE db1;
--方法三:执行shell修改表所属库
--下方的“数据库改名shell脚本”代码块
--删除库
DROP DATABASE db1;
--使用库
USE db2;
#!/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_tabledo
表操作
--查看表
show tables;
--查看表结构
show columns from 表名;
show columns from 表名 from 数据库名;
desc 表名;
describe 表名;
describe 表名 列名;
--查看建表语句(可用用来看表的存储引擎)
show create table 表名;
--复制表结构
create table 新表名 like 表名;
create table 新表名 as select * from 表名 where 1=2;
--复制整个表
create table 新表名 as select * from 表名;
--修改表结构
--添加字段、修改
alter table 表名 add 列名 类型,modify 列名 类型;
--添加约束条件(建表的时候就指定好,constraint容易出现语法错误,建议用change来实现重新定义该列)
alter table 表名 add constraint 约束名 约束类型(字段名);
alter table 表名 add [constraint 外键名字] foreign key [外键字段] references 父表(主键字段);
/*约束类型
primary key 主键约束
default 默认值
unique key 唯一约束
not null 不为空
foreign key 外键约束
*/
--删除主键
alter table 表名 drop primary key;
--删除外键
alter table 表名 drop foreign key 约束名;
--删除唯一性约束
alter table 表名 drop index 唯一索引名;
--修改表的存储引擎
alter table 表名 engine=新的存储引擎类型;
--修改字符集
alter table 表名 default charset=新的字符集;
--修改自增类型字段的初始值(每修改一次就会从下一次插入开始生效)
alter table 表名 auto_increment==新的初始值;
--修改字段名以及其类型
alter table 表名 change column 列名 新列名 类型 [约束];
--修改表名
alter table 表名 rename as 新表名;
rename table 表名 to 新表名;
--删除数据表
drop table 表名;
drop table if exists 表名;