其实对很多人来说对于SQL语句已经忘了很多,或者说是不懂很多,因为有数据库图形操作软件,方便了大家,但是我们不能忘记最根本的东西,特别是一些细节上的东西,可能你用惯了Hibernate,不用写SQL语句,但是不是任何项目都要用到大框架的,如果不用,那你是不是就不会操作数据库了呢,所以我们最好还是熟悉一点好,对我们以后找工作和工作都有帮助。

在说创建、修改和删除表前,我们还是要进行一个操作的简单说明:

1.登陆数据库系统

在命令行中登陆MySQL数据库管理系统,输入一下内容:

mysql -h localhost -u root -p

很多人都知道这个,但是其中参数的具体表示什么我们还是要了解的,其中,“-h”参数指连接的主机名,所以后面是localhost;“-u”参数表示用户名,此处的用户名为root;“-p”参数表示用户的密码,按下Enter键后就显示“Enter password:”,输入密码即可登录进去了。

2.创建数据库

在创建数据库之前,我们可以查看已经存在的数据库:

mysql>SHOW DATABASES;+--------------------+

| Database |

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

| information_schema |

| community |

| community_test |

| data |

| mydata |

| mysql |

| performance_schema |

| test |

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

8 rows in set (0.04 sec)

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

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

mysql> CREATE DATABASEexample;

Query OK,1 row affected (0.00sec)

mysql>SHOW DATABASES;+--------------------+

| Database |

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

| information_schema |

| community |

| community_test |

| data |

| example |

| mydata |

| mysql |

| performance_schema |

| test |

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

9 rows in set (0.00 sec)

3.删除数据库:

格式:DROP DATABASE 数据库名;

示例:删除example数据库

mysql> DROP DATABASEexample;

Query OK,0 rows affected (0.07sec)

mysql>SHOW DATABASES;+--------------------+

| Database |

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

| information_schema |

| community |

| community_test |

| data |

| mydata |

| mysql |

| performance_schema |

| test |

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

8 rows in set (0.00 sec)

4.数据库存储引擎

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

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

mysql>SHOW ENGINES;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| Engine | Support |Comment| Transactions | XA | Savepoints |

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

| FEDERATED | NO |Federated MySQL storage engine| NULL | NULL | NULL |

| MRG_MYISAM | YES | Collection ofidentical MyISAM tables| NO | NO | NO |

| MyISAM | YES |MyISAM storage engine| NO | NO | NO |

| BLACKHOLE | YES | /dev/null storage engine (anything you write toit disappears)| NO | NO | NO |

| CSV | YES |CSV storage engine| NO | NO | NO |

| MEMORY | YES | Hash based, stored in memory, useful fortempor

ary tables| NO | NO | NO |

| ARCHIVE | YES |Archive storage engine| NO | NO | NO |

| InnoDB | DEFAULT | Supports transactions, row-level locking, andf

oreign keys| YES | YES | YES |

| PERFORMANCE_SCHEMA | YES | Performance Schema

| NO | NO | NO |

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

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)创建表的形式:

CREATE TABLE表名 (

属性名 数据类型[完整约束条件],

属性名 数据类型[完整约束条件],

...

...

属性名 数据类型[完整约束条件]);

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

示例创建一个student表:

mysql> useexample;Databasechanged

mysql> CREATE TABLEstudent (-> id int,-> name varchar(20)->);

Query OK,0 rows affected (0.09 sec)

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

约束条件

说明

PRIMARY KEY

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

FOREIGN KEY

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

NOT NULL

标识该属性不能为空

UNIQUE

标识该属性的值是唯一的

AUTO_INCREMENT

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

DEFAULT

为该属性设置默认值

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

2)设置表的主键

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

示例:

mysql> CREATE TABLEstudent1 (-> id int PRIMARY KEY,-> name varchar(20)->);

Query OK,0 rows affected (0.06 sec)

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

示例:

mysql> CREATE TABLEstudent2 (-> id int,-> stu_id int,-> name varchar(20),-> PRIMARY KEY(id,stu_id)->);

Query OK,0 rows affected (0.00 sec)

3)设置表的外键

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

示例:

mysql> CREATE TABLEteacher (-> id int PRIMARY KEY,-> stu_id int,-> name varchar(20),-> CONSTRAINT STUID FOREIGN KEY(stu_id) REFERENCESstudent1(id)->);

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进行综合示例:

mysql> CREATE TABLEstudent3 (-> id int PRIMARY KEYAUTO_INCREMENT,-> teacher_id int UNIQUE,-> name varchar(20) NOT NULL,-> sex varchar(10) DEFAULT 'male'

->);

Query OK,0 rows affected (0.01 sec)

查看表结构

查看表基本结构语句DESCRIBE

格式:DESCRIBE 表名;

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

示例:

mysql> descstudent3;+------------+-------------+------+-----+---------+----------------+

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

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

| id | int(11) | NO | PRI | NULL | auto_increment |

| teacher_id | int(11) | YES | UNI | NULL | |

