mysql 修改创建表的代码_MySQL:创建、修改和删除表

1.创建数据库:CREATE DATABASE 数据库名;

删除数据库:DROP DATABASE 数据库名;

查看数据库编码:SHOW CREATE DATABASE 数据库名;

修改数据库默认编码:ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符编码名 [COLLATE ...];

查询存储引擎的类型:SHOW ENGINES;

查询结果中,Engine参数指存储引擎名称;Support参数说明MySQL是否支持该类型引擎;Comment参数表示对该引擎的评论;Transaction参数表示是否支持事务处理;XA参数表示是否分布式交易处理的XA规范;Savepoints参数表示是否支持保存点,以方便事务的回滚操作;

InnoDB存储引擎是default的,也就是数据库默认的存储引擎,下面我们简单介绍一下InnoDB:InnoDB是MySQL的一种存储引擎,InnoDB给MySQL提供了事务、回滚、崩溃修复能力和多版本并发控制的事务安全。InnoDB是MySQL上第一个提供外键约束的表引擎,而且对事务处理的能力,也是其他存储引擎不能比拟的。不过这种引擎的缺点就是读写效率稍差,占用的数据空间相对比较大。

2.创建表:CREATE TABLE 表名 (

属性名 数据类型 [完整约束条件],

属性名 数据类型 [完整约束条件],

...

...

属性名 数据类型 [完整约束条件]

);

在创建之前要选择数据库,格式:USE 数据库名;

查看表编码:SHOW CREATE TABLE 表名;

查看字段编码:SHOW FULL COLUMNS FROM 表名;

约束条件表:

约束条件

说明

PRIMARY KEY

标识该属性为该表的主键,可以唯一的标识对应的元组

FOREIGN KEY

标识该属性为该表的外键,是与之联系某表的主键

NOT NULL

标识该属性不能为空

UNIQUE

标识该属性的值是唯一的

AUTO_INCREMENT

标识该属性的值是自动增加,这是MySQL的SQL语句的特色

DEFAULT

为该属性设置默认值

1)设置表的主键:

单字段主键格式:属性名 数据类型 PRIMARY KEY

CREATE TABLEstudent1 (

idint PRIMARY KEY,

namevarchar(20)

);

多字段主键格式:PRIMARY KEY(属性名1,属性名2....属性名n)

CREATE TABLEstudent2 (

idint,

stu_idint,

namevarchar(20),PRIMARY KEY(id,stu_id)

);

2)设置表的外键:

CONSTRAINT 外键别名 FOREIGN KEY(属性1,属性2,....属性n) REFERENCES 表名(属性1',属性2',...属性n')

CREATE TABLEteacher (

idint PRIMARY KEY,

stu_idint,

namevarchar(20),CONSTRAINT STUID FOREIGN KEY(stu_id) REFERENCESstudent1(id)

);

设置表的非空约束:属性名 数据类型 NOT NULL

设置表的唯一性约束:属性名 数据类型 UNIQUE

设置表的属性值自动增加:属性名 数据类型 AUTO_INCREMENT

AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLINT、INT和BIGINT),在默认的情况下,该字段的值是从1开始自增

设置表的属性的默认值:属性名 数据类型 DEFAULT 默认值

CREATE TABLEstudent3 (

idint PRIMARY KEYAUTO_INCREMENT,

teacher_idint UNIQUE,

namevarchar(20) NOT NULL,

sexvarchar(10) DEFAULT 'male');

3)查看表结构:

查看表基本结构语句:DESCRIBE 表名;

通过查看表的结构,就很明确的对表进行解读,而且可以查看一下自己创建的表有没错误,这个SQL语句必须会用

查看表详细结构语句:SHOW CREATE TABLE 表名;

通过这个SQL语句可以查看表的详细定义,除了字段名、字段的数据类型、约束条件外,还可以查看表的默认存储引擎和字符编码

3.修改表

1)修改表名:ALTER TABLE 旧表名 RENAME 新表名;

2)修改字段的数据类型:ALTER TABLE 表名 MODIFY 属性名 数据类型;

ALTER TABLE 表名 CHANGE change address address char(40) ;

3)修改字段名:ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;

4)增加字段:ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];

“属性名1”参数指需要增加的字段的名称;“FIRST”参数是可选参数,其作用是将新增字段设置为表的第一个字段;“AFTER”参数也是可选的参数,其作用是将新增字段添加到“属性名2”后面;“属性名2”当然就是指表中已经有的字段

5)删除字段:ALTER TABLE 表名 DROP 属性名;

6)更改表的存储引擎:ALTER TABLE 表名 ENGINE = 存储引擎名;

7)删除表的外键约束:ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;

8)修改表的字符编码格式:

修改表的默认字符集和所有字符列(CHAR,VARCHAR,TEXT):ALTER TABLE 表名 CONVERT TO CHARACTER SET 字符编码名 [COLLATE ...]

修改表的默认字符集:ALTER TABLE 表名 DEFAULT CHARACTER SET 字符编码名[COLLATE...];

修改字段的字符集:ALTER TABLE 表名 CHANGE 属性名1 属性名2 CHARACTER SET 字符编码名 [COLLATE ...];

4.删除表:

删除没有被关联的普通表:DROP TABLE 表名;

删除被其他表关联的父表:

方法一:先删除子表,在删除父表

方法二:删除父表的外键约束(上面有介绍),再删该表

修改表的编码:ALTER   TABLE   `Admin_table`   DEFAULT   CHARACTER   SET   utf8   COLLATE   utf8_bin;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用[1]中提到,要改变`__gnu_cxx::__alloc_traits<std::allocator<std::__cxx11::basic_string<char>>>::value_type`类型,需要先将其转化为`std::string`,然后再转化为`double`。而引用[2]中的错误提示是无法将`__gnu_cxx::__alloc_traits<std::allocator<std::__cxx11::basic_string<char>>>::value_type`转换为`__gnu_cxx::__alloc_traits<std::allocator<double>>::value_type`。这个错误是因为在赋值操作中,试图将一个`std::string`类型的值赋给了一个`double`类型的变量。这是不允许的。 解决这个问题的方法是,首先确保`vread_MySql[2]`是一个`std::string`类型的值,然后使用适当的方法将其转换为`double`类型,再将其赋给`vGPS[0]`。可以使用`std::stod`函数将字符串转换为`double`类型。例如,可以这样修改代码: ```cpp vGPS[0] = std::stod(vread_MySql[2]); ``` 引用[3]中提到,如果遇到链接错误,可以尝试下载所需的`libstdc++.so.6.0.xx`文件,并将其放置在`/usr/lib64`目录下。然后,可以使用以下命令删除旧的链接文件并创建新的链接文件: ```bash rm -rf /usr/lib64/libstdc++.so.6 ln -s libstdc++.so.6.0.xx /usr/lib64/libstdc++.so.6 ``` 这样可以指定正确的链接版本。 综上所述,要解决不存在用户定义的从`std::vector<std::__cxx11::string, std::allocator<std::__cxx11::string>>`到`const std::__cxx11::string`的适当转换的问题,需要确保赋值操作的类型匹配,并根据需要进行类型转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值