mysql 数据库的表_mysql-数据库表操作

表介绍

表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段

6eff13d5a258e3a2a58f43174b24e246.png

id,name,qq,age称为字段,其余的,一行内容称为一条记录

本节重点:

1 创建表

2 查看表结构

3 数据类型

4 表完整性约束

5 修改表

6 复制表

7 删除表

一 创建表

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

语法:

create table 表名(

字段名1 类型[(宽度) 约束条件],

字段名2 类型[(宽度) 约束条件],

字段名3 类型[(宽度) 约束条件]

);

注意:

1. 在同一张表中,字段名是不能相同

2. 宽度和约束条件可选

3. 字段名和类型是必须的

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

9574c83e45b24a79c75f6cc6074ac5af.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

MariaDB [(none)]>create database db1 charset utf8;

MariaDB [(none)]>use db1;

MariaDB [db1]>create table t1(

->id int,

-> name varchar(50),

-> sex enum('male','female'),

-> age int(3)

->);

MariaDB [db1]> show tables; #查看db1库下所有表名

MariaDB [db1]>desc t1;

+-------+-----------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| name | varchar(50) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

| age | int(3) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+MariaDB [db1]> select id,name,sex,age fromt1;

Empty set (0.00sec)

MariaDB [db1]> select * fromt1;

Empty set (0.00sec)

MariaDB [db1]> select id,name fromt1;

Empty set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

MariaDB [db1]>insert into t1 values

-> (1,'egon',18,'male'),

-> (2,'alex',81,'female')

->;

MariaDB [db1]> select * fromt1;

+------+------+------+--------+

| id | name | age | sex |

+------+------+------+--------+

| 1 | egon | 18 | male |

| 2 | alex | 81 | female |

+------+------+------+--------+MariaDB [db1]>insert into t1(id) values

-> (3),

-> (4);

MariaDB [db1]> select * fromt1;

+------+------+------+--------+

| id | name | age | sex |

+------+------+------+--------+

| 1 | egon | 18 | male |

| 2 | alex | 81 | female |

| 3 | NULL | NULL | NULL |

| 4 | NULL | NULL | NULL |

+------+------+------+--------+

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql>create database db1 charset latin1;

mysql>use db1;

mysql> create table t1(name varchar(20));

mysql> show create table t1; #查看表,发现表默认与数据db1的字符编码一致

mysql> insert into t1 values('林'); #插入中文出错,因为latin1不支持中文

ERROR 1366(HY000):

mysql>

#解决方法一:删除库db1,重建db1,字符编码指定为utf8

#解决方法二:修改

mysql> alter table t1 charset utf8; #修改表t1的编码

mysql> insert into t1 values('林'); #虽然t1的编码改了,但是t1的字段name仍然是按照latin1编码创建的

ERROR 1366(HY000):

mysql> alter table t1 modify name varchar(20); #需要重新定义下字段name

mysql> insert into t1 values('林');

mysql> select * fromt1;

+------+

| name |

+------+

| 林 |

+------+ps:不要忘记将数据库编码也改成utf8,这样以后在该数据库下创建表时,都默认utf8编码了

#配置文件:http://blog.csdn.net/yipiankongbai/article/details/16937815

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

#1. 修改配置文件

[mysqld]

default-character-set=utf8

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

#mysql5.5以上:修改方式有所改动

[mysqld]

character-set-server=utf8

collation-server=utf8_general_ci

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

#2. 重启服务#3. 查看修改结果:

\s

show variables like '%char%'

48304ba5e6f9fe08f3fa1abda7d326ab.png

注意注意注意:表中的最后一个字段不要加逗号

二 查看表结构

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

MariaDB [db1]> describe t1; #查看表结构,可简写为desc 表名

+-------+-----------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| name | varchar(50) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

| age | int(3) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+

MariaDB [db1]> show create table t1\G; #查看表详细结构,可加\G

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

三 数据类型

四 表完整性约束

五 修改表ALTER TABLE

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

语法:

1. 修改表名

ALTER TABLE 表名

RENAME 新表名;

2. 增加字段

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…],

ADD 字段名 数据类型 [完整性约束条件…];

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…] FIRST;

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

3. 删除字段

ALTER TABLE 表名

DROP 字段名;

4. 修改字段

ALTER TABLE 表名

MODIFY 字段名 数据类型 [完整性约束条件…];

ALTER TABLE 表名

CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];

ALTER TABLE 表名

CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

示例:

1. 修改存储引擎

mysql> alter table service

-> engine=innodb;

2. 添加字段

mysql> alter table student10

-> add name varchar(20) not null,

-> add age int(3) not null default 22;

mysql> alter table student10

-> add stu_num varchar(10) not null after name; //添加name字段之后

mysql> alter table student10

-> add sex enum('male','female') default 'male' first; //添加到最前面

3. 删除字段

mysql> alter table student10

-> drop sex;

mysql> alter table service

-> drop mac;

4. 修改字段类型modify

mysql> alter table student10

-> modify age int(3);

mysql> alter table student10

-> modify id int(11) not null primary key auto_increment; //修改为主键

5. 增加约束(针对已有的主键增加auto_increment)

mysql> alter table student10 modify id int(11) not null primary key auto_increment;

ERROR 1068 (42000): Multiple primary key defined

mysql> alter table student10 modify id int(11) not null auto_increment;

Query OK, 0 rows affected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

6. 对已经存在的表增加复合主键

mysql> alter table service2

-> add primary key(host_ip,port);

7. 增加主键

mysql> alter table student1

-> modify name varchar(10) not null primary key;

8. 增加主键和自动增长

mysql> alter table student1

-> modify id int not null primary key auto_increment;

9. 删除主键

a. 删除自增约束

mysql> alter table student10 modify id int(11) not null;

b. 删除主键

mysql> alter table student10

-> drop primary key;

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

六 复制表

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

复制表结构+记录 (key不会复制: 主键、外键和索引)

mysql> create table new_service select * from service;

只复制表结构

mysql> select * from service where 1=2; //条件为假,查不到任何记录

Empty set (0.00 sec)

mysql> create table new1_service select * from service where 1=2;

Query OK, 0 rows affected (0.00 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> create table t4 like employees;

48304ba5e6f9fe08f3fa1abda7d326ab.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值