当前位置:Gxlcms > 数据库问题 > database

database

时间:2021-07-01 10:21:17 帮助过:12人阅读

技术分享 技术分享
  1. mysql> SHOW DATABASES;
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | information_schema |
  6. | community |
  7. | community_test |
  8. | data |
  9. | mydata |
  10. | mysql |
  11. | performance_schema |
  12. | test |
  13. +--------------------+
  14. 8 rows in set (0.04 sec)
技术分享 技术分享 技术分享

  创建数据库的格式:CREATE DATABASE 数据库名;

示例:创建一个名为example的数据库

技术分享 技术分享 技术分享
  1. mysql> CREATE DATABASE example;
  2. Query OK, 1 row affected (0.00 sec)
  3. mysql> SHOW DATABASES;
  4. +--------------------+
  5. | Database |
  6. +--------------------+
  7. | information_schema |
  8. | community |
  9. | community_test |
  10. | data |
  11. | example |
  12. | mydata |
  13. | mysql |
  14. | performance_schema |
  15. | test |
  16. +--------------------+
  17. 9 rows in set (0.00 sec)
技术分享 技术分享 技术分享

  3.删除数据库:

  格式:DROP DATABASE 数据库名;

示例:删除example数据库

技术分享 技术分享 技术分享
  1. mysql> DROP DATABASE example;
  2. Query OK, 0 rows affected (0.07 sec)
  3. mysql> SHOW DATABASES;
  4. +--------------------+
  5. | Database |
  6. +--------------------+
  7. | information_schema |
  8. | community |
  9. | community_test |
  10. | data |
  11. | mydata |
  12. | mysql |
  13. | performance_schema |
  14. | test |
  15. +--------------------+
  16. 8 rows in set (0.00 sec)
技术分享 技术分享 技术分享

  4.数据库存储引擎

  存储引擎就是指表的类型,数据库存储引擎决定了表在计算机的存储方式。

  MySQL中查询存储引擎的类型命令:SHOW ENGINES;

技术分享 技术分享 技术分享
  1. mysql> SHOW ENGINES;
  2. +--------------------+---------+------------------------------------------------
  3. ----------------+--------------+------+------------+
  4. | Engine | Support | Comment
  5. | Transactions | XA | Savepoints |
  6. +--------------------+---------+------------------------------------------------
  7. ----------------+--------------+------+------------+
  8. | FEDERATED | NO | Federated MySQL storage engine
  9. | NULL | NULL | NULL |
  10. | MRG_MYISAM | YES | Collection of identical MyISAM tables
  11. | NO | NO | NO |
  12. | MyISAM | YES | MyISAM storage engine
  13. | NO | NO | NO |
  14. | BLACKHOLE | YES | /dev/null storage engine (anything you write to
  15. it disappears) | NO | NO | NO |
  16. | CSV | YES | CSV storage engine
  17. | NO | NO | NO |
  18. | MEMORY | YES | Hash based, stored in memory, useful for tempor
  19. ary tables | NO | NO | NO |
  20. | ARCHIVE | YES | Archive storage engine
  21. | NO | NO | NO |
  22. | InnoDB | DEFAULT | Supports transactions, row-level locking, and f
  23. oreign keys | YES | YES | YES |
  24. | PERFORMANCE_SCHEMA | YES | Performance Schema
  25. | NO | NO | NO |
  26. +--------------------+---------+------------------------------------------------
  27. ----------------+--------------+------+------------+
  28. 9 rows in set (0.00 sec)
技术分享 技术分享 技术分享

  查询结果中,Engine参数指存储引擎名称;Support参数说明MySQL是否支持该类型引擎;Comment参数表示对该引擎的评论;Transaction参数表示是否支持事务处理;XA参数表示是否分布式交易处理的XA规范;Savepoints参数表示是否支持保存点,以方便事务的回滚操作;由上面我们看到InnoDB存储引擎是default的,也就是数据库默认的存储引擎,下面我们简单介绍一下InnoDB。

  InnoDB是MySQL的一种存储引擎,InnoDB给MySQL提供了事务、回滚、崩溃修复能力和多版本并发控制的事务安全。InnoDB是MySQL上第一个提供外键约束的表引擎,而且对事务处理的能力,也是其他存储引擎不能比拟的。不过这种引擎的缺点就是读写效率稍差,占用的数据空间相对比较大。

  下面就是正式的内容:

  创建表:

  1)创建表的形式:

技术分享 技术分享 技术分享
  1. CREATE TABLE 表名 (
  2. 属性名 数据类型 [完整约束条件],
  3. 属性名 数据类型 [完整约束条件],
  4. ...
  5. ...
  6. 属性名 数据类型 [完整约束条件]
  7. );
技术分享 技术分享 技术分享

  如果你很急的登陆进去就创建表,恭喜你,你会出现“No database selected”的错误,因为你没有告诉别人你要选择在哪个数据库创建表,所以在创建之前要选择数据库,格式:USE 数据库名;

示例创建一个student表:

技术分享 技术分享 技术分享
  1. mysql> use example;
  2. Database changed
  3. mysql> CREATE TABLE student (
  4. -> id int,
  5. -> name varchar(20)
  6. -> );
  7. Query OK, 0 rows affected (0.09 sec)
技术分享 技术分享 技术分享

上面创建表的时候涉及到一个完整性约束条件,下面就列出一个完整性约束条件表:

约束条件

说明

PRIMARY KEY

 标识该属性为该表的主键,可以唯一的标识对应的元组

FOREIGN KEY

 标识该属性为该表的外键,是与之联系某表的主键
 NOT NULL

 标识该属性不能为空

UNIQUE

 标识该属性的值是唯一的
AUTO_INCREMENT

 标识该属性的值是自动增加,这是MySQL的SQL语句的特色

 DEFAULT

为该属性设置默认值

  下面讲解一下上面完整性约束条件的应用:

 

  2)设置表的主键

  单字段主键格式:属性名 数据类型 PRIMARY KEY

示例:

  1. mysql> CREATE TABLE student1 (
  2. -> id int PRIMARY KEY,
  3. -> name varchar(20)
  4. -> );
  5. Query OK, 0 rows affected (0.06 sec)

  多字段主键格式:PRIMARY KEY(属性名1,属性名2....属性名n)

示例:

技术分享 技术分享 技术分享
  1. mysql> CREATE TABLE student2 (
  2. -> id int,
  3. -> stu_id int,
  4. -> name varchar(20),
  5. -> PRIMARY KEY(id,stu_id)
  6. -> );
  7. Query OK, 0 rows affected (0.00 sec)
技术分享 技术分享 技术分享

 

  3)设置表的外键

  格式:CONSTRAINT 外键别名 FOREIGN KEY(属性1,属性2,....属性n) REFERENCES 表名(属性1‘,属性2‘,...属性n‘)

示例:

技术分享 技术分享 技术分享
  1. mysql> CREATE TABLE teacher (
  2. -> id int PRIMARY KEY,
  3. -> stu_id int,
  4. -> name varchar(20),
  5. -> CONSTRAINT STUID FOREIGN KEY(stu_id) REFERENCES student1(id)
  6. -> );
  7. Query OK, 0 rows affected (0.00 sec)
技术分享 技术分享 技术分享

 

  4)设置表的非空约束

  简单的说就是不让这个属性的值为空,不填的话就会报错

  格式:属性名 数据类型 NOT NULL

 

  5)设置表的唯一性约束

  就是这个属性的值是不能重复的

  格式:属性名 数据类型 UNIQUE

 

  6)设置表的属性值自动增加

  AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLINT、INT和BIGINT),在默认的情况下,该字段的值是从1开始自增

  格式:属性名 数据类型 AUTO_INCREMENT

 

  7)设置表的属性的默认值

  格式:属性名 数据类型 DEFAULT 默认值

  

下面对4-7进行综合示例:

技术分享 技术分享 技术分享
  1. mysql> CREATE TABLE student3 (
  2. -> id int PRIMARY KEY AUTO_INCREMENT,
  3. -> teacher_id int UNIQUE,
  4. -> name varchar(20) NOT NULL,
  5. -> sex varchar(10) DEFAULT ‘male‘
  6. -> );
  7. Query OK, 0 rows affected (0.01 sec)