| name | varchar(20) | NO | | NULL | |

| sex | varchar(10) | YES | | male | |

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

4 rows in set (0.01 sec)

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

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

格式:SHOW CREATE TABLE 表名;

示例:

mysql> SHOW CREATE TABLEstudent3;+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table

|

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

| student3 | CREATE TABLE`student3` (

`id`int(11) NOT NULLAUTO_INCREMENT,

`teacher_id`int(11) DEFAULT NULL,

`name`varchar(20) NOT NULL,

`sex`varchar(10) DEFAULT 'male',PRIMARY KEY(`id`),UNIQUE KEY`teacher_id` (`teacher_id`)

) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |

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

1 row in set (0.00 sec)

修改表:

1)修改表名

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

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

示例:

mysql> ALTER TABLEstudent RENAME student4;

Query OK,0 rows affected (0.11sec)

mysql>DESCRIBE student;

ERROR1146 (42S02): Table 'example.student' doesn't exist

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

2)修改字段的数据类型

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

示例:

mysql>DESCRIBE student1;+-------+-------------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| name | varchar(20) | YES | | NULL | |

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

2 rows in set (0.08sec)

mysql> ALTER TABLE student1 MODIFY name varchar(30);

Query OK,0 rows affected (0.06sec)

Records:0 Duplicates: 0 Warnings: 0mysql>DESCRIBE student1;+-------+-------------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| name | varchar(30) | YES | | NULL | |

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

2 rows in set (0.01 sec)

3)修改字段名:

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

示例:

mysql>DESCRIBE student1;+-------+-------------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| name | varchar(30) | YES | | NULL | |

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

2 rows in set (0.00sec)

mysql> ALTER TABLE student1 CHANGE name stu_name varchar(40);

Query OK,0 rows affected (0.01sec)

Records:0 Duplicates: 0 Warnings: 0mysql>DESCRIBE student1;+----------+-------------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| stu_name | varchar(40) | YES | | NULL | |

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

2 rows in set (0.00 sec)

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

4)增加字段

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

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

示例:

mysql>DESCRIBE student1;+----------+-------------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| stu_name | varchar(40) | YES | | NULL | |

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

2 rows in set (0.00sec)

mysql> ALTER TABLE student1 ADD teacher_name varchar(20) NOT NULLAFTER id;

Query OK,0 rows affected (0.01sec)

Records:0 Duplicates: 0 Warnings: 0mysql>DESCRIBE student1;+--------------+-------------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| teacher_name | varchar(20) | NO | | NULL | |

| stu_name | varchar(40) | YES | | NULL | |

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

3 rows in set (0.01 sec)

5)删除字段

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

示例:

mysql>DESCRIBE student1;+--------------+-------------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| teacher_name | varchar(20) | NO | | NULL | |

| stu_name | varchar(40) | YES | | NULL | |

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

3 rows in set (0.01sec)

mysql> ALTER TABLE student1 DROPteacher_name;

Query OK,0 rows affected (0.01sec)

Records:0 Duplicates: 0 Warnings: 0mysql>DESCRIBE student1;+----------+-------------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| stu_name | varchar(40) | YES | | NULL | |

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

2 rows in set (0.00 sec)

6)更改表的存储引擎

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

示例:

mysql> SHOW CREATE TABLEstudent2;+----------+------------------------------------------------------------------------------------------------------------------------------------------------

| Table | Create Table

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

| student2 | CREATE TABLE`student2` (

`id`int(11) NOT NULL DEFAULT '0',

`stu_id`int(11) NOT NULL DEFAULT '0',

`name`varchar(20) DEFAULT NULL,PRIMARY KEY(`id`,`stu_id`)

) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |

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

1 row in set (0.05sec)

mysql> ALTER TABLE student2 ENGINE =MYISAM;

Query OK,0 rows affected (0.02sec)

Records:0 Duplicates: 0 Warnings: 0mysql> SHOW CREATE TABLEstudent2;+----------+------------------------------------------------------------------------------------------------------------------------------------------------

| Table | Create Table

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

