mysql建表的完整步骤(mysql建表需要注意什么)
各位老铁们好,相信很多人对mysql建表的完整步骤都不是特别的了解,因此呢,今天就来为大家分享下关于mysql建表的完整步骤以及mysql建表需要注意什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
mysql怎么建立表
MySQL提供了多种创建索引的方法:
1)使用 CREATE INDEX语句
可以使用专门用于创建索引的 CREATE INDEX语句在一个已有的表上创建索引,但该语句不能创建主键。
语法格式:
CREATE<索引名> ON<表名>(<列名> [<长度>] [ ASC| DESC])
语法说明如下:
<索引名>:指定索引名。一个表可以创建多个索引,但每个索引在该表中的名称是唯一的。
<表名>:指定要创建索引的表名。
<列名>:指定要创建索引的列名。通常可以考虑将查询语句中在 JOIN子句和 WHERE子句里经常出现的列作为索引列。
<长度>:可选项。指定使用列前的 length个字符来创建索引。使用列的一部分创建索引有利于减小索引文件的大小,节省索引列所占的空间。在某些情况下,只能对列的前缀进行索引。索引列的长度有一个最大上限 255个字节(MyISAM和 InnoDB表的最大上限为 1000个字节),如果索引列的长度超过了这个上限,就只能用列的前缀进行索引。另外,BLOB或 TEXT类型的列也必须使用前缀索引。
ASC|DESC:可选项。ASC指定索引按照升序来排列,DESC指定索引按照降序来排列,默认为ASC。
2)使用 CREATE TABLE语句
索引也可以在创建表(CREATE TABLE)的同时创建。在 CREATE TABLE语句中添加以下语句。语法格式:
CONSTRAINT PRIMARY KEY [索引类型](<列名>,…)
在 CREATE TABLE语句中添加此语句,表示在创建新表的同时创建该表的主键。
语法格式:
KEY| INDEX [<索引名>] [<索引类型>](<列名>,…)
在 CREATE TABLE语句中添加此语句,表示在创建新表的同时创建该表的索引。
语法格式:
UNIQUE [ INDEX| KEY] [<索引名>] [<索引类型>](<列名>,…)
在 CREATE TABLE语句中添加此语句,表示在创建新表的同时创建该表的唯一性索引。
语法格式:
FOREIGN KEY<索引名><列名>
在 CREATE TABLE语句中添加此语句,表示在创建新表的同时创建该表的外键。
在使用 CREATE TABLE语句定义列选项的时候,可以通过直接在某个列定义后面添加 PRIMARY KEY的方式创建主键。而当主键是由多个列组成的多列索引时,则不能使用这种方法,只能用在语句的最后加上一个 PRIMARY KRY(<列名>,…)子句的方式来实现。
可以在Mysql命令行中直接写建表语句吗!
import_table(importTable)的延申功能:可定制化行输入。
import_table(importTable)我们之前有介绍过,是一款并行导入各种格式文本的工具,封装了 MySQL语句load data local infile。
比如说要导入一个以 TAB为分隔符的文本数据文件:/tmp/sample_ytt.txt到表:ytt_new.t1,可以执行下面语句:
上面结果是load data infile语句的导入结果。如果改用 import_table方法来做同样的事情,基于 Python语法,使用方法如下:
那接下来看另外一个需求:在导入文本文件时对每行做预处理(例如在导入数据之前更改列 r2的值为 mod(r1,10),列 r5的值为 abs(r4-46)),这样可以减少导入后再次处理的时间开销。
这个需求用load data infile语句非常容易实现:(导入时更改列 r2和 r5的数据,类似 UPDATE语法)
那如果要用 util.import_table(importTable)来实现上面的需求,在 MySQL 8.0.22之前是没办法的。
随着 MySQL 8.0.22的发布,MySQL对 import_table方法做了些扩充功能,其中增加了一个选项“decodeColumns”可以实现字段的预先输入定制化功能,并且还可以更加丰富。
接下来用 import_table来实现上面的需求,定制化字段 r2和 r5:
以上 Options选项,见下图:
我来具体解释下上图的含义:蓝色字体 columns对应的数组分别指定数据文件中的每行字段,也就是默认的 TAB分隔符所分割的每列值,1和 2代表占位符,1代表数据文件中每行的第一个列,2代表数据文件中每行的第四列,decodeColumns字典分别对需要预先输入的字段做处理。比如 r1字段保留为变量@1,r2字段对应 mod(r1,10)等。
如果还是不太理解变换规则,可以临时打开 general log,上面 import_table(importTable)对应的 MySQL日志为:
以上日志写的很清楚,内部转换为最基本的load data infile语法。
那这里我简单解读了下 MySQL 8.0.22对 MySQL Shell的一项定制化输入文本文件的新特性,更多的新特性可以继续关注。
mysql怎样用命令建数据库表
首先我们双击打开【navicat】这款软件,在菜单栏中选择【文件】-->【新建连接】-->【MySQL】;
在打开的【新建连接】对话框中输入【连接名】和【密码】,密码就是你配置MySQL数据库时设置的密码,其余项的值默认就行,然后点击【确定】;
然后我们就可以在连接列表中看到我们刚才创建的连接了。右击【baidujingyan】,也就是我们刚才创建的连接的名字,选择【命令列界面】,打开命令列界面;
我们就是在命令界面里输入命令来完成操作的;首先创建数据库,假设名字为【baidu】,命令为:create database baidu;(注意最后以分号结束,输完命令后回车);
然后右击【baidujingyan】,选择【刷新】,就可以看到我们刚刚创建的名字为【baidu】的数据库;
因为我们的数据库一般情况下要存放中文数据,也就是汉字,所以我们在进行建立表的操作时,有必要先改一下数据库的属性;右击【baidu】-->【数据库属性】;
在打开的【数据库属性】对话框中修改字符集编码,改为【utf-8】形式,然后【确定】(提前修改了,避免以后出错,注意这一步,很重要,如果不更改,在后面的输入中文时,就会出现乱码);
接下来我们建立表,因为我们要在【baidu】这个数据库下建立表,所以我们要先选择这个数据库;命令为:use baidu;
然后我们开始建立表,假设表的名字是urltable,作用是存放标题和链接的,并且标题为主键;标题长度为10个汉字,链接长度为80个字符,那么命令为:
mysql> create table urltable
->(title char(20) not null unique,
-> url char(40));
文章到此结束,如果本次分享的mysql建表的完整步骤和mysql建表需要注意什么的问题解决了您的问题,那么我们由衷的感到高兴!