数据库相关操作:

显示数据库:show databases;

如果是0.00秒并不代表没有花费时间,而是时间非常短,小于0.01秒。

创建数据库:

Query OK表示创建成功,1行受到影响,处理时间为0、05秒。

使用下面的命令查看某个数据库的详细信息:

必须要记住:默认使用的是拉丁字符集,如果不重新设置的话,中文显示会是乱码的,创建数据库的时候指定字符集编码,如下:

注意:latin1是拉丁字符集,这是默认的字符集,这个字符集所显示出来的汉字是?号的形式的。

图形化界面如何创建数据库:

删除数据库

删除数据库要慎重,因为删除数据库会删除数据库中所有的表和表中所有的数据。

删除数据库后我们可以用show databases;命令来显示看看没有被删除。

注意:数据库名中有中横线的,会当成特殊意义,需要使用``进行包含住。

选择数据库:

mysql> use abccs; 此时你已经进入你刚才所建立的数据库abccs.

显示你所选择数据库中所有的表:

查看当前使用的数据库:

如果没有选择数据库的话:

查看默认存储引擎:

mysql> show variables like '%storage_engine%';

结果显示,默认的存储引擎为InnoDB存储引擎。

查看mysql数据库系统支持的存储引擎的类型:

mysql> show engines;

也可以:

数据库表相关操作:

查看当前数据库中数据表:

说明刚才建立的数据库中还没有数据库表。

创建数据库表

注意:表名不能为sql语言的关键字,一个表中可以有一个或多个字段。定义时,字母大小写均可,各字段之间用逗号隔开,最后一个字段后不需要加逗号。

完整性约束条件

完整性约束条件是对字段进行限制。要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不执行用户的操作。其目的是为了保证数据库中数据的完整性。

MYSQL中基本的完整性约束条件如下表:

主键primary key:物理上存储的顺序

非空not null:此字段不允许填写空值

惟一unique:此字段的值不允许重复

默认default:当不填写此值时会使用默认值,如果填写时以填写为准

外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常

说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制

auto_increment 标识该属性怕值自动增加,这是mysql的sql语句的特色。

数据类型

常用数据类型如下:

整数:int,bit

小数:decimal

字符串:varchar,char

日期时间: date, time, datetime

枚举类型(enum)

特别说明的类型如下:

decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位

char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab '

varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab'

字符串text表示存储大文本,当字符大于4000时推荐使用

对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径

使用数据类型的原则是:

够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。

更全的数据类型可以参考:

http://blog.csdn.net/anxpp/article/details/51284106

下面这个可以先不用练习,后面会细讲。

显示表的结构

是指查看数据库中已存在的表的定义。查看表结构的语句包括describe 和 show create table语句。通过这两个语句,可以查看表的字段名、字段的数据类型和完整性约束条件等。

(1)查看表基本结构语句describe

mysql> describe xueshengdenjibiao;

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

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

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

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

| stu_name | varchar(20) | YES  |     | NULL    |       |

| stu_sex  | tinyint(1) | YES  |    | NULL    |       |

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

3 rows in set (0.03 sec)

从查询的结果中我们看出xueshengdenjibiao中包含三个字段,同时显示了字段的数据类型(type),是否为空(null),是否为主外键(key),默认值(default),和额外信息(extra)。

Describe也可以缩写成desc.

mysql> desc xueshengdenjibiao;

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

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

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

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

| stu_name | varchar(20) | YES  |     | NULL    |       |

| stu_sex  | tinyint(1)  | YES  |     | NULL    |       |

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

3 rows in set (0.00 sec)

其结果是一致的。

(2)、查看表详细结构语句show create table

除了可以查看一些结构外,该语句还可以查看表默认的存储引擎和字符编码。

如果直接使用show create table xueshengdenjibiao;这种语句,结果的显示效果会比较差,尤其是遇到内容比较长的记录,显示的结果会很混乱。代码最后加上\G(要是大写)参数,可以更加美观的显示内容,对内容比较长的记录效果尤为明显。

修改表:

修改表名

表名可以在一个数据库中唯一的确定一张表。数据库系统通过表名来区分不同的表。

