1.命令结束符号
;
g
G
G有一点特殊,它并不以表格的形式返回查询数据,而是以垂直的形式展现查询数据,这包含两个方面的意思:
如果查询结果中包含多个行的数据,各个行的数据之间会用一堆一星号*隔开。
每行中的每一个列的数据将按照列名: 列值的形式给出。
2.使用c清除本次操作
如果你想放弃本次编写的命令,可以使用c来清除,比如这样:
mysql> SELECT NOW()\c
展示数据库
mysql> SHOW DATABASES;
创建数据库
mysql> CREATE DATABASE 数据库名;
切换当前数据库
mysql> USE 数据库名称;
查看当前使用的数据库
mysql> select database();
删除数据库
mysql> DROP DATABASE 数据库名;
创建表
mysql> CREATE TABLE first_table (
-> first_column INT COMMENT '列的注释',
-> second_column VARCHAR(100)
-> ) COMMENT '表的注释';
展示当前数据库中的表
mysql> SHOW TABLES;
简单的表操作语句
SELECT * FROM 表名;
INSERT INTO 表名(列1, 列2, ...) VALUES(列1的值,列2的值, ...);
INSERT INTO 表名(列1,列2, ...) VAULES(列1的值,列2的值, ...), (列1的值,列2的值, ...), (列1的值,列2的值, ...), ...;
UPDATE 表名 SET 列1 = 列1的值,... WHERE 条件...;
删除表
DROP TABLE IF EXISTS 表名;
约束性条件(列的属性)
mysql> CREATE TABLE first_table (
-> first_column INT,
-> second_column VARCHAR(100) DEFAULT 'abc'
-> );
非空约束
mysql> CREATE TABLE first_table (
-> first_column INT NOT NULL,
-> second_column VARCHAR(100) DEFAULT 'abc'
-> );
主键&唯一性约束
CREATE TABLE student_info (
number INT PRIMARY KEY,
name VARCHAR(5),
sex ENUM('男', '女'),
id_number CHAR(18) UNIQUE,
department VARCHAR(30),
major VARCHAR(30),
enrollment_time DATE
);
CREATE TABLE student_info (
number INT,
name VARCHAR(5),
sex ENUM('男', '女'),
id_number CHAR(18),
department VARCHAR(30),
major VARCHAR(30),
enrollment_time DATE
PRIMARY KEY (number)
UNIQUE KEY (id_number)
);
PRIMARY KEY (列名1, 列名2, ...) | UNIQUE [约束名称] (列名1, 列名2, ...) | UNIQUE KEY [约束名称] (列名1, 列名2, ...)
主键和唯一性约束都能保证某个列或者列组合的唯一性,但是:
一张表中只能定义一个主键,却可以定义多个唯一性约束!
主键列不允许存放NULL值,而普通的唯一性约束列可以存放NULL值!
索引
InnoDB和MyISAM会自动为主键或者声明为UNIQUE的列去自动建立B+树索引
在创建表的时候指定需要建立索引的单个列或者建立联合索引的多个列:
CREATE TALBE 表名 (
各种列的信息 ··· ,
[KEY|INDEX] 索引名 (需要被索引的单个列或多个列)
)
其中的KEY和INDEX是同义词,任意选用一个就可以
修改表结构的时候添加索引
ALTER TABLE 表名 ADD [INDEX|KEY] 索引名 (需要被索引的单个列或多个列);
在修改表结构的时候删除索引
ALTER TABLE 表名 DROP [INDEX|KEY] 索引名;
外键
CONSTRAINT [外键名称] FOREIGN KEY(列1, 列2, ...) REFERENCES 父表名(父列1, 父列2, ...);
自增
mysql> CREATE TABLE first_table (
-> id int UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> first_column INT,
-> second_column VARCHAR(100) DEFAULT 'abc'
-> );
在使用递增属性的时候需要注意这几点:
一个表中最多有一个递增列。
一般只为整数类型的列定义递增属性,浮点数类型基本不用递增属性。
具有AUTO_INCREMENT属性的列必须建立索引。主键和具有唯一性约束的列会自动建立索引,至于什么是索引,我们后边会详细唠叨。
一般递增列都是作为主键的属性,来自动生成唯一标识一个记录的主键值。
因为具有AUTO_INCREMENT属性的列是从1开始递增的,所以最好用UNSIGNED来修饰这个列,可以提升正数的表示范围。