MySQL基础数据操作
-
数据库基础
-
SQL(Structured Query Language):结构化查询语言
- DDL (Data Definition Language) :数据定义语言
- create / drop / alter
- DML (Data Manpulation Language) :数据操作语言
- insert / delete / update
- DQL - select
- DCL (Data Control Language) :数据控制语言
- revoke / grant
- DDL (Data Definition Language) :数据定义语言
-
数据库连接
- mysql -h127.0.0.1 -P3306 -uroot -p
- exit / quit / \q
-
数据库对象
- DBMS - mysqld : 数据库管理系统
- DB :数据库
- Table : 表
- Field : 字段
-
====================================
数据库操作-新增数据库
create database 数据库名称 [库选项] / create schema 数据库名称 [库选项]
库选项:
字符集设定-charset
校对集设定-collate
- mysql中的sql语句
-- 创建一个数据库 mybase
create database mybase charset utf8;
-- 如果使用了关键字命名,需要用键盘左上角的引号-反引号进行标注
create schema `database` charset utf8;
-- 可以使用中文命名数据库
create schema 我的数据库 charset utf8;
-
查看数据库文件 - 每个数据库文件夹下面都存在一个opt文件
-
查看数据库文件存储路径
show variables like '%datadir%';
show global variables like '%datadir%';
数据库操作-查看数据库
-
查看数据库列表
- show databases; 过滤查找数据库
-
show databases like 'datab_%'; -- database, datab_base show databases like 'datab\\_%'; -- datab_base
查看数据库建库语句
-
show create database 'database name'; -- 'mybase', 'CREATE DATABASE `mybase` /*!40100 DEFAULT CHARACTER SET latin1 */'
数据库操作-更新数据库
-
数据库名字是不可修改项
-
仅能修改数据库的库选项,即 字符集和校对集(校对集依赖于字符集)
语句
-
alter database 数据库名字 [库选项]
alter database 'mybase' charset utf8;
数据库操作-删除数据库
-
删除数据库语句
- drop database 数据库名称 删除数据库需要注意
- 删除不可逆,必要时要提前做好备份
- 对应的数据库文件也会进行级联删除
====================================
表操作-新增数据表
-
新增数据表(建表)语句
-
create table (if not exists) 表名 (
字段名 数据类型,
字段名 数据类型
)[表选项];CREATE TABLE if not exists `mybase`.`test_create_table` ( `primaryId` INT UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, `column1` VARCHAR(45) BINARY NOT NULL DEFAULT 'true' COMMENT '备注', PRIMARY KEY (`primaryId`), UNIQUE INDEX `primaryId_UNIQUE` (`primaryId` ASC)) Engine=InnoDB default charset=utf8 collate=utf8_bin auto_increment=1001 comment='验证建表语句';
MySQL建表时的选项说明
-
PK: Primary Key 主键标识 NN: Not Null 非空标识 UQ: Unique Index 唯一性索引 B:Is Binary Column 存放二进制数据的列,如blob UN:UNsigned 无符号整数 ZF: Zero Fill 不足位补0 AI:Auto Increment 自增 G: Generated Column 生成列,一般为虚拟列或是计算列 Default/Expression:生成列的表达式,否则必须为default
表操作-查看表
-
查看建表语句
-
show create table mybase.test_create_table;
查看表结构
-
desc mybase.test_create_table; show columns from mybase.test_create_table;
查看所有表
-
show tables; show tables like '%a%';
表操作-更新表
-
更新表名字
-
rename table from 原表名 to 新表名
-- 将表名更新为test_table; rename table mybase.test_create_table to mybase.test_table;
更新表选项
-
alter table 表名 表选项(=)值
-- 更新表的字符集为utf8 alter table mybase.test_table charset=utf8; -- 更新表的引擎为InnoDB alter table mybase.test_table engine=MyISAM; -- 更新字符集等值时会影响该表的所有数据,若是大表,需注意性能问题
更新表结构
-
在修改或更新表结构时,需要考虑到性能问题,这是必须要关注的
-
添加一个表字段
alter table 表名 add column 字段名 数据类型 [列选项] 位置
-- 给表mybase.test_table在column1字段后面添加一个字段column2,并且不能为空,默认值为“Yes” alter table mybase.test_table add columm column2 varchar(40) not null default 'Yes' after column1; -- 查看表结构 show columns from mybase.test_table;
-
修改一个表字段
alter table 表名 modify 字段名 数据类型 [列选项] [位置]
-- 将表mybase.test_table的column2字段,修改为时间类型,默认为当前时间 alter table mybase.test_table modify column2 datetime not null default current_timestamp comment '修改表字段数据类型'; -- 使用change column 实现同样的功能 alter table mybase.test_table change column column2 column2 datetime not null default current_timestamp comment '修改表字段数据类型'; -- 修改表字段的位置 alter table mybase.test_table modify column2 datetime comment '修改表字段位置啦' after primaryId;
-
删除一个表字段
删除字段名后,该列的所有数据也会被删除,而且是不可逆的 alter table 表名 drop 字段名
-- 删除表mybase.test_table的column2这个字段 alter table mybase.test_table drop column2; -- 查看表结构 show columns from mybase.test_table;
-
重命名一个表字段
alter table 表名 change column 原字段名 新字段名 数据类型
alter table mybase.test_table change column column1 column_1 varchar(45);
表操作-删除表
-
删除表后,表空间中不会再存在该表对应的文件,该表的数据也会被清空,而且不可逆
drop table 表名
-- 删除一张表 drop table mybase.test_table; -- 删除多张表 drop table mybase.test_table1,mybase.test_table2; -- 可以进行跨库删表 drop table mybase1.test_table,mybase.test_table;