修改表名是通过SQL语句alter table实现的。

mysql> alter table shushengdenjibiao rename xueshengdenjibiao;

Query OK, 0 rows affected (0.11 sec)

也可以这样写:

mysql> alter table shushengdenjibiao rename to  xueshengdenjibiao;

Query OK, 0 rows affected (0.00 sec)

其中to是可选参数,其是否在语句中出现不会影响语句的执行。

前面的表名是原先的表名,后面的表名是要修改后的表名。

也可以通过show table来显示表是否已经被修改。

修改字段名和字段的数据类型

字段的数据类型包括:整数型,浮点型,字符串型,二进制型,日期和时间类型等。

数据类型决定了数据的存储格式,约束条件和有效范围。表中的每个字段都有数据类型。

alter table语句也可以修改字段的数据类型。主键的字段数据类型不能修改。

上面的datetime是年月日时分钞,人家问你生日,你连时分秒都说出来了,不适合,所以,我们只需要存储年月日就可以了。

注意:如果表中有记录,修改数据类型时应该特别小心。因为,修改数据类型时可能会影响表中的数据。特别值得注意的是,字符类型的字段最好不要改成整数类型、浮点数类型。

注意:Modify和change都可以改变字段的数据类型。不同的是,change可以在改变字段数据类型的同时,改变字段名。如果要使用change修改字段数据类型,那么change后面必需跟两个同样的字段名。

添加字段

在表的末尾添加字段:

mysql> alter table xueshengdenjibiao add stu_age int(4) not null;

Query OK, 0 rows affected (0.59 sec)

Records: 0  Duplicates: 0  Warnings: 0

注意:增加字段时,如果能够加上完整性约束条件,一定要加上。这样可以保证此字段的安全性,甚至可以提高整个表的数据安全性。因此,添加时要仔细考虑这个问题。

在表的第一个位置增加字段:

默认情况下,新增字段为表的最后一个字段。如果加上first参数,则可以将新增字段设置为表的第一个字段。

mysql> alter table xueshengdenjibiao add stu_num int(5) first;

Query OK, 0 rows affected (0.27 sec)

Records: 0  Duplicates: 0  Warnings: 0

在表的指定位置之后增加字段:

mysql> alter table xueshengdenjibiao add stu_add varchar(20) after stu_phone;

Query OK, 0 rows affected (0.58 sec)

Records: 0  Duplicates: 0  Warnings: 0

一次性添加多个字段:

mysql> alter table q7 add (wuli int(3),huaxue int(3));

Query OK, 10 rows affected (0.32 sec)

Records: 10  Duplicates: 0  Warnings: 0

删除字段

mysql> alter table xueshengdenjibiao drop stu_age;

Query OK, 0 rows affected (0.31 sec)

Records: 0  Duplicates: 0  Warnings: 0

执行成功后,可以查看一下:

修改字段的排列位置

字段修改到第一个位置

mysql> alter table xueshengdenjibiao modify stu_id int(11) first;

Query OK, 0 rows affected (0.60 sec)

Records: 0  Duplicates: 0  Warnings: 0

字段修改到指定位置

更改表的存储引擎

Mysql存储引擎是指mysql数据库中表的存储类型。不同的表的类型有着不同的优缺点。在创建表时,存储引擎就已经设定好了。如果要改变,可以通过重新创建一张表来实现。这样做是可以达到目的,但必然会影响到表中的数据。而且,操作比较麻烦。在mysql中,也可以通过alter table更改表的存储引擎的类型。

在修改之前我们可以先查看一下,表的结构:

mysql> show create table xueshengdenjibiao \G

*************************** 1. row ***************************

Table: xueshengdenjibiao

