转义字符的使用
MySQL中转义字符有 \ ‘ 和“
转义字符 | 转义后的字符 |
---|---|
\" | 双引号(") |
\' | 单引号(') |
\\ | 反斜线(\) |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\0 | ASCII 0(NUL) |
\b | 退格符 |
MySQL存储引擎
InnoDB
InnoDB引擎是具备外键支持功能的事务处理引擎
MySQL修改数据表的存储引擎
语法格式如下:
ALTER TABLE <表名> ENGINE = <存储引擎名>;
数据表
创建数据表
在MySQL中,创建数据表的语句为:
CREATE TABLE <表名>([表定义选项][表选项][分区选项]);
值得注意的是,在创建数据表之前,要事先USE <数据库名>;
指定这次操作在哪个数据库中进行
否则会抛出错误
<表名>:是指定要创建的表的名称,可以用如下方式创建:db_name.tb_name;
即无论现在是否存在数据库,都可以用这个方式来创建,但是如果使用引号的是别名,应对数据库名和表名都加引号,例如:'mydb'.'mytb'是对的。
<表定义选项>:由列名和列的定义组成
例如:id INT(11);
下面是创建数据表的实例:
mysql> CREATE DATABASE db_test;
Query OK, 1 row affected (0.00 sec)
mysql> USE db_test;
Database changed
mysql> CREATE TABLE tb_rxz
-> (
-> id INT(11),
-> salary FLOAT
-> );
Query OK, 0 rows affected (0.03 sec)
mysql> SHOW TABLES;
+-------------------+
| Tables_in_db_test |
+-------------------+
| tb_rxz |
+-------------------+
1 row in set (0.00 sec)
注意:列定义选项中,最后一个列类型定义之前的都需要加逗号,而最后一个不需要。修
修改数据表
修改数据表的前提是已经存在该数据表。
在MySQL中我们可以使用ALTER TABLE 语句来改变原有表的结构
语法格式如下
ALTER TABLE <表名>[修改选项]
修改表名
ALTER TABLE <旧表名> RENAME TO <新表名>;
修改字段名称
ALTER TABLE <表名> CHANGE <旧字段名><新字段名><新数据类型>;
mysql> ALTER TABLE tb_yrj
-> CHANGE id id5 INT(15);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC tb_yrj;
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| id5 | int(15) | YES | | NULL | |
| salary | float | YES | | NULL | |
+--------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
CHANGE也可以只改变数据类型
只需要将旧字段和新字段写为相同即可
当然也可以只改变字段不改变数据类型,即将数据类型设置为与之前一样,但是不能为空。
修改字段数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
mysql> ALTER TABLE tb_yrj MODIFY id5 INT(20);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC tb_yrj;
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| id5 | int(20) | YES | | NULL | |
| salary | float | YES | | NULL | |
+--------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
删除字段
ALTER TABLE <表名> DROP <字段名>;
mysql> DESC tb_yrj;
+--------+-------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------+------+-----+---------+-------+
| salary | float | YES | | NULL | |
+--------+-------+------+-----+---------+-------+
1 row in set (0.00 sec)
删除数据表
DROP TABLE [IF EXISTS] 表名一,(表名二,表名三);
mysql> DESC tb_yrj;
+--------+-------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------+------+-----+---------+-------+
| salary | float | YES | | NULL | |
+--------+-------+------+-----+---------+-------+
1 row in set (0.00 sec)
mysql> DROP TABLE tb_yrj;
Query OK, 0 rows affected (0.02 sec)
MySQL查看表命令结构
1
DESC <表名>;
展示表的字段、数据类型、是否为主键、是否有默认值等
2
SHOW CREATE TABLE <表名>;
在DESC的功能之外,还可以查看表的存储引擎和字符编码
mysql> SHOW CREATE TABLE tb_rxz;
+--------+-------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------+-------------------------------------------------------------------------------------------------------------------------------+
| tb_rxz | CREATE TABLE `tb_rxz` (
`id` int(15) DEFAULT NULL,
`name` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+--------+-------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
MySQL数据表添加字段
在末尾添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件];
这个只能在表的最后位置,即最后一列的后面添加新字段。
mysql> ALTER TABLE tb_rxz ADD girl VARCHAR(20);
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC tb_rxz;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(15) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| girl | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
在开头添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;
mysql> ALTER TABLE tb_rxz ADD boy VARCHAR(20);
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SHOW CREATE TABLE tb_rxz;
+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tb_rxz | CREATE TABLE `tb_rxz` (
`id` int(15) DEFAULT NULL,
`name` varchar(10) DEFAULT NULL,
`girl` varchar(20) DEFAULT NULL,
`boy` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
在中间添加字段
ALTER TABLE <表名>ADD <新字段名>[约束条件]AFTER <已经存在的字段名>;
mysql> ALTER TABLE tb_rxz ADD sfz INT(20) AFTER boy;
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC tb_rxz;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(15) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| girl | varchar(20) | YES | | NULL | |
| boy | varchar(20) | YES | | NULL | |
| sfz | int(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)