技术分享 技术分享 技术分享

 

  查看表结构

  查看表基本结构语句DESCRIBE

  格式:DESCRIBE 表名;

  通过查看表的结构,就很明确的对表进行解读,而且可以查看一下自己创建的表有没错误,这个SQL语句必须会用啊

示例:

技术分享 技术分享 技术分享
  1. mysql> desc student3;
  2. +------------+-------------+------+-----+---------+----------------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +------------+-------------+------+-----+---------+----------------+
  5. | id | int(11) | NO | PRI | NULL | auto_increment |
  6. | teacher_id | int(11) | YES | UNI | NULL | |
  7. | name | varchar(20) | NO | | NULL | |
  8. | sex | varchar(10) | YES | | male | |
  9. +------------+-------------+------+-----+---------+----------------+
  10. 4 rows in set (0.01 sec)
技术分享 技术分享 技术分享

  查看表详细结构语句SHOW CREATE TABLE

  通过这个SQL语句可以查看表的详细定义,除了字段名、字段的数据类型、约束条件外,还可以查看表的默认存储引擎和字符编码

  格式:SHOW CREATE TABLE 表名;

示例:

技术分享 技术分享 技术分享
  1. mysql> SHOW CREATE TABLE student3;
  2. +----------+-----------------------------------
  3. -----------------------------------------------
  4. -----------------------------------------------
  5. ---------------------------------------------+
  6. | Table | Create Table
  7. |
  8. +----------+-----------------------------------
  9. -----------------------------------------------
  10. -----------------------------------------------
  11. ---------------------------------------------+
  12. | student3 | CREATE TABLE `student3` (
  13. `id` int(11) NOT NULL AUTO_INCREMENT,
  14. `teacher_id` int(11) DEFAULT NULL,
  15. `name` varchar(20) NOT NULL,
  16. `sex` varchar(10) DEFAULT ‘male‘,
  17. PRIMARY KEY (`id`),
  18. UNIQUE KEY `teacher_id` (`teacher_id`)
  19. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |
  20. +----------+-----------------------------------
  21. -----------------------------------------------
  22. -----------------------------------------------
  23. ---------------------------------------------+
  24. 1 row in set (0.00 sec)
技术分享 技术分享 技术分享

  

  修改表:

  1)修改表名

  表名可以在一个数据库中唯一的确定一张表。

  格式:ALTER TABLE 旧表名 RENAME 新表名;

示例:

  1. mysql> ALTER TABLE student RENAME student4;
  2. Query OK, 0 rows affected (0.11 sec)
  3. mysql> DESCRIBE student;
  4. ERROR 1146 (42S02): Table ‘example.student‘ doesn‘t exist

由上面可以看出,改名后的表已经不存在了。

 

  2)修改字段的数据类型

  格式:ALTER TABLE 表名 MODIFY 属性名 数据类型;

示例:

技术分享 技术分享 技术分享
  1. mysql> DESCRIBE student1;
  2. +-------+-------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +-------+-------------+------+-----+---------+-------+
  5. | id | int(11) | NO | PRI | NULL | |
  6. | name | varchar(20) | YES | | NULL | |
  7. +-------+-------------+------+-----+---------+-------+
  8. 2 rows in set (0.08 sec)
  9. mysql> ALTER TABLE student1 MODIFY name varchar(30);
  10. Query OK, 0 rows affected (0.06 sec)
  11. Records: 0 Duplicates: 0 Warnings: 0
  12. mysql> DESCRIBE student1;
  13. +-------+-------------+------+-----+---------+-------+
  14. | Field | Type | Null | Key | Default | Extra |
  15. +-------+-------------+------+-----+---------+-------+
  16. | id | int(11) | NO | PRI | NULL | |
  17. | name | varchar(30) | YES | | NULL | |
  18. +-------+-------------+------+-----+---------+-------+
  19. 2 rows in set (0.01 sec)
技术分享 技术分享 技术分享

 

  3)修改字段名:

  格式:ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;

示例:

