1. 建表语法:
Create table IF NOT EXISTS `<database>`.`<table_name>`(
`id` int unsigned zerofill AUTO_INCREMENT PRIMARY KEY
`firstname` varchar (20),
`lastname` varchar (20),
`country` varchar (20),
) ENGINE=InnoDB
句点符号: 表可以使用 database. tablename 引用。如果已经连接到数据库,则可以简单地使用customers 而不是company .customers
反引号:` `(英文输入状态下,~号的按键可以打出来反引号),当建表需要指定数据库时,需要用到database.tablename中的句点符号,这时句点符号前后的数据库对象:数据库名和表名,就需要用反引号包括起来。
unsigned: 代表此列为无符号类型, 会影响到列的存储范围(从0开始),如果不加unsinged, 则该列默认是有符号类型,范围从负数开始
zerofill: 代表0填充, 即: 如果该数字不足参数M位, 则自动补0, 补够M位。
1: 如果没有zerofill属性, 单独的参数M,没有任何意义。
2: 如果设置某列为zerofill,则该列已经默认为 unsigned,无符号类型(即如果有zerofill则不用再写unsigned).
IF NOT EXISTS :如果存在一个具有相同名字的表 ,并且你指定了这个子句,MySQL只会抛出一个警告,告知表已经存在。否则 MySQL 将抛出一个错误 。
AUTO_INCREMENT :自动生成线性递增序列,因此不必担心为每一行的id分配值,主键的标志 。
PRIMARY KEY(主键) : 每行都由一个非空的UNIQUE列标识 。只有一列应该在表 中定义。
Engine : 在列定义后面,括号之外 ,用等号 ( = ) 指定存储引擎。存储引擎包括 InnoDB、MyISAM、FEDERATED、BLACKHOLE、csv 和MEMORY 。 在所有引擎中,InnoDB是唯一 的事务引擎,也是默认引擎 。(后面会详细讲)
获取所有引擎的详细信息:
mysql> show engines\G
2. 表的存储及查询:
建数据库后会在数据目录下生成一个文件夹,比如zcl。那么在zcl库里建表以后会在zcl里生成一个.ibd文件
核实步骤如下:
mysql> show variables like 'datadir%'; //找到目录/var/lib/mysql/
[root@MySQL ~]# cd /var/lib/mysql/
[root@MySQL ~]# cd zcl
[root@MySQL ~]# ls //如果表创建成功,就会生成tablename.ibd文件
1). 查看某个库所包含的表:
mysql> use zcl
mysql> show tables;
2). 查询表结构:
建表语句:
mysql> show create table customers;
表格:
mysql> desc customers;
3).克隆表(3种写法):
· 只克隆表结构
方法1:
mysql> create table <tablename_new> like <tablename_old>;
方法2:
mysql> create table <tablename_new> select * from <tablename_old> where 1=2;
类似于Oracle里的create table <tablename_new> as select * from <tablename> where 1=2;
· 克隆表结构和数据到新表:
mysql> create table <tablename_new> select * from <tablename_old>;
类似于Oracle里的create table <tablename_new> as select * from <tablename> where 1=2;