MySQL用命令行方式建库和表

47次阅读
没有评论

共计 7767 个字符,预计需要花费 20 分钟才能阅读完成。

本篇内容主要讲解“MySQL 用命令行方式建库和表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“MySQL 用命令行方式建库和表”吧!

 
1. 创建
 
  使用 create database 或 create schema 命令可以创建数据库。
 
create database 库名
 
create database if not exists 库名(创建库并检验创建的库是否存在,不存在则建,存在就不建了)
 
MySQL 不允许两个数据库使用相同的名字,使用 ifnot exists 从句可以不显示错误信息
 
显示所有数据库:showdatabases;  www.2cto.com  
 
显示创建数据库的定义信息:show create dabasese 库名
 
2. 创建了数据库之后使用 USE 命令可指定当前数据库。
 
语法格式:use  db_name;
 
说明:这个语句也可以用来从一个数据库“跳转”到另一个数据库,在用 create database 语句创建了数据库之后,该数据库不会自动成为当前数据库,需要用这条 USE 语句来指定。
 
注意:在 MySQL 中,每一条 SQL 语句都以“;”作为结束标志。
 
mySQL 语法中不区分大小写。创建数据库的必须是系统管理员,或者拥有用户级别的 create 权限。在安装 MySQL 的过程中已经创建了系统管理员,名为 root,假设密码为 root。
 
3. 创建库的同时指定字符集, 校对规则:
 
create database mydb character set utf8
 
collate utf8-general_ci;
 
character set:指定数据库字符集(Charset),collate:指定字符集的校对规则
 
4. 修改数据库,只能改参数
 
数据库创建后,如果需要修改数据库的参数,可以使用 alter database 命令。
 
语法格式:
 
alter {database | schema} [db_name]
 
   alter_specification [, alter_specification] …
 
其中 alter_specification: www.2cto.com  
 
[default] character set charset_name
 
   | [default] collate collation_name
 
说明:
 
alter database 用于更改数据库的全局特性,这些特性储存在数据库目录中的 db.opt 文件中。用户必须有对数据库进行修改的权限,才可以使用 alterdatabase。修改数据库的选项与创建数据库相同,功能不再重复说明。如果语句中数据库名称忽略,则修改当前(默认)数据库。
 
5. 删除数据库
 
drop database 库名
 
drop database if exists 库名(避免删除不存在的数据库时出现的 MySQL 错误信息。)
 
注意:这个命令必须小心使用,因为它将删除指定的整个数据库,该数据库的所有表(包括其中的数据)也将永久删除。
 
6. 创建表
 
创建表就是创建表的结构:包含哪些字段(属性),字段名,字段类型
 
create table 表名
 
(字段名 1 类型,
 
  字段名 2   类型,
 
。。。。
 
);
 
举例:创建一个学生表  
 
use 库名(确定你的表建在哪个库中,把此库变为当前数据库);
 
create table xs
  www.2cto.com  
(
 
       id int,
 
       name char(10),
 
       sex char(2)
 
);
 
Create [temporary] table [if not exists] tbl_name
 
   [( [column_definition] , … | [index_definition] ) ]
 
   [table_option] [select_statement];
 
说明:
 
●  temporary:该关键字表示用 create 命令新建的表为临时表。不加该关键字创建的表通常称为持久表,在数据库中持久表一旦创建将一直存在,多个用户或者多个应用程序可以同时使用持久表。有时候需要临时存放数据,例如,临时存储复杂的 select 语句的结果。此后,可能要重复地使用这个结果,但这个结果又不需要永久保存。这时,可以使用临时表。用户可以像操作持久表一样操作临时表。只不过临时表的生命周期较短,而且只能对创建它的用户可见,当断开与该数据库的连接时,MySQL 会自动删除它们。
 
●   创建表时也可使用 if not exists 语句来判断创建的表是否已存在,避免出现错误。
 
●   要创建的表的表名(tbl_name)必须符合标志符规则,如果有 MySQL 保留字必须用单引号括起来。
 
●  column_definition:列定义,包括列名、数据类型,可能还有一个空值声明和一个完整性约束。
 