技术分享 技术分享 技术分享
  1. mysql> DESCRIBE student1;
  2. +-------+-------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +-------+-------------+------+-----+---------+-------+
  5. | id | int(11) | NO | PRI | NULL | |
  6. | name | varchar(30) | YES | | NULL | |
  7. +-------+-------------+------+-----+---------+-------+
  8. 2 rows in set (0.00 sec)
  9. mysql> ALTER TABLE student1 CHANGE name stu_name varchar(40);
  10. Query OK, 0 rows affected (0.01 sec)
  11. Records: 0 Duplicates: 0 Warnings: 0
  12. mysql> DESCRIBE student1;
  13. +----------+-------------+------+-----+---------+-------+
  14. | Field | Type | Null | Key | Default | Extra |
  15. +----------+-------------+------+-----+---------+-------+
  16. | id | int(11) | NO | PRI | NULL | |
  17. | stu_name | varchar(40) | YES | | NULL | |
  18. +----------+-------------+------+-----+---------+-------+
  19. 2 rows in set (0.00 sec)
技术分享 技术分享 技术分享

这里我修改的字段名的同时也修改了数据类型了,如果你不想修改数据类型的话就按照原来的写就行了。

 

  4)增加字段

  格式:ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];

  其中,“属性名1”参数指需要增加的字段的名称;“FIRST”参数是可选参数,其作用是将新增字段设置为表的第一个字段;“AFTER”参数也是可选的参数,其作用是将新增字段添加到“属性名2”后面;“属性名2”当然就是指表中已经有的字段

示例:

技术分享 技术分享 技术分享
  1. mysql> DESCRIBE student1;
  2. +----------+-------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +----------+-------------+------+-----+---------+-------+
  5. | id | int(11) | NO | PRI | NULL | |
  6. | stu_name | varchar(40) | YES | | NULL | |
  7. +----------+-------------+------+-----+---------+-------+
  8. 2 rows in set (0.00 sec)
  9. mysql> ALTER TABLE student1 ADD teacher_name varchar(20) NOT NULL AFTER id;
  10. Query OK, 0 rows affected (0.01 sec)
  11. Records: 0 Duplicates: 0 Warnings: 0
  12. mysql> DESCRIBE student1;
  13. +--------------+-------------+------+-----+---------+-------+
  14. | Field | Type | Null | Key | Default | Extra |
  15. +--------------+-------------+------+-----+---------+-------+
  16. | id | int(11) | NO | PRI | NULL | |
  17. | teacher_name | varchar(20) | NO | | NULL | |
  18. | stu_name | varchar(40) | YES | | NULL | |
  19. +--------------+-------------+------+-----+---------+-------+
  20. 3 rows in set (0.01 sec)
技术分享 技术分享 技术分享

 

  5)删除字段

  格式:ALTER TABLE 表名 DROP 属性名;

示例:

技术分享 技术分享 技术分享
  1. mysql> DESCRIBE student1;
  2. +--------------+-------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +--------------+-------------+------+-----+---------+-------+
  5. | id | int(11) | NO | PRI | NULL | |
  6. | teacher_name | varchar(20) | NO | | NULL | |
  7. | stu_name | varchar(40) | YES | | NULL | |
  8. +--------------+-------------+------+-----+---------+-------+
  9. 3 rows in set (0.01 sec)
  10. mysql> ALTER TABLE student1 DROP teacher_name;
  11. Query OK, 0 rows affected (0.01 sec)
  12. Records: 0 Duplicates: 0 Warnings: 0
  13. mysql> DESCRIBE student1;
  14. +----------+-------------+------+-----+---------+-------+
  15. | Field | Type | Null | Key | Default | Extra |
  16. +----------+-------------+------+-----+---------+-------+
  17. | id | int(11) | NO | PRI | NULL | |
  18. | stu_name | varchar(40) | YES | | NULL | |
  19. +----------+-------------+------+-----+---------+-------+
  20. 2 rows in set (0.00 sec)
技术分享 技术分享 技术分享

 

  6)更改表的存储引擎

  格式:ALTER TABLE 表名 ENGINE = 存储引擎名;

示例:

技术分享 技术分享 技术分享
  1. mysql> SHOW CREATE TABLE student2;
  2. +----------+----------------------------------------
  3. ----------------------------------------------------
  4. ----------------------------------------------------
  5. | Table | Create Table
  6. +----------+----------------------------------------
  7. ----------------------------------------------------
  8. ----------------------------------------------------
  9. | student2 | CREATE TABLE `student2` (
  10. `id` int(11) NOT NULL DEFAULT ‘0‘,
  11. `stu_id` int(11) NOT NULL DEFAULT ‘0‘,
  12. `name` varchar(20) DEFAULT NULL,
  13. PRIMARY KEY (`id`,`stu_id`)
  14. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |
  15. +----------+----------------------------------------
  16. ----------------------------------------------------
  17. ----------------------------------------------------
  18. 1 row in set (0.05 sec)
  19. mysql> ALTER TABLE student2 ENGINE = MYISAM;
  20. Query OK, 0 rows affected (0.02 sec)
  21. Records: 0 Duplicates: 0 Warnings: 0
  22. mysql> SHOW CREATE TABLE student2;
  23. +----------+----------------------------------------
  24. ----------------------------------------------------
  25. ----------------------------------------------------
  26. | Table | Create Table
  27. +----------+----------------------------------------
  28. ----------------------------------------------------
  29. ----------------------------------------------------
  30. | student2 | CREATE TABLE `student2` (
  31. `id` int(11) NOT NULL DEFAULT ‘0‘,
  32. `stu_id` int(11) NOT NULL DEFAULT ‘0‘,
  33. `name` varchar(20) DEFAULT NULL,
  34. PRIMARY KEY (`id`,`stu_id`)
  35. ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 |
  36. +----------+----------------------------------------
  37. ----------------------------------------------------
  38. ----------------------------------------------------
  39. 1 row in set (0.00 sec)
技术分享 技术分享 技术分享

 

  7)删除表的外键约束

  格式:ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;

示例:

技术分享 技术分享 技术分享
  1. mysql> SHOW CREATE TABLE teacher;
  2. +---------+------------------------------------------------
  3. -----------------------------------------------------------
  4. -----------------------------------------------------------
  5. --------------------------------------------------+
  6. | Table | Create Table
  7. |
  8. +---------+------------------------------------------------
  9. -----------------------------------------------------------
  10. -----------------------------------------------------------
  11. --------------------------------------------------+
  12. | teacher | CREATE TABLE `teacher` (
  13. `id` int(11) NOT NULL,
  14. `stu_id` int(11) DEFAULT NULL,
  15. `name` varchar(20) DEFAULT NULL,
  16. PRIMARY KEY (`id`),
  17. KEY `STUID` (`stu_id`),
  18. CONSTRAINT `STUID` FOREIGN KEY (`stu_id`) REFERENCES `stu
  19. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |
  20. +---------+------------------------------------------------
  21. -----------------------------------------------------------
  22. -----------------------------------------------------------
  23. --------------------------------------------------+
  24. 1 row in set (0.08 sec)
  25. mysql> ALTER TABLE teacher DROP FOREIGN KEY STUID;
  26. Query OK, 0 rows affected (0.04 sec)
  27. Records: 0 Duplicates: 0 Warnings: 0
  28. mysql> SHOW CREATE TABLE teacher;
  29. +---------+------------------------------------------------
  30. -----------------------------------------------------------
  31. --------------------------------------------------------+
  32. | Table | Create Table
  33. |
  34. +---------+------------------------------------------------
  35. -----------------------------------------------------------
  36. --------------------------------------------------------+
  37. | teacher | CREATE TABLE `teacher` (
  38. `id` int(11) NOT NULL,
  39. `stu_id` int(11) DEFAULT NULL,
  40. `name` varchar(20) DEFAULT NULL,
  41. PRIMARY KEY (`id`),
  42. KEY `STUID` (`stu_id`)
  43. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |
  44. +---------+------------------------------------------------
  45. -----------------------------------------------------------
  46. --------------------------------------------------------+
  47. 1 row in set (0.00 sec)
技术分享 技术分享 技术分享

 

  删除表:

  格式:DROP TABLE 表名;

  删除没有被关联的普通表:直接上面的SQL语句就行了

  删除被其他表关联的父表:

  方法一:先删除子表,在删除父表

  方法二:删除父表的外键约束(上面有介绍),再删该表

database

标签:默认值   修改字段   修复   默认   img   duplicate   host   for   参数   

人气教程排行