create table

http://guduwhuzhe.iteye.com/blog/1887619

create table的调用路径如下(5.1.58):
do_command(sql_parse.cc)
->dispatch_command(sql_parse.cc)
   ->mysql_parse(sql_parse.cc)
      ->mysql_execute_command(sql_parse.cc)
         ->mysql_create_table(sql_table.cc)
            ->mysql_create_table_nolock(sql_table.cc),这里会持有LOCK_open
               ->rea_create_table(unireg.cc)
                  ->mysql_create_frm(unireg.cc)
                  ->ha_create_table(handler.cc)
                    ->handler::ha_create(handler.cc)
                       ->ha_innodb::create(handler/ha_innodb.cc)
                        ->create_table_def(handler/ha_innodb.cc),
                          ->row_create_table_for_mysql(row/row0mysql.c)
                        ->create_clustered_index_when_no_primary(handler/ha_innodb.cc)..when no primary key is defined..
                          ->row_create_index_for_mysql(row/row0mysql.c)
                        ->create_index(hanler/ha_innodb.cc)
                        ->row_table_add_foreign_constraints(row/row0mysql.c)
时间: 2024-10-12 12:20:10

create table的相关文章

create table xxx as select 与 create table xxx like

create table xxx as select xxx,创建新表,没有原表的完整约束,会把原表的数据拷贝一份,如下:mysql> desc stu;+------------+--------------+------+-----+---------+----------------+| Field      | Type         | Null | Key | Default | Extra          |+------------+--------------+------

Java---Hibernate>>Can't create table './xxx/#sql-b2c_1a.frm' (errno: xxx)解决方法

通用方案:删除相关表,重新生成. 1.关联表之间数据引擎不一致导致: 修改相关表的引擎设定,保持一致. 2.关联表索引字段的引用类型不一样(如A表关联字段是int,B表索引是char): 修改相关表的字段类型,保持一致. 3.主键和外键的字符编码不一致: 修改各自对应表编码格式,保持一致. 4.找不到主表中引用的字段或没有建立关联索引: 要么删索引,要么加字段. Java---Hibernate>>Can't create table './xxx/#sql-b2c_1a.frm' (errn

【MySQL】Create table 以及 foreign key 删表顺序考究。

1.以下是直接从数据库导出的建表语句. 1 -- ---------------------------- 2 -- Table structure for files 3 -- ---------------------------- 4 DROP TABLE IF EXISTS `files`; 5 CREATE TABLE `files` ( 6 `id` int(11) NOT NULL, 7 `fileName` varchar(50) DEFAULT NULL, 8 `filePat

myql查询创建表语句SHOW CREATE TABLE table_name

技术背景:刚开始学习MySQL时候,有时偷懒,会用SHOW CREATE TABLE 表名\G来复制表创建语句,可是当运行的时候总会因为"表名和列名上有单引号",提示语法错误不能运行.问题列表:1,为什么会出错呢?2,有什么解决方法?解决问题:1,分析show create table拷贝的语句出错原因1.1 重现过程1.1.1 创建测试表test,并通过show create table test取得表的创建语句,可见表名,列名都用引号包着.mysql> create tabl

CREATE TABLE常用命令

CREATE TABLE students( stuID INTEGER NOT NULL , stuname char(30) not null, sex int NOT NULL ); CREATE TABLE students( stuID INTEGER NOT NULL , stuname char(30) not null, sex int NOT NULL, PRIMARY KEY (stuID) ); CREATE TABLE students( stuID INTEGER NO

【SQL篇章--CREATE TABLE】

[SQL篇章][SQL语句梳理 :--基于MySQL5.6][已梳理:CREATE TABLE][会坚持完善] SQL : 1. Data Definition Statements: 1.3 CREATE TABLE 格式:3种建表语句 1.简单SQL表明结构: CREATE TABLE t7(id INT ,NAME VARCHAR(20), PRIMARY KEY(`id`)) ENGINE=INNODB; 格式: CREATE [TEMPORARY] TABLE [IF NOT EXIS

用create table 命令建立表

create table [[V.]HANKE.].MADE IN HOME (xuliehao int primary key, name varchar(20)not null, jiage float, type varchar (20) ) go 1  建立 数据库 v   所有者 HANKE   表名 MADE IN HOME  2   xuliehao 为主键  唯一的主键 3将float型转换成 varchar型 执行

Oracle Demo ->> CREATE TABLE

CREATE TABLE employees_demo ( employee_id NUMBER(6) , first_name VARCHAR2(20) , last_name VARCHAR2(25) CONSTRAINT emp_last_name_nn_demo NOT NULL , email VARCHAR2(25) CONSTRAINT emp_email_nn_demo NOT NULL , phone_number VARCHAR2(20) , hire_date DATE D

【SqlServer】empty table and delete table and create table

1.建表 1 IF object_id (N'表名', N'U') IS NULL CREATE TABLE 表名 ( 2 id INT IDENTITY (1, 1) PRIMARY KEY ,......); 2.查询所有满足条件的表 1 SELECT 2 NAME 3 FROM 4 sys.objects 5 WHERE 6 type = 'u' 7 AND NAME LIKE 'test_%'; 3.批量删除满足条件的表 1 DECLARE 2 @NAME VARCHAR (50) 3

insert table 和create table as 区别

insert  into  table1(columns1,columns2) select  columns1,columns2  from  table2; 从table2中查询的结果插入到table1中,前提是table1和table2已经存在; oracle中不支持 select columns1  into  table2   from   table1; 其语法为 create.  as..select,有以下三种方式: 1. create table table1 as selec