MySQL数据表基本操作

打印 上一主题 下一主题

主题 825|帖子 825|积分 2475

数据表基本操作

数据表是数据库的重要构成部分,每一个数据库都是由若干个数据表构成。没有数据表就没法在数据库中存放数据。
1.创建数据表

创建数据表是指在已经创建的数据库中建立新表,创建数据表的过程是规定数据列的属性的过程。
  1. CREATE  TABLE [IF NOT EXISTS] tb1_name
复制代码
案例1:

创建基本表:
创建如下要求的表tb_emp1
字段名称数据范例备注idint(11)员工编号namevarchar(25)员工名称deptidint(11)地点部分编号salaryfloat工资
  1. ##创建test数据库
  2. mysql> create database test;
  3. Query OK, 1 row affected (0.01 sec)
  4. ##切换数据库
  5. mysql> use test;
  6. Database changed
  7. ##在test数据库中创建表
  8. mysql> create table tb_emp1(id int(11),name varchar(25),deptid int(11),salary float);
  9. Query OK, 0 rows affected, 2 warnings (0.06 sec)
  10. ##查看当前数据库中所有表
  11. mysql> show tables;
  12. +----------------+
  13. | Tables_in_test |
  14. +----------------+
  15. | tb_emp1        |
  16. | test_table     |
  17. +----------------+
  18. 2 rows in set (0.02 sec)
  19. ##查询表结构
  20. mysql> desc tb_emp1;
  21. +--------+-------------+------+-----+---------+-------+
  22. | Field  | Type        | Null | Key | Default | Extra |
  23. +--------+-------------+------+-----+---------+-------+
  24. | id     | int         | YES  |     | NULL    |       |
  25. | name   | varchar(25) | YES  |     | NULL    |       |
  26. | deptid | int         | YES  |     | NULL    |       |
  27. | salary | float       | YES  |     | NULL    |       |
  28. +--------+-------------+------+-----+---------+-------+
  29. 4 rows in set (0.01 sec)
  30. ##查询表定义
  31. mysql> show create table tb_emp1\G;
  32. *************************** 1. row ***************************
  33.        Table: tb_emp1
  34. Create Table: CREATE TABLE `tb_emp1` (
  35.   `id` int DEFAULT NULL,
  36.   `name` varchar(25) DEFAULT NULL,
  37.   `deptid` int DEFAULT NULL,
  38.   `salary` float DEFAULT NULL
  39. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
  40. 1 row in set (0.01 sec)
复制代码
案例2:

创建暂时表:
暂时表不生成物理文件,会花内 有用。
  1. mysql> create temporary table new_tb_emp1 select * from tb_emp1;
  2. Query OK, 0 rows affected (0.01 sec)
  3. Records: 0  Duplicates: 0  Warnings: 0
  4. mysql> show tables;
  5. +----------------+
  6. | Tables_in_test |
  7. +----------------+
  8. | tb_emp1        |
  9. | test_table     |
  10. +----------------+
  11. 2 rows in set (0.00 sec)
  12. mysql> show create table new_tb_emp1;
  13. +-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  14. | Table       | Create Table
  15. |
  16. +-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  17. | new_tb_emp1 | CREATE TEMPORARY TABLE `new_tb_emp1` (
  18.   `id` int DEFAULT NULL,
  19.   `name` varchar(25) DEFAULT NULL,
  20.   `deptid` int DEFAULT NULL,
  21.   `salary` float DEFAULT NULL
  22. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
  23. +-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  24. 1 row in set (0.00 sec)
复制代码
2.修改数据表

ALTER TABLE命令可以修改表布局,比如增加和删除索引,修改已经存在字段的数据范例,重命名字段或表名称,也可以修改表的存储引擎等特性。
  1. ALTER TABLE tb_name .....
复制代码
案例1(增,删)

  1. mysql> create table t1(a int,b char(10));
  2. Query OK, 0 rows affected (0.03 sec)
  3. mysql> show tables;
  4. +----------------+
  5. | Tables_in_test |
  6. +----------------+
  7. | t1             |
  8. | tb_emp1        |
  9. | test_table     |
  10. +----------------+
  11. 3 rows in set (0.00 sec)
  12. ##修改表名
  13. mysql> alter table t1 rename t2;
  14. Query OK, 0 rows affected (0.02 sec)
  15. mysql> show tables;
  16. +----------------+
  17. | Tables_in_test |
  18. +----------------+
  19. | t2             |
  20. | tb_emp1        |
  21. | test_table     |
  22. +----------------+
  23. 3 rows in set (0.00 sec)
  24. mysql> desc t2;
  25. +-------+----------+------+-----+---------+-------+
  26. | Field | Type     | Null | Key | Default | Extra |
  27. +-------+----------+------+-----+---------+-------+
  28. | a     | int      | YES  |     | NULL    |       |
  29. | b     | char(10) | YES  |     | NULL    |       |
  30. +-------+----------+------+-----+---------+-------+
  31. 2 rows in set (0.00 sec)
  32. ##增加字段
  33. mysql> alter table t2 add d timestamp;
  34. Query OK, 0 rows affected (0.02 sec)
  35. Records: 0  Duplicates: 0  Warnings: 0
  36. ##修改数据类型和字段名称
  37. mysql> alter table t2 modify a tinyint not null,change b c char(20);
  38. Query OK, 0 rows affected (0.07 sec)
  39. Records: 0  Duplicates: 0  Warnings: 0
  40. mysql> desc t2;
  41. +-------+-----------+------+-----+---------+-------+
  42. | Field | Type      | Null | Key | Default | Extra |
  43. +-------+-----------+------+-----+---------+-------+
  44. | a     | tinyint   | NO   |     | NULL    |       |
  45. | c     | char(20)  | YES  |     | NULL    |       |
  46. | d     | timestamp | YES  |     | NULL    |       |
  47. +-------+-----------+------+-----+---------+-------+
  48. 3 rows
  49. ##删除字段
  50. mysql> alter table t2 drop c;
  51. Query OK, 0 rows affected (0.02 sec)
  52. Records: 0  Duplicates: 0  Warnings: 0
  53. mysql> desc t2;
  54. +-------+-----------+------+-----+---------+-------+
  55. | Field | Type      | Null | Key | Default | Extra |
  56. +-------+-----------+------+-----+---------+-------+
  57. | a     | tinyint   | NO   |     | NULL    |       |
  58. | d     | timestamp | YES  |     | NULL    |       |
  59. +-------+-----------+------+-----+---------+-------+
  60. 2 rows in set (0.00 sec)
  61. ##增加自增新字段
  62. mysql> alter table t2 add c int unsigned not null auto_increment,add primary key (c);
  63. Query OK, 0 rows affected (0.07 sec)
  64. Records: 0  Duplicates: 0  Warnings: 0
  65. mysql> desc t2;
  66. +-------+--------------+------+-----+---------+----------------+
  67. | Field | Type         | Null | Key | Default | Extra          |
  68. +-------+--------------+------+-----+---------+----------------+
  69. | a     | tinyint      | NO   |     | NULL    |                |
  70. | d     | timestamp    | YES  |     | NULL    |                |
  71. | c     | int unsigned | NO   | PRI | NULL    | auto_increment |
  72. +-------+--------------+------+-----+---------+----------------+
  73. 3 rows in set (0.00 sec)
  74. ##指定字段最左增加字段
  75. mysql> alter table t2 add first_col int(11) first;
  76. Query OK, 0 rows affected, 1 warning (0.01 sec)
  77. Records: 0  Duplicates: 0  Warnings: 1
  78. mysql> desc t2;
  79. +-----------+--------------+------+-----+---------+----------------+
  80. | Field     | Type         | Null | Key | Default | Extra          |
  81. +-----------+--------------+------+-----+---------+----------------+
  82. | first_col | int          | YES  |     | NULL    |                |
  83. | a         | tinyint      | NO   |     | NULL    |                |
  84. | d         | timestamp    | YES  |     | NULL    |                |
  85. | c         | int unsigned | NO   | PRI | NULL    | auto_increment |
  86. +-----------+--------------+------+-----+---------+----------------+
  87. 4 rows in set (0.00 sec)
  88. ##指定相对位置增加字段
  89. mysql> alter table t2 add second_col int(11) after d;
  90. Query OK, 0 rows affected, 1 warning (0.02 sec)
  91. Records: 0  Duplicates: 0  Warnings: 1
  92. mysql> desc t2;
  93. +------------+--------------+------+-----+---------+----------------+
  94. | Field      | Type         | Null | Key | Default | Extra          |
  95. +------------+--------------+------+-----+---------+----------------+
  96. | first_col  | int          | YES  |     | NULL    |                |
  97. | a          | tinyint      | NO   |     | NULL    |                |
  98. | d          | timestamp    | YES  |     | NULL    |                |
  99. | second_col | int          | YES  |     | NULL    |                |
  100. | c          | int unsigned | NO   | PRI | NULL    | auto_increment |
  101. +------------+--------------+------+-----+---------+----------------+
  102. 5 rows in set (0.00 sec)
  103. ##修改字段位置
  104. mysql> alter table t2 modify c int unsigned first;
  105. Query OK, 0 rows affected (0.07 sec)
  106. Records: 0  Duplicates: 0  Warnings: 0
  107. mysql> desc t2;
  108. +------------+--------------+------+-----+---------+-------+
  109. | Field      | Type         | Null | Key | Default | Extra |
  110. +------------+--------------+------+-----+---------+-------+
  111. | c          | int unsigned | NO   | PRI | NULL    |       |
  112. | first_col  | int          | YES  |     | NULL    |       |
  113. | a          | tinyint      | NO   |     | NULL    |       |
  114. | d          | timestamp    | YES  |     | NULL    |       |
  115. | second_col | int          | YES  |     | NULL    |       |
  116. +------------+--------------+------+-----+---------+-------+
  117. 5 rows in set (0.00 sec)
复制代码
3.复制数据表

复制指定表的表布局,如列定义和索引定义等,但不复制内容,指定的表不能为视图。
案列:

  1. ##为表插入数据
  2. mysql> insert into tb_emp1(id,name,deptid,salary) value(1,'zhangsan',10,1000);
  3. Query OK, 1 row affected (0.01 sec)
  4. mysql> select * from tb_emp1;
  5. +------+----------+--------+--------+
  6. | id   | name     | deptid | salary |
  7. +------+----------+--------+--------+
  8. |    1 | zhangsan |     10 |   1000 |
  9. +------+----------+--------+--------+
  10. 1 row in set (0.00 sec)
  11. #复制数据表,但不复制数据
  12. mysql> create table like_tb_emp1 like tb_emp1;
  13. Query OK, 0 rows affected (0.03 sec)
  14. mysql> show tables;
  15. +----------------+
  16. | Tables_in_test |
  17. +----------------+
  18. | like_tb_emp1   |
  19. | t2             |
  20. | tb_emp1        |
  21. | test_table     |
  22. +----------------+
  23. 4 rows in set (0.00 sec)
  24. mysql> desc like_tb_emp1;
  25. +--------+-------------+------+-----+---------+-------+
  26. | Field  | Type        | Null | Key | Default | Extra |
  27. +--------+-------------+------+-----+---------+-------+
  28. | id     | int         | YES  |     | NULL    |       |
  29. | name   | varchar(25) | YES  |     | NULL    |       |
  30. | deptid | int         | YES  |     | NULL    |       |
  31. | salary | float       | YES  |     | NULL    |       |
  32. +--------+-------------+------+-----+---------+-------+
  33. 4 rows in set (0.00 sec)
  34. mysql> select *from like_tb_emp1;
  35. Empty set (0.00 sec)
  36. ###要复制表数据,可以通过查询指定数据创建新表
  37. mysql> create table select_tb_emp1 select *from tb_emp1;
  38. Query OK, 1 row affected (0.03 sec)
  39. Records: 1  Duplicates: 0  Warnings: 0
  40. mysql> select * from select_tb_emp1;
  41. +------+----------+--------+--------+
  42. | id   | name     | deptid | salary |
  43. +------+----------+--------+--------+
  44. |    1 | zhangsan |     10 |   1000 |
  45. +------+----------+--------+--------+
  46. 1 row in set (0.00 sec)
复制代码
4.删除数据表

在MySQL数据库中,对于不再需要的数据表,可以将其从数据库中删除。
在删除表的同时,表的布局和表中所有的数据都会被删除,因此在删除数据表之前最好先备份,以免造成无法挽回的损失。
  1. DROP TABLE [IF NOT EXISTS] 表名......
复制代码
案例:

  1. mysql> show tables;
  2. +----------------+
  3. | Tables_in_test |
  4. +----------------+
  5. | like_tb_emp1   |
  6. | select_tb_emp1 |
  7. | t2             |
  8. | tb_emp1        |
  9. | test_table     |
  10. +----------------+
  11. 5 rows in set (0.00 sec)
  12. mysql> drop table t2;
  13. Query OK, 0 rows affected (0.02 sec)
  14. mysql> show tables;
  15. +----------------+
  16. | Tables_in_test |
  17. +----------------+
  18. | like_tb_emp1   |
  19. | select_tb_emp1 |
  20. | tb_emp1        |
  21. | test_table     |
  22. +----------------+
  23. 4 rows in set (0.00 sec)
  24. mysql> desc t2;
  25. ERROR 1146 (42S02): Table 'test.t2' doesn't exist
  26. mysql> select * from t2;
  27. ERROR 1146 (42S02): Table 'test.t2' doesn't exist
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表