mysql数据库/数据表的创建/查看

本文详细介绍如何在MySQL中创建数据库、建立资料表,并通过LOAD DATA和INSERT语句填充数据。涵盖数据库管理的基础步骤及数据导入的具体操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一: 创建数据库
方法一:

[root@host]# mysqladmin -u root -p create database1
Enter password:******

mysql> show databases; 
+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| database1          | 
| mysql              | 
| performance_schema | 
+--------------------+ 
4 rows in set (0.00 sec)

方法二:

mysql> create database database2;
mysql> show databases; 
+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| database1          | 
| database2          | 
| mysql              | 
| performance_schema | 
+--------------------+ 
5 rows in set (0.00 sec) 

二: 建立资料表
mysql> use database1;
Database changed
mysql> show tables;
Empty set (0.00 sec)

这时候需要你去决定你需要什么样的资料库资料表, 各个资料库资料表中有什么样的列.
(如果后期相对数据表格式进行修改, 增加列,删除列,修改列的名字之类的)
这个中间涉及到了mysql中数据类型的一些问题
http://www.runoob.com/mysql/mysql-data-types.html
其中name, owner, species我们使用的是VARCHAR变长字符串, 大小未0-65535个字节, sex使用的是单字节的定长字符串, birth, death使用的是DATE日期类型.

mysql> create table pet (name VARCHAR(20), owner VARCHAR(20), 
    -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE); 
Query OK, 0 rows affected (0.07 sec) 
mysql> show tables; 
+---------------------+ 
| Tables_in_database1 | 
+---------------------+ 
| pet                 | 
+---------------------+ 
1 row in set (0.00 sec)
mysql> describe pet; / desc pet;
+---------+-------------+------+-----+---------+-------+ 
| Field   | Type        | Null | Key | Default | Extra | 
+---------+-------------+------+-----+---------+-------+ 
| name    | varchar(20) | YES  |     | NULL    |       | 
| owner   | varchar(20) | YES  |     | NULL    |       | 
| species | varchar(20) | YES  |     | NULL    |       | 
| sex     | char(1)     | YES  |     | NULL    |       | 
| birth   | date        | YES  |     | NULL    |       | 
| death   | date        | YES  |     | NULL    |       | 
+---------+-------------+------+-----+---------+-------+ 
6 rows in set (0.00 sec) 

三: 填写数据表内容 (重点)
通过LOAD DATA和INSERT语句可以完成。
方法一: 直接load一个文本
(貌似还可以导入csv格式文件, 需要研究一下)
基本语法:

load data [low_priority | concurrent] [local] infile 'filename'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number {LINES | ROWS}]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...]

其中:
https://dev.mysql.com/doc/refman/5.5/en/load-data.html
(每个参数权威的解释在官方文件中, 这里直接是我理解的,有些我没用过/不理解的就不说了.)
在读取位于服务器上的文件时, 文件必须处于服务器目录或者是要有对文件的读取权限.
low_priority 没有用户在读这个文件的时候,执行load data.
local 表示从client host上面读文件, 如果local未指定, 则文件必须位于server host上面.
replace 输入行内容将代替已存在的行的内容.
ignore 遇到有唯一键值的行则跳过.
FIELDS | COLUMNS关键字:
terminated by描述字段的分隔符,默认情况下是tab字符(\t)
enclosed by描述的是字段的括起字符。
escaped by描述的转义字符。默认的是反斜杠(backslash:\ )
LINES关键字:
每条记录的分隔符默认为’\n’即为换行符.
这个版本默认的格式是每个数值之间用tab键隔开,然后每一组数据之间用enter键隔开, 没有数值的项用\N来表示(显示出来的就是NULL). 如下是我在txt文件中输入的结果:

Fluffy  Harold  cat f   1993-02-04  \N 
Claws   Gwen    cat m   1994-03-17  \N 
Buffy   Harold  dog f   1989-05-13  \N 
Fang    Benny   dog m   1990-08-27  \N 
Bowser  Diane   dog m   1979-08-31  \N 
Chirpy  Gwen    bird    \N  1997-12-09  \N 
Whistler    Gwen    bird    \N  1997-12-09  \N 
Slim    Benny   snake   m   1996-04-29  \N