●  index_definition:表索引项定义,主要定义表的索引、主键、外键等,具体定义将在后面讨论。 www.2cto.com  
 
●  table_option:用于描述表的选项。
 
●  select_statement:可以在 create table 语句的末尾添加一个 select 语句,在一个表的基础上创建表
 
7. 修改表结构:增加字段   修改旧字段   删除字段
 
alter table 表名
 
add 字段名 类型(宽度)        // 增加字段
 
modify 旧字段 类型             // 修改旧字段
 
drop 字段名                   // 删除字段
 
change 旧字段名 新字段内容     // 改列名
 
order by col_name            // 排序
 
 convert  to character set charset_name [字符集名]    // 将字符集转换为二进制
 
 [default]character set charset_name [字符集名]   // 修改默认字符集
 
举例:在学生表中增加 birthday 字段、修改 name 字段、修改字段 name 的名;
 
alter table xs
 
add birthday date;
  www.2cto.com  
modify name varchar(20);
 
change name sname varchar(20);
 
8. 修改表名
 
rename table 旧名 to 新名
 
分类
 
数据类型
 
说明
 
数值类型
 
bit (M)
 
tinint [unsigned] [zerofill]
 
bool,boolean 
 
smallint [unsigned] [zerofill]
 
int [unsigned] [zerofill]
 
bigint [unsigned] [zerofill]
 
float[(M,D)][unsigned][zerofill]  
 
double[(M,D)][unsigned][zerofill]  
 
位类型。M 指定位数,默认值 1,范围 1 -64
 
带符号的范围是 -128 到 127。无符号 0 到 255。
  www.2cto.com  
使用 0 或 1 表示真或假
 
2 的 16 次方
 
2 的 32 次方
 
2 的 64 次方
 
M 指定显示长度,d 指定小数位数
 
表示比 float 精度更大的小数
 
文本、二进制类型
 
char(size) char(20)
 
varchar(size)  varchar(20)
 
blob    longblob
 
text(clob)    longtext(longclob)
 
固定长度字符串
 
可变长度字符串
 
二进制数据
 
大文本
 
时间日期
 
date/datetime/TimeStamp
 
日期类型 (YYYY-MM-DD)  (YYYY-MM-DD HH:MM:SS),TimeStamp 表示时间戳,它可用于自动记录 insert、update 操作的时间
 
注意:在字符数据类型和数值数据类型之后,MySQL 允许指定一个数据类型选项用来改变数据类型的属性和功能。
 
对于字符数据类型,MySQL 支持两种数据类型选项:characterset 和 collate。如果要区分字符的大小写情况,可以在字符类型后面加上 bingary。
 
对于除 bit 以外的数值数据类型,MySQL 允许添加一个或多个数据类型选项。unsigned:不允许负值。zerofill:当插入的值长度小于字段设定的长度时,剩余部分用 0 填补。
 
与 int 有关的类型与 java 中的 bit、short、int、long 分别对应。
 
varchar、bolb 和 text 类是变长类型。每个类型的存储需求取决于列值的实际长度。
 
9.   列定义 column_definition 格式如下:
 
col_name  type  [not null | null] [default default_value]
 
   [auto_increment] [unique [key] | [primary] key]
 
   [comment string] [reference_definition]
 
说明: www.2cto.com  
 
●  col_name:表中列的名字。列名必须符合标志符规则,长度不能超过 64 个字符,而且在表中要唯一。如果有 MySQL 保留字必须用单引号括起来。
 
●  type:列的数据类型,有的数据类型需要指明长度 n,并用括号括起,MySQL 支持的数据类型在附录 C 中介绍。
 
●  auto_increment:设置自增属性,只有整型列才能设置此属性。当插入 null 值或 0 到一个 auto_increment 列中时,列被设置为 value+1,在这里 value 是此前表中该列的最大值。auto_increment 顺序从 1 开始。每个表只能有一个 auto_increment 列,并且它必须被索引。
 
● not null | null:指定该列是否允许为空。如果不指定,则默认为 null。
 
