mysql从删除到跑路之删表_mysql数据库从删库到跑路之mysql表操作

表介绍

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

bd180e036c1adb901fe20d7d8c8f733b.png

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

内容:

1 创建表

2 查看表结构

3 数据类型

4 表完整性约束

5 修改表

6 复制表

7 删除表

总体基本操作

#1 操作文件夹(库)

create database db1 charset utf8;

show databases;

show create database db1;

alter database db1 charset gbk;

drop database db1;#2 操作文件(表)

切换到文件夹下:use db1

create table t1(id int,name char(10))engine=innodb;

create table t2(id int,name char(10))engine=innodb default charset utf8;

show tables;

show create table t1;

desc t1;#查看表结构

alter table t1 add age int;

alter table t1 modify name char(12);

drop table t1;#3 操作文件的一行行内容(记录)

insert into db1.t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');

insert into db1.t1(name) values('egon1'),('egon2'),('egon3');

insert into db10.user(name) values('egon'),('alex');

select* fromt1;

select namefromt1;

select name,idfromt1;

update t1 set name='SB' where id=4;

update t1 set name='SB' where name='alex';

deletefrom t1 where id=4;#对于清空表记录有两种方式,但是推荐后者

delete fromt1;

truncate t1;#当数据量比较大的情况下,使用这种方式,删除速度快

truncate#自增id

create table t5(id int primary key auto_increment,name char(10));

create table t4(id intnot null unique,name char(10));

insert into t5(name) values

('egon5'),

('egon6'),

('egon7'),

('egon8'),

('egon9'),

('egon10'),

('egon11'),

('egon12'),

('egon13');#拷贝表结构

create table t7 select * from t5 where 1=2;

alter table t7 modify id int primary key auto_increment;

insert into t7(name) values

('egon1'),

('egon2'),

('egon3'),

('egon4'),

('egon5'),

('egon6'),

('egon7'),

('egon8'),

('egon9'),

('egon10'),

('egon11'),

('egon12'),

('egon13');

deletefrom t7 where id=1; #删记录

update t7 set name=''; #修改字段对应的值

一 创建表

语法:

create table 表名(

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

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

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

);

注意:1. 在同一张表中,字段名是不能相同2. 宽度和约束条件可选3. 字段名和类型是必须的

mysql从删除到跑路之删表_mysql数据库从删库到跑路之mysql表操作_第1张图片

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)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.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

乱码问题

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.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%'

通过修改配置文件来解决乱码问题

二 查看表结构

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

五 修改表ALTER TABLE

语法: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) notnull,-> 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) notnull primary key auto_increment;

ERROR1068 (42000): Multiple primary key defined

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

Query OK, 0 rows affected (0.01sec)

Records: 0 Duplicates: 0 Warnings: 06. 对已经存在的表增加复合主键

mysql>alter table service2->add primary key(host_ip,port);7. 增加主键

mysql>alter table student1-> modify name varchar(10) notnull primary key;8. 增加主键和自动增长

mysql>alter table student1-> modify id int notnull primary key auto_increment;9. 删除主键

a. 删除自增约束

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

b. 删除主键

mysql>alter table student10-> drop primary key;

六 复制表

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

mysql> create table new_service select * fromservice;

只复制表结构

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

Empty set (0.00sec)

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

Query OK, 0 rows affected (0.00sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> create table t4 like employees;

七 删除表

DROP TABLE 表名;

你可能感兴趣的:(mysql从删除到跑路之删表)