你也可以自己在后面定义自己觉得习惯的格式.
例如我这里想尝试用用””表示字段括起字符, 逗号表示字段分隔符, 换行符\表示每个记录的分隔符.

mysql>load data local infile '/path/Documents/pet.txt' into table pet fields terminated by ',' enclosed by ' '' ' lines terminated by '/n'; 

注意:
同时还遇到了一个问题:

mysql> load data local infile '/path/Documents/pet.txt' into table pet; 
ERROR 1148 (42000): The used command is not allowed with this MySQL version 

貌似是个security issues:
https://stackoverflow.com/questions/18437689/error-1148-the-used-command-is-not-allowed-with-this-mysql-version
https://stackoverflow.com/questions/16285864/how-can-i-correct-mysql-load-error
只需要退出,再用如下命令登录就好了

mysql -u root -p --local-infile  **加上--local-infile**

查看导入结果:

mysql> load data local infile '/path/Documents/pet.txt' into table pet; 
Query OK, 8 rows affected (0.03 sec) 
Records: 8  Deleted: 0  Skipped: 0  Warnings: 0 
mysql> select * from pet; 
+----------+--------+---------+------+------------+-------+ 
| name     | owner  | species | sex  | birth      | death | 
+----------+--------+---------+------+------------+-------+ 
| Fluffy   | Harold | cat     | f    | 1993-02-04 | NULL  | 
| Claws    | Gwen   | cat     | m    | 1994-03-17 | NULL  | 
| Buffy    | Harold | dog     | f    | 1989-05-13 | NULL  | 
| Fang     | Benny  | dog     | m    | 1990-08-27 | NULL  | 
| Bowser   | Diane  | dog     | m    | 1979-08-31 | NULL  | 
| Chirpy   | Gwen   | bird    | NULL | 1997-12-09 | NULL  | 
| Whistler | Gwen   | bird    | NULL | 1997-12-09 | NULL  | 
| Slim     | Benny  | snake   | m    | 1996-04-29 | NULL  | 
+----------+--------+---------+------+------------+-------+ 
8 rows in set (0.00 sec) 

方法二: 利用insert语句
上面是批量的导入数据的方法, 如果你希望一次导入一组或者一个新数据的话.(当然load data也是可以指定导入部分内容的)
最简单的形式是,提供每一列的值,其順序与CREATE TABLE语句中列的順序相同。假定Diane把一个新仓鼠命名为Puffball,可以使用下面的INSERT语句新增一条新纪录:

mysql> insert into pet 
    -> values ('Puffball','Diane','hamster','f','1999-03-30',NULL); 
Query OK, 1 row affected (0.09 sec) 

mysql> select * from pet; 
+----------+--------+---------+------+------------+-------+ 
| name     | owner  | species | sex  | birth      | death | 
+----------+--------+---------+------+------------+-------+ 
| Fluffy   | Harold | cat     | f    | 1993-02-04 | NULL  | 
| Claws    | Gwen   | cat     | m    | 1994-03-17 | NULL  | 
| Buffy    | Harold | dog     | f    | 1989-05-13 | NULL  | 
| Fang     | Benny  | dog     | m    | 1990-08-27 | NULL  | 
| Bowser   | Diane  | dog     | m    | 1979-08-31 | NULL  | 
| Chirpy   | Gwen   | bird    | NULL | 1997-12-09 | NULL  | 
| Whistler | Gwen   | bird    | NULL | 1997-12-09 | NULL  | 
| Slim     | Benny  | snake   | m    | 1996-04-29 | NULL  | 
| Puffball | Diane  | hamster | f    | 1999-03-30 | NULL  | 
+----------+--------+---------+------+------------+-------+ 
9 rows in set (0.01 sec) 

注意:
这里字串和日期值均为引号括起来的字串。另外,可以直接用INSERT語句插入NULL表示资料表不存在的值。不能使用LOAD DATA中所示的的\N。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值