数据库就是存放数据的仓库,这个仓库是按照一定的数据结构来组织存储的。
# 显示数据库
show databases;
# 选择数据库
use dbname;
# 创建数据库
create database dbname charset utf8;
# 删除数据库
drop database dbname;
数据表是关系数据库中一个非常重要的对象,是其它对象的基础,也是一系列二维数组的集合,用来存储和操作数据的逻辑结构。
# 语法
DESC 表名
# 示例
DESC student;
# 语法
SHOW CREATE TABLE 表名
# 示例
SHOW CREATE TABLE student;
# 语法
SHOW TABLE status
# 示例
# 列形式输出
SHOW TABLE status \G;
#或过滤表输出
SHOW TABLE status WHERE name='goods' \G;
# 语法
CREATE TABLE 表名(列名 列类型 列属性 ......)
# 示例
CREATE TABLE student (
sid TINYINT UNSIGNED,
name VARCHAR(20),
age INT
);
# 语法
ALTER TABLE 表名 ADD COLUMN 列名 列类型 列属性 ......
# 示例
# 在最后添加列
ALTER TABLE student ADD COLUMN sn TINYINT(6) ZEROFILL;
# 在指定位置添加列:
ALTER TABLE user ADD height TINYINT AFTER weight;
# 语法
DROP TABLE 表名
# 示例
DROP TABLE student;
# 语法
ALTER TABLE 表名 DROP 列名
# 示例
ALTER TABLE student DROP COLUMN sn;
TRUNCATE相当与drop和creat表两个操作。
# 语法
TRUNCATE 表名
# 示例
TRUNCATE student;
# 语法
ALTER TABLE 旧表名 RENAME TO 新表名
# 示例
ALTER TABLE student RENAME TO stu;
# 语法
ALTER TABLE 表名 MODIFY sid 列名 列类型 列属性
# 示例
ALTER TABLE student MODIFY sid TINYINT UNSIGNED;
# 语法
ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型 列属性
# 示例
ALTER TABLE student CHANGE sid id INT UNSIGNED;
# 语法
ALTER TABLE 表名 ADD CONSTRAINT PRIMARY KEY 表名(列名)
# 示例
ALTER TABLE student ADD CONSTRAINT PRIMARY KEY student(sid);
# 语法
ALTER TABLE 表名 DROP PRIMARY KEY
# 示例
ALTER TABLE student DROP PRIMARY KEY;
# 语法
RESET QUERY CACHE
实际使用中避免列的默认值为null,创建表时给列一个初始值,在列的类型后面添加NOT NULL DEFAULT值,示例:id INT UNSIGNED NOT NULL DEFAULT 0
主键(primary key),能够区分每一行,一般和auto_increment一起使用,有两种方式声明该列为主键:
- 在列的类型之后声明primary key,例如:id INT UNSIGNED PRIMARY KEY
- 声明完列之后,在最后声明那一列为主键primary key(列名),PRIMARY KEY(id)
主键与自增搭配使用,例如:id INT PRIMARY KEY AUTO_INCREMENT
提高效率建表原则:定长与变长分离,常用和不常用分离。
MySQL常用两种表引擎是Myisam和InnoDB,引擎不同,组织数据方式也不同,新版本MySQL可以统一使用InnoDB,性能比Myisam差别不是太大。
CREATE TABLE account(
id INT UNSIGNED PRIMARY KEY,
name CHAR(10) NOT NULL DEFAULT '',
balance INT NOT NULL DEFAULT 0
)ENGINE innodb CHARSET utf8;