Create Table: CREATE TABLE `xueshengdenjibiao` (

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

`stu_name` varchar(20) DEFAULT NULL,

`stu_xingbie` varchar(1) DEFAULT NULL,

`stu_phone` varchar(20) DEFAULT NULL,

`stu_num` int(5) DEFAULT NULL,

PRIMARY KEY (`stu_id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

我们来修改一下,看看:

mysql> alter table xueshengdenjibiao engine=myisam;

Query OK, 0 rows affected (0.66 sec)

Records: 0  Duplicates: 0  Warnings: 0

修改后我们在来看看:

mysql> show create table xueshengdenjibiao \G

*************************** 1. row ***************************

Table: xueshengdenjibiao

Create Table: CREATE TABLE `xueshengdenjibiao` (

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

`stu_name` varchar(20) DEFAULT NULL,

`stu_xingbie` varchar(1) DEFAULT NULL,

`stu_phone` varchar(20) DEFAULT NULL,

`stu_num` int(5) DEFAULT NULL,

PRIMARY KEY (`stu_id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

如果表中已经l有很多的数据,改变存储引擎可能会造成一此意料之外的影响。如果一个表中已经存在了很多数据,最好不要轻易更改其存储引擎。

删除表的外键约束

外键是一个特殊字段,其将某一表与其父表建立关联关系。在创建表的时候,外键约束就已经设定好了。由于特殊需要,与父表之间的关联关系需要去除,要求删除外键约束。

mysql> alter table q3 drop foreign key c_de;

Query OK, 0 rows affected (0.27 sec)

Records: 0  Duplicates: 0  Warnings: 0

原来的外键变成了普通键key,操作成功。

删除自增长的主键

  先删除自增长在删除主键

  Alter table 表名 change id id int(10);      //删除自增长

Alter table 表名 drop primary key;           //删除主建

删除表

删除表时,会删除表中的所有数据。因此,在删除表时要特别注意。最稳妥的做法是先将表中所有的数据备份出来,然后在删除表。一旦删除表后发现造成了损失,可以通过备份的数据还原表,以便将损失降低到最小。如果在创建表时可能存在外键约束,一些表成为了与之关联的表的父表。要删除这些父表,情况比较复杂。

删除没有被关联的普通表

mysql> drop table shushengdenjibiao2;

Query OK, 0 rows affected (0.08 sec)

删除被其他表关联的父表

在前面我们讲解了创建表时设置表的外键。这样就使数据库中的某些表之间建立了关联关系。一些表成为了父表,这些表被其子表关联着。要删除这些父表,情况不像上一节那么简单。

最简单直接的办法是先删除子表,然后再删除父表。但这样可能会影响子表的其他数据;另一种办法是,先删除子表的外键约束,然后再删除父表。这种方法,不会影响子表的其他数据,可以保证数据库的安全。因此我们来重点说一下这种方法。

mysql> show create table example \G

*************************** 1. row ***************************

Table: example

Create Table: CREATE TABLE `example` (

`stu_id` varchar(20) DEFAULT NULL,

`stu_shuxue` int(20) DEFAULT NULL,

`stu_yuwen` int(20) DEFAULT NULL,

KEY `c_ff` (`stu_id`),

CONSTRAINT `c_ff` FOREIGN KEY (`stu_id`) REFERENCES `example1` (`stu_id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

执行删除代码:

mysql> alter table example drop foreign key c_ff;

Query OK, 0 rows affected (0.72 sec)

Records: 0  Duplicates: 0  Warnings: 0

再来查看一下:

mysql> show create table example \G

*************************** 1. row ***************************

Table: example

Create Table: CREATE TABLE `example` (

`stu_id` varchar(20) DEFAULT NULL,

`stu_shuxue` int(20) DEFAULT NULL,

`stu_yuwen` int(20) DEFAULT NULL,

KEY `c_ff` (`stu_id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

表已经不存在外键了(foreign key),原来的外键变成了普通键(key)。

mysql显示表已存在_MySQL数据库与数据表的相关操作相关推荐

  1. mysql下备份所有的数据库和数据表

    shell脚本实现 mysql下备份所有的数据库和数据表 要求:(1)mysql下的数据库的表要以table_name.sql备份保存 (2)保存在当前目录下,并以当天时间命名 #!/bin/bash ...

  2. mysql数据库检表_MYSQL数据库检查数据表和修复数据表

    数据库在运行中,会因为人为因素或一些不可抗力因素造成数据损坏.所以为了保护数据的安全和最小停机时间,我们需制定详细的备份/恢复计划,并定期对计划的有效性进行测试. 结合MySQL服务器的运行机制和所提 ...

  3. MySQL命令行导出导入数据库和数据表

    MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:\Program Files\MySQL\MySQL Serv ...

  4. mysql select详解_MySQL数据库 select 数据查询详解

    数据查询 数据查询是数据库系统应用的主要内容,也是用户对数据库最频繁.最常见的基本操作请求.数据查询可以根据用户提供的限定条件,从已存在的数据表中检索用户需要的数据.MySQL使用SELECT语句从数 ...

  5. mysql显示表已存在_mysql的安装与卸载

    1.下载压缩包解压之后再新建一个my.ini的文件输入 [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:mysql-8.0.21-winx ...

  6. mysql 修改表列名称_MYSQL数据库- 修改数据表名称、列名称

    目录 一.修改列定义(modify col_name) 二.修改列类型(modify col_name) 三.修改列名称(change col_name) 三.修改表名称(rename table a ...

  7. mysql所有的编码_MySQL 批量修改数据表编码及字符集

    当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改.以下备注批量修改方案( 以修改为 utf8mb4_bin 为例,注意将 db_name 换为真实的数据库名 ). 1. ...

  8. mysql关键字使用顺序_MySQL数据库之单表查询中关键字的执行顺序

    MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...

  9. mysql数据库关联练习_mysql数据库建立数据表的练习(附代码)

    数据库操作和学习并不难,难的是如何在各种实际运用情况下编写SQL语句的实现.这个过程,需要大量的练习,那么从这里开始,我们来讲解实现. 任务概述 具体关系数据库如下: 数据库名:教师数据库 教师表(编 ...

最新文章

  1. permutation_importance是什么?背后的思想又是什么?是如何使用permutation_importance计算特征重要度的?
  2. 饥荒联机版连不上服务器_饥荒联机版不搜索房间直连服务器教程 搜索不到房间怎么办_游侠网...
  3. Centos 下安装Docker 遇到的一些错误
  4. 流程审批OA办公系统解决财务报销等问题
  5. pwm一个时间单位_RK3308——RGB调色灯三路PWM驱动
  6. php滚动窗口多条动态,详解原生JS是实现控制多个滚动条同步跟随滚动
  7. IntelliJ IDEA 使用 LiveEdit 插件实现实时可视化前端开发
  8. Qt-5种布局控件详解
  9. [转]敏捷开发中编写高质量Java代码
  10. 很多人理解互联网是“年轻化”
  11. 中国医科大学计算机应用基础本科在线作业,中国医科大学《计算机应用基础(本科)》在线作业.docx...
  12. m1系统怎么重装,m1芯片怎么重装系统,苹果M1芯片重装系统,m1芯片重新安装mac
  13. 进程与线程的一个简单解释【摘】
  14. 02. 实现Singleton模式(C++版本)
  15. Win10下安装GrADS
  16. echart柱状图即显示数值,又显示百分比
  17. 金蝶K3WISE 销售订单序时簿即时库存的开发
  18. UNI-APP APP版本更新方法
  19. BroadcastReceiver(接收广播)
  20. 【实战】1341- 仿【得物】微信小程序实战全教程

热门文章

  1. HashMap 为什么会导致 CPU 100%?文章看不懂?来看这个视频吧!——面试突击 006 期...
  2. 带你玩转七牛云存储——高级篇
  3. oracle怎样修改表名、列名、字段类型、添加表列、删除表列
  4. python3 上传文件到目标机器_Python3 +服务器搭建私人云盘,再也不怕限速了
  5. 电子科学与技术与计算机专业,计算机科学与技术专业和电子科学与技术专业,哪个好些?...
  6. java 获取子线程_Java 主线程获取子线程返回结果
  7. python threading类重写_python下threading模块使用的注意点
  8. python图形化编程工具哪个好_mPython(图形化编程软件) V0.5.0 官方版
  9. ubuntu和linux服务器,Linux服务器系统CentOS和Ubuntu Server如何选择? | 偶乃秋辰
  10. php 留言板项目 ajax,PHP Ajax留言板