| student2 | CREATE TABLE`student2` (

`id`int(11) NOT NULL DEFAULT '0',

`stu_id`int(11) NOT NULL DEFAULT '0',

`name`varchar(20) DEFAULT NULL,PRIMARY KEY(`id`,`stu_id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 |

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

1 row in set (0.00 sec)

7)删除表的外键约束

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

示例:

mysql> SHOW CREATE TABLEteacher;+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table

|

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

| teacher | CREATE TABLE`teacher` (

`id`int(11) NOT NULL,

`stu_id`int(11) DEFAULT NULL,

`name`varchar(20) DEFAULT NULL,PRIMARY KEY(`id`),KEY`STUID` (`stu_id`),CONSTRAINT `STUID` FOREIGN KEY (`stu_id`) REFERENCES`stu

) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |

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

1 row in set (0.08sec)

mysql> ALTER TABLE teacher DROP FOREIGN KEYSTUID;

Query OK,0 rows affected (0.04sec)

Records:0 Duplicates: 0 Warnings: 0mysql> SHOW CREATE TABLEteacher;+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table

|

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

| teacher | CREATE TABLE`teacher` (

`id`int(11) NOT NULL,

`stu_id`int(11) DEFAULT NULL,

`name`varchar(20) DEFAULT NULL,PRIMARY KEY(`id`),KEY`STUID` (`stu_id`)

) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |

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

1 row in set (0.00 sec)

删除表:

格式:DROP TABLE 表名;

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

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

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

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

虚拟机mysql创建一个表_MySQL:创建、修改和删除表相关推荐

  1. mysql创建表格1warning_MySQL:创建、修改和删除表

    在说创建.修改和删除表前,我们还是要进行一个操作的简单说明: 1.登陆数据库系统 在命令行中登陆MySQL数据库管理系统,输入一下内容: mysql -h localhost -u root -p 很 ...

  2. Mysql基础知识:创建、查看、修改和删除表

    Mysql 创建.查看.修改和删除表 1. 创建表 创建表的语法形式: CREATE TABLE 表名 ( 属性名 数据类型 约束条件,属性名 数据类型 约束条件,...) ENGINE=存储引擎名 ...

  3. mysql 创建删除表_mysql创建删除表的的详细解析

    本文主要介绍MySQL.html "target =" _ blank "> MySQL对创建删除表的详细分析.我希望作者收集的相关知识和数据对你有所帮助.创建 表 ...

  4. 菜鸟教程mysql创建表_MySQL 创建数据库 | 菜鸟教程

    MySQL 创建数据库 使用 mysqladmin 创建数据库 使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库. 所以我们这边使用root用户登录,root用户拥有最高权限,可以 ...

  5. mysql磁盘临时表清理_mysql 创建大量磁盘临时表

    发现 mysql 中创建的临时表基本都是磁盘临时表,对此进行排查.最后为临时表机制说明. 通过查看 mysql 状态变量,看到创建的临时表基本都是磁盘临时表. 查看临时表配置,默认配置 16M,配置并 ...

  6. mysql光标不见了_mysql创建光标失败

    展开全部 创建62616964757a686964616fe4b893e5b19e31333365636562存储过程和触发器 1.建表 首先先建两张表(users表和number表),具体设计如下图 ...

  7. SQL server——sql命令创建、修改、删除表之记录

    目录 学习内容.sql命令创建.修改.删除表 创建表 指定所属文件组 修改表 增加一列number 更改列属性 删除某一列 重命名表 删除表 分区表 创建表 添加文件组 分别为其添加数据文件 创建分区 ...

  8. MySQL修改、删除表的结构

    MySQL修改.删除表的结构 1.增加一列 alter table student add score double(3,1); 说明 double(3,1)指数据是三位,小数部分占一位,整数部分占两 ...

  9. mysql alter table drop constraint_MySQL添加,修改,删除表的列,约束等表的定义。

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table ...

最新文章

  1. sskeychain使用(轻量级框架)
  2. window.open和window.location.href的几种用法
  3. 揭开JVM所看到的try/catch/finally
  4. Win10 UWP开发系列:解决Win10不同版本的Style差异导致的兼容性问题
  5. PyQt5 技术篇-QSpinBox选值框值改变触发事件实例演示,获取QSpinBox组件的值,选值框的边界值设置方法
  6. 字节输入流一次读取一个字节的原理
  7. CRM呼叫中心采用轮询和SNS服务器两种方式的架构
  8. 130242014018-郑志良-第2次实验
  9. 微信小程序字符长度超出变成神略号显示
  10. Java实训项目11:GUI学生信息管理系统 - 实现步骤 - 创建服务接口
  11. HIVE: 自定义TextInputFormat (旧版MapReduceAPI ok, 新版MapReduceAPI实现有BUG?)
  12. setTimeout和setInteval
  13. windows Server 2008+iis 7.5 部署应用程序
  14. 小麦积分墙:我的App与微信搞上了
  15. CSDN资源分享分红2元,哈哈
  16. UVC app流程图
  17. KEGG Pathway通路二级分类汇总,轻松找到感兴趣的通路
  18. 移动硬盘插入电脑后不显示盘符
  19. 2017/7/11 新开博客
  20. IE9环境下。LODOP打印,首次打印时,图片加载不出来、加载不完全问题

热门文章

  1. 网络管理与维护作业9
  2. Spring boot +java.awt.HeadlessException: null异常处理
  3. WIN10安装VS2013出现兼容性问题解决
  4. EXP-00056遇到Oracle错误1455问题解决办法
  5. Eclipse / Java代码完成无法正常工作
  6. 如何“ git clone”包括子模块?
  7. win10升级win11的步骤 win10升级Windows11的方法
  8. powerpoint 2016表格中添加行
  9. python共享内存mmap_python - IPC在单独的Docker容器中的Python脚本之间共享内存 - 堆栈内存溢出...
  10. 一个项目部署多个节点会导致锁失效么_一文看透 Redis 分布式锁进化史(解读 + 缺陷分析)...