●  default default_value:为列指定默认值,默认值必须为一个常数。其中,BLOB 和 TEXT 列不能被赋予默认值。如果没有为列指定默认值,MySQL 自动地分配一个。如果列可以取 NULL 值,默认值就是 NULL。如果列被声明为 NOT NULL,默认值取决于列类型:
 
(1)对于没有声明 auto_increment 属性的数字类型,默认值是 0。对于一个 auto_increment 列,默认值是在顺序中的下一个值。
 
(2)对于除 timestamp 以外的日期和时间类型,默认值是该类型适当的“零”值。对于表中第一个 timestamp 列,默认值是当前的日期和时间。
 
(3)对于除 enum 的字符串类型,默认值是空字符串。对于 enum,默认值是第一个枚举值。
 
●  unique key | primary key:两者都表示字段中的值是唯一的。primary key 表示设置为主键,一个表只能定义一个主键,主键一定要为 notnull。
 
●  comment string:对于列的描述,string 是描述的内容。
 
●  reference_definition:指定参照的表和列。
 
10. (1). 复制表 : create table 表名 like 表名 1
 
语法格式:
 
create [temporary] table[if not exists] tbl_name
 
    [()like old_ name []]
 
    | [as (select_statement)] ;
 
说明:
 
使用 LIKE 关键字创建一个与 old _name 表相同结构的新表,列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。使用 as 关键字可以复制表的内容,但索引和完整性约束是不会复制的。select_statement 表示一个表达式,例如,可以是一条 select 语句。
 
(2). 删除表 : drop table 表名(这个命令将表的描述、表的完整性约束、索引及和表相关的权限等都全部删除) www.2cto.com  
 
(3). 修改表名 : rename 子句,语法格式:
 
rename table old_name to new_name
 
new_tbl_name 是新表名。例如,将表 a 改名为 b:alter table  a rename to b ; 除了上面的 alter table 命令,还可以直接用 renametable 语句来更改表的名字。
 
●  order by 子句 (以后介绍):用于在创建新表时,让各行按一定的顺序排列。注意,在插入和删除后,表不会仍保持此顺序。在对表进行了大的改动后,通过使用此选项,可以提高查询效率。在有些情况下,如果表按列排序,对于 MySQL 来说,排序可能会更简单。
 
●  table_options:修改表选项,具体定义与 create table 语句中一样。
 
可以在一个 alter table 语句里写入多个 add、alter、drop 和 chang 子句,中间用逗号分开。这是 MySQL 相对于标准 SQL 的扩展。在标准 SQL 中,每个 alter table 语句中每个子句只允许使用一次。
 
11. 说明:表中大多数的选项涉及的是表数据如何存储及存储在何处。多数情况下,不必指定表选项。engine 选项是定义表的存储引擎,具体在附录 E 中介绍。
 
举例:
 
USE mydb1;
 
CREATE TABLE XS
 
(
 
    学号      char(6)    NOTNULL  primary KEY,
 
    姓名      char(8)    NOTNULL ,
 
专业名  char(10)  NOT NULL ,
 
性别    tinyint(1) NOT NULL default  1
 
) engine=InnoDB;
 
说明:“primary KEY”表示将“学号”字段定义为主键。“default 1”表示“性别”的默认值为 1。“engine=InnoDB”表示采用的存储引擎是 InnoDB,InnoDB 是 MySQL 在 Windows 平台默认的存储引擎,所以“engine=InnoDB”可以省略。
 
12. 说明:
 
●  ignore:是 MySQL 相对于标准 SQL 的扩展。若在修改后的新表中存在重复关键字,如果没有指定 ignore,当重复关键字错误发生时操作失败。如果指定了 ignore,则对于有重复关键字的行只使用第一行,其他有冲突的行被删除。
 
●  column_definition:定义列的数据类型和属性,具体内容在 create table 的语法中已做说明。
 
●  first| after col_name:表示在某列的前或后添加,不指定则添加到最后。
 
注意: 若表中该列所存数据的数据类型与将要修改的列的类型冲突,则发生错误。例如,原来 char 类型的列要修改成 int 类型,而原来列值中有字符型数据“a”,则无法修改。
 
