2. 数据库 基本操作
- 一千行MySQL学习笔记 # 参数介绍
- 菜鸟教程
- 书籍:MySQL 必知必会
2.1. 数据库操作
SELECT DATABASE();
show tables;
status;
SELECT now(), user(), version();
CREATE DATABASE[ IF NOT EXISTS] 数据库名 数据库选项
数据库选项:
CHARACTER SET charset_name
COLLATE collation_name
CREATE DATABASE IF NOT EXISTS RUNOOB
DEFAULT CHARSET utf8
COLLATE utf8_general_ci;
SHOW DATABASES;
SHOW CREATE DATABASE 数据库名
ALTER DATABASE 库名 选项信息
DROP DATABASE[ IF EXISTS] 数据库名
2.2. 表的操作
CREATE [TEMPORARY] TABLE[ IF NOT EXISTS] [库名.]表名 ( 表的结构定义 )[ 表选项]
每个字段必须有数据类型
最后一个字段后不能有逗号
TEMPORARY 临时表,会话结束时表自动消失
对于字段的定义:
字段名 数据类型 [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']
CHARSET = charset_name
如果表没有设定,则使用数据库字符集
ENGINE = engine_name
表在管理数据时采用的不同的数据结构,结构不同会导致处理方式、提供的特性操作等不同
常见的引擎:InnoDB MyISAM Memory/Heap BDB Merge Example CSV MaxDB Archive
不同的引擎在保存表的结构和数据时采用不同的方式
MyISAM表文件含义:.frm表定义,.MYD表数据,.MYI表索引
InnoDB表文件含义:.frm表定义,表空间数据和日志文件
SHOW ENGINES
SHOW ENGINE 引擎名 {LOGS|STATUS}
AUTO_INCREMENT = 行数
DATA DIRECTORY = '目录'
INDEX DIRECTORY = '目录'
COMMENT = 'string'
PARTITION BY ... (详细见手册)
SHOW TABLES[ LIKE 'pattern']
SHOW TABLES FROM 库名
SHOW CREATE TABLE 表名 (信息更详细)
DESC 表名 / DESCRIBE 表名 / EXPLAIN 表名 / SHOW COLUMNS FROM 表名 [LIKE 'PATTERN']
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']
describe student;
ALTER TABLE 表名 表的选项
eg: ALTER TABLE 表名 ENGINE=MYISAM;
RENAME TABLE 原表名 TO 新表名
RENAME TABLE 原表名 TO 库名.表名 (可将表移动到另一个数据库)
ALTER TABLE 表名 操作名
ADD[ COLUMN] 字段定义
AFTER 字段名
FIRST
ADD PRIMARY KEY(字段名)
ADD UNIQUE [索引名] (字段名)
ADD INDEX [索引名] (字段名)
DROP[ COLUMN] 字段名
MODIFY[ COLUMN] 字段名 字段属性
CHANGE[ COLUMN] 原字段名 新字段名 字段属性
DROP PRIMARY KEY
DROP INDEX 索引名
DROP FOREIGN KEY 外键
DROP TABLE[ IF EXISTS] 表名 ...
TRUNCATE [TABLE] 表名
CREATE TABLE 表名 LIKE 要复制的表名
CREATE TABLE 表名 [AS] SELECT * FROM 要复制的表名
CHECK TABLE tbl_name [, tbl_name] ... [option] ...
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
create table student(
id int auto_increment primary key,
name varchar(50),
sex varchar(20),
date varchar(50),
content varchar(100)
)default charset=utf8
distributed by hash(id)(g1, g2, g3, g4);
drop table if exists student;
alter table tbl_name rename to new_name
alter table tablename add columnname type;/alter table tablename add(columnname type);
alter table tablename change columnname newcolumnname type;
alter table position add(test char(10));
alter table position modify test char(20) not null;
alter table position alter test set default 'system';
alter table position alter test drop default;
alter table position drop column test;
alter table depart_pos drop primary key;
alter table depart_pos add primary key PK_depart_pos
(department_id,position_id);
load data local infile "D:/mysql.txt" into table MYTABLE;
source d:/mysql.sql;