129 MySQL表操作
Posted xichenhome
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了129 MySQL表操作相关的知识,希望对你有一定的参考价值。
目录
一、表介绍
表就相当于时文件,表中的一条记录就相当于文件的一行内容,不同的是表中的一条记录有对应的标题,称之为表的字段
例子:有一个名为student的文件
id,name,age,sex , course
1 , 张三,17,男,语文
2,李四,18,男,英语
3,王二,19,女,数学
4 刘一 ,18 ,女, 化学
现在我们把上面的文件改为一个表的话,应该是下面的样子
id | name | age | sex | course |
---|---|---|---|---|
1 | 张三 | 17 | 男 | 语文 |
2 | 李四 | 18 | 男 | 英语 |
3 | 王二 | 19 | 女 | 数学 |
4 | 刘一 | 18 | 女 | 化学 |
id,name,age,sex,course 称之为上面表的字段,其余的一行内容称之为是一条记录
二、创建表
2.1 语法
create table [数据库名.]表名(字段名1 类型[(宽度) 约束条件],字段名2 类型[(宽度) 约束条件],字段名1 类型[(宽度) 约束条件]);
- 在同一表中,不能有相同的字段名
- 宽度和约束条件是可选的
- 字段名和类型是必须要有的
2.2建表
1.先建一个库mydb
create database mydb; 使用默认字符编码的
2.打开这个mydb数据库,在这个库里创建表t1
use mydb;
create table tb1(id int(1),name varchar(10),age int(2),sex varchar(2),course varchar(8))
# 2.可以不打开表直接在mydb这个库里直接创建表t1
# create table mydb.tb1(id int,name varchar,age int,sex char,course char);
3.创建表以后显示mydb库里面的所有表
show tables;
4.查看表t1的结构
desc t1;
5.查看表t1中的所有记录
select * from [数据库名.]t1;
6.查看表t1中某个字段的数据
select id,name,age,sex,course from t1;
################################## cmd终端运行 ##########################################
mysql> create database mydb;
Query OK, 1 row affected (0.00 sec)
mysql> use mydb;
Database changed
mysql> create table t1 (id int(1),name varchar(10),age int(2),sex varchar(2),course varchar(8));
Query OK, 0 rows affected (0.37 sec)
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| t1 |
+----------------+
1 row in set (0.00 sec)
mysql> desc t1;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(1) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int(2) | YES | | NULL | |
| sex | varchar(2) | YES | | NULL | |
| course | varchar(8) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
mysql> select * from t1;
Empty set (0.00 sec)
mysql> select id,name,age,sex,course from t1;
Empty set (0.00 sec)
########################################## end ########################################
三、表中插入数据
3.1 语法
insert [into] [数据库名.]表名[(字段名1,字段名2,字段名3····)] values(字段对应的值)
- 插入数据时,一条数据的每一个字段都要和最开始创建表时的字段对应
- 并且输入的数据要和字段的约束类型一致
- 中括号的字段名是可选的
3.2 插数据
1.在当前数据库时后表插入一条数据,加中括号带字段名的(可省略数据库名.)
use mydb;
insert into t1 (id,name,age,sex,course) values(1,'xichen',18,'女','语文');
2.不在当前数据库的时候,t1表插入一条数据(记录)
insert into mydb.t1(id,name,age,sex,course) values(2,'chen',19,'女','数学');
3.省略字段名,向表t1中添加一条数据
insert into t1 values(3,'xixi',19,'男','数学');
4.一次性向表中添加多条数据
insert into t1 values(4,'haha',19,'女','语文'),
(5,'lele',19,'男','英语'),
(6,'dada',20,'男','数学');
##################################### cmd ###############################################
mysql> use mydb;
Database changed
mysql> insert into t1(id,name,age,sex,course) values(1,'xichen',18,'女','语文');
Query OK, 1 row affected, 2 warnings (0.06 sec)
mysql> insert into mydb.t1(id,name,age,sex,course) values (2,'chen',19,'女','数学');
Query OK, 1 row affected, 2 warnings (0.13 sec)
mysql> insert into t1 values(3,'xixi',19,'男','数学');
Query OK, 1 row affected, 2 warnings (0.13 sec)
mysql> insert into t1 values(4,'haha',19,'女','英语'),(5,'lele',19,'男','语文'),(6,'dada',20,'男','数学');
Query OK, 3 rows affected, 6 warnings (0.13 sec)
Records: 3 Duplicates: 0 Warnings: 6
mysql> select * from t1;
+------+--------+------+------+--------+
| id | name | age | sex | course |
+------+--------+------+------+--------+
| 1 | xichen | 18 | 女 | 语文 |
| 2 | chen | 19 | 女 | 数学 |
| 3 | xixi | 19 | 男 | 数学 |
| 4 | haha | 19 | 女 | 语文 |
| 5 | lele | 19 | 男 | 英文 |
| 6 | dada | 20 | 男 | 数学 |
+------+--------+------+------+--------+
6 rows in set (0.00 sec)
###################################### end #############################################
四、查看表的结构
4.1 语法
1. desc [tablename]; 可以查看当前表的结构
虽然desc 方法可以查看当前表的结构,但是他输出的信息还不够全面
2.show creat table 表名[\G];
得到更全面的表定义信息,除了可以看到表定义之外,还可以看到engine(存储引擎)和charset(字符集)等信息。(\G选项的含义是是的记录能够竖向排列,以便更好的显示内容较长的记录。)
4.2 使用desc/show create table
1.显示t1表的结构(desc t1;)
2.显示创建表定义的表结构(show create table t1;)
3.以树状形式显示表的机构(show create table t1\G;)
######################################### cmd ###########################################
mysql> desc t1;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(1) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int(2) | YES | | NULL | |
| sex | char(2) | YES | | NULL | |
| course | char(10) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
mysql> show create table t1;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t1 | CREATE TABLE `t1` (
`id` int(1) DEFAULT NULL,
`name` varchar(10) DEFAULT NULL,
`age` int(2) DEFAULT NULL,
`sex` char(2) CHARACTER SET utf8 DEFAULT NULL,
`course` char(10) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show create table t1\G;
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`id` int(1) DEFAULT NULL,
`name` varchar(10) DEFAULT NULL,
`age` int(2) DEFAULT NULL,
`sex` char(2) CHARACTER SET utf8 DEFAULT NULL,
`course` char(10) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
ERROR:
No query specified
###################################### end ##############################################
五、修改表的结构
5.1 语法
1. 修改表名
alter table 旧表名 rename 新表名;
2.增加表中字段
alter table 表名 add 字段名 数据类型[完整性约束条件····],add···
3.删除表中字段
alter table 表名 drop 字段名;
4.修改表中字段
alter table 表名 MODIFY 字段名 数据类型 [完整性约束条件…];
alter table 表名 change 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
alter table 表名 change 旧字段名 新字段名 新数据类型 [完整性约束条件…];
5.修改字段在表中的排列顺序/在增加的时候指定位置
alter table 表名 add 字段名 数据类型 [完整性约束条件…] frist;
alter table 表名 add 字段名 数据类型 [完整性约束条件…] after 字段名;
alter table 表名 change 字段名 旧字段名 新字段名 新数据类型 [完整性约束条件…] frist;
alter table 表名 modify 字段名 数据类型 [完整性约束条件…] after 字段名;
5.2 使用
1.将t1表名改为t2
alter table t1 rename t2;
2.向t2表中增加hobby字段
alter table t2 add hobby char(8);
3.删除t2表中的hobby字段
alter table t2 drop hobby;
4.把t2表中的course字段的宽度
alter table t2 modify course char(8);
5. 把t2表中的course字段改为class
alter table t2 change course class char(20)
6.把t2表的age字段放在sex字段后
alter table t2 modify age int(2) after sex;
########################################### cmd #########################################
mysql> alter table t1 rename t2;
Query OK, 0 rows affected (1.10 sec)
mysql> alter table t2 add hobby char(8) character set 'utf8';
Query OK, 0 rows affected (0.70 sec)
mysql> alter table t2 drop hobby;
Query OK, 0 rows affected (0.56 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table t2 modify course char(8);
Query OK, 5 rows affected, 5 warnings (0.97 sec)
Records: 5 Duplicates: 0 Warnings: 5
mysql> alter table t2 change course class char(20) character set 'utf8';
Query OK, 5 rows affected (0.94 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from t2;
+------+--------+------+------+-------+
| id | name | age | sex | class |
+------+--------+------+------+-------+
| 1 | xichen | 18 | 女 | ?? |
| 2 | chen | 19 | 女 | ?? |
| 3 | xixi | 19 | 男 | ?? |
| 4 | haha | 19 | 女 | ?? |
| 6 | dada | 20 | 男 | ?? |
+------+--------+------+------+-------+
5 rows in set (0.00 sec)
mysql> alter table t2 modify age int(2) after sex;
Query OK, 0 rows affected (0.69 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc t2;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(1) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| sex | char(2) | YES | | NULL | |
| age | int(2) | YES | | NULL | |
| class | char(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
####################################### end #############################################
六、删除表
drop table 表名;
以上是关于129 MySQL表操作的主要内容,如果未能解决你的问题,请参考以下文章