13.   1).   空值 (NULL) 概念
 
空值通常表示未知、不可用或将在以后添加的数据。若一个列允许为空值,则向表中输入记录值时可不为该列给出具体值;而一个列若不允许为空值,则在输入时必须给出该列的具体值。
 
注意:表的关键字不允许为空值。空值不能与数值数据 0 或字符类型的空字符混为一谈。任意两个空值都不相等。 www.2cto.com  
 
2).   列的 IDENTITY(标志)属性
 
对任何表都可创建包含系统所生成序号值的一个标志列,该序号值唯一标志表中的一列,可以作为键值。每个表只能有一个列设置为标志属性,该列只能是 decimal、int、numeric、smallint、bigint 或 tinyint 数据类型。定义标志属性时,可指定其种子(即起始)值、增量值,二者的默认值均为 1。系统自动更新标志列值,标志列不允许空值。
 
在下列情况下,MySQL 隐含地改变在一个 CREATE TABLE 语句给出的一个列类型(这也可能在 ALTER TABLE 语句上出现)。
 
14.MySQL 隐含地改变列类型:
 
(1)长度小于 4 的 varchar 被改变为 char。
 
(2)如果在一个表中的任何列有可变长度,结果使整个行是变长。
 
因此,如果一张表包含任何变长的列(varchar、text 或 Blob),所有大于 3 个字符的 char 列被改变为 varchar 列。这在任何方面都不影响用户如何使用列。在 MySQL 中这种改变可以节省空间并且使表操作更快捷。
 
(3)timestamp 的显示尺寸必须是偶数且在 2~14 的范围内。如果指定 0 显示尺寸或比 14 大,尺寸被强制为 14。从 1~13 范围内的奇数值尺寸被强制为下一个更大的偶数。
 
(4)不能在一个 timestamp 列里面存储一个 NULL,将它设为 NULL 默认为当前的日期和时间。
 
如果想要知道 MySQL 是否使用了除指定的以外的一种列类型,在创建表之后,使用一个 DESCRIBE 语句即可。DESCRIBE 语句在 3.1.4 节介绍。
 
15 type 定义如下:
 
说明:在字符数据类型和数值数据类型之后,MySQL 允许指定一个数据类型选项用来改变数据类型的属性和功能。
 
对于字符数据类型,MySQL 支持两种数据类型选项:CHARACTERSET 和 COLLATE。如果要区分字符的大小写情况,可以在字符类型后面加上 BINGARY。
 
对于除 BIT 以外的数值数据类型,MySQL 允许添加一个或多个数据类型选项。UNSIGNED:不允许负值。ZEROFILL:当插入的值长度小于字段设定的长度时,剩余部分用 0 填补。
 
spatial_type 是空间类型数据。
 
16.   表选项 table_option 定义如下:
 
{engine | type} = engine_name             // 存储引擎
 
| auto_increment = value               // 初始值
 
| auto_increment = value               // 表的平均行长度
 
| [default] charcter set charset_name [collatecollation_name]  // 默认字符集和校对
 
| checksum = {0 | 1}              // 设置为 1 表示求校验和
 
| comment= string               // 注释
 
| connection = connect_string     // 连接字符串
 
| MAX_ROWS = value               // 行的最大数
 
| MIN_ROWS = value               // 列的最小数
 
| PACK_KEYS = {0 | 1 | DEFAULT}
 
| password = string               // 对.frm 文件加密
 
| delay_key_write = {0 | 1}           // 对关键字的更新
 
|row_format={DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}                     // 定义各行应如何储存  www.2cto.com  
 
| union = (tbl_name[,tbl_name]…)    // 表示哪个表应该合并
 
| insert_method = {NO | FIRST | LAST}// 是否执行 INSERT 语句
 
|data directory = absolute path todirectory     // 数据文件的路径
 
| index directory = absolute path todirectory rsquo; // 索引的路径
 

到此,相信大家对“MySQL 用命令行方式建库和表”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计7767字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)