服务器之家

服务器之家 > 正文

MySQL入门(一) 数据表数据库的基本操作

时间:2020-09-01 15:07     来源/作者:一杯凉茶

序言

这类文章,记录我看《mysql5.6从零开始学》这本书的过程,将自己觉得重要的东西记录一下,并有可能帮助到你们,在写的博文前几篇度会非常基础,只要动手敲,跟着我写的例子全部实现一遍,基本上就搞定了,前期很难理解的东西基本没有,所以写博文的内容,就是以练题的形式来呈现的。

需要用的资料以链接的形式给需要的同学。

我用的mysql版本为: mysql-5.5.45-win64.msi 密码是:26zw

图形化工具 navicat(前期不推荐用,直接手动敲): navicat 密码:c7fs

开始我的mysql之旅吧   始于2016.12.04

                                              --wh

一、数据库的安装

这个就不在这里过多阐述了,因为网上实在是太多安装mysql的教程了,有了我给的mysql,在按照这个安装教程(mysql安装教程)去看,就能够安装完好。

安装好mysql后,如果需要使用windows命令窗口(也就是cmd)来操作mysql,那么就需要配置环境变量,在安装好的mysql下找到bin,将其目录放到环境变量path中去,就行了,检测成功与否的方法是在cmd命令窗口中输入mysql,就会出现一大段英文,就说明成功了,反之失败,如果不会的话就去百度搜教程。

二、数据库的基本操作

1、开启mysql服务命令

net start mysql

MySQL入门(一) 数据表数据库的基本操作

2、进入mysql的两种方式

明文进入:mysql -uroot -proot  格式:mysql -u帐号 -p密码

密文进入:mysql -uroot -p 按enter会提示你输入密码(enter pssword:),此时你写的密码就会显示为***这样。

MySQL入门(一) 数据表数据库的基本操作

3、查看mysql中所有的数据库(一般在固定的单词命令就会是用大写,这个要习惯,看多了敲多了就认识了)

前面四个数据库是mysql中自带的,也就是必须的.

show databases;

MySQL入门(一) 数据表数据库的基本操作

4、创建名为test_1的数据库

格式:create database 数据库名

create database test_1;

MySQL入门(一) 数据表数据库的基本操作

5、删除名为test_1的数据库

格式:drop database 数据库名

drop database test_1;

MySQL入门(一) 数据表数据库的基本操作

总结:学习了对数据库的三个操作,1、查看所有数据库 2、创建数据库 3、删除数据库

三、数据表的基本操作

数据表和数据库还有mysql三者的关系

mysql中保存了很多数据库、一个数据库中可以保存很多表。

对数据表的增(创建表)删(删除表)改(修改表字段)查(查询表结构)。 注意:这里的操作对象是表,对表的操作也就是表的结构,和表中的字段的操作(字段和记录要分清楚)

前提:表是在数据库下的,所以要先确实使用哪个数据库。

use test_1;

MySQL入门(一) 数据表数据库的基本操作

1、创建数据表

格式:create table 数据表名(

   字段名1  数据类型[列级别约束条件],

   字段名2  数据类型[列级别约束条件],

   字段名3  数据类型[列级别约束条件]

               ); 

注意:格式不一定需要这样隔着写,完全可以全部写成一行。但是那样写可观性非常差。我这样写只是为了可以看的更清晰。

解释:

1、[]中括号中的内容表示可以有可以没有,

2、列级别这个“列”一定要搞清楚说的是什么,一张表中有行有列,列表示竖,行表示横 

3、约束条件后面会讲到

  1.1、创建没有约束的student表

?
1
2
3
4
5
create table student(
     id  int(11),
     name  varchar(12),
     age  int(11)
          );

MySQL入门(一) 数据表数据库的基本操作

注释:show tables 查询数据库底下的所有表。

1.2、创建有约束的student表

   六大约束:主键约束、外键约束、非空约束、唯一约束、默认约束、自动增加

1.2.1:主键约束

primary key(primary key):独一无二(唯一)和不能为空(非空),通俗的讲,就是在表中增加记录时,在该字段下的数据不能重复,不能为空,比如以上面创建的表为例子,在表中增加两条记录,如果id字段用了主键约束。则id不能一样,并且不能为空。一般每张表中度有一个字段为主键,唯一标识这条记录。以后需要找到该条记录也可以同这个主键来确认记录,因为主键是唯一的,并且非空,一张表中每个记录的主键度不一样,所以根据主键也就能找到对应的记录。而不是多条重复的记录。如果没有主键,那么表中就会存在很多重复的记录,那么即浪费存储空间,在查询时也消耗更多资源。

一般被主键约束了的字段度习惯性的称该字段为该表的主键

单字段主键约束

  两种方式都可以

  create table student(            create table student(

    id  int(11) primary key,          id  int(11),

    name  varchar(12),            name  varchar(12),

    age  int(11)   age  int(11),

  ); primary key(id) );

多字段主键约束(复合主键)

    这个id和name都市主键,说明在以后增加的插入的记录中,id和name不能同时一样,比如说可以是这样。一条记录为id=1,name=yyy、另一条记录为:id=1,name=zzz。 这样是可以的。并不是你们所理解的两个字段分别度不可以相同。

  create table student(create table student(

    id  int(11) primary key,            id  int(11),

    name  varchar(12) primary key,       name  varchar(12),

    age  int(11)     age  int(11),

  );        primary key(id,name) );

1.2.2:外键约束

什么是外键举个例子就清楚了,有两张表,一张表是emp(员工)表,另一张表是dept(部门)表,一个员工属于一个部门,那么如何通过员工能让我们自己他在哪个部门呢?那就只能在员工表中增加一个字段,能代表员工所在的部门,那该字段就只能是存储dept中的主键了(因为主键是唯一的,才能确实是哪个部门,进而代表员工所在的部门,如果是部门名称,有些部门的名称可能是同名。就不能区分了。),像这样的字段,就符合外键的特点,就可以使用外键约束,使该字段只能够存储另一张表的主键。如果不被外键约束,那么该字段就无法保证存储进来的值就一定是另一张表的主键值。

外键约束的特点:

  1、外键约束可以描述任意一个字段(包括主键),可以为空,并且一个表中可以有多个外键。但是外键字段中的值必须是另一张表中的主键。

  2、这样被外键关联的两种表的关系可以称为父子表或者主从表。子表(从表)拥有外键字段的表,父表(主表)被外键字段所指向的表。

  3、子表被外键约束修饰的字段必须和父表的主键字段的类型一样。

  注意:一个表中有被外键修饰的字段,就称该表有外键(是“有外键”。而不是“是外键”),并会给该表中的外键约束取一个名称,所以我们常说的这个表有没有外键,指的不是被外键约束修饰的字段名,而是指这个表是否有存在外键约束。也就是说,不能说这个表的外键是xxx(该表中被外键约束修饰的字段名),这种说法是错误的,但是大多数人已经习惯了这样,虽然影响不大,但是在很多时候需要理解一个东西时,会造成一定的困扰。

格式:constraint  外键名称  foreign key(被外键约束的字段名称)  references  主表名(主键字段)

    英文解释:constraint:约束    references:参考

    create table tablea
        (
            id int(11),
            name varchar(22),
            location varchar(50),
            primary key(id)
        );
        create table tableb
        (
            id int(11),
            name varchar(22) not null,
            deptid int(11),
            primary key(id),
            constraint tablea_tableb_1 foreigh key(deptid) references tablea(id)
       );            

     解释:tableb中有一个名为tablea_tableb_1的外键关联了tablea和tableb两个表,被外键约束修饰的字段为tableb中的deptid,主键字段为tablea中的id     

1.2.3:非空约束

not null. 被该约束修饰了的字段,就不能为空,主键约束中就包括了这个约束

    create table tablea
        (
            id int(11),
            name varchar(22) not null,
            location varchar(50),
            primary key(id)
        );

1.2.4:唯一约束

unique  被唯一约束修饰了的字段,表示该字段中的值唯一,不能有相同的值,通俗点讲,就好比插入两条记录,这两条记录中处于该字段的值不能是一样的。

         create table tablea
        (
            id int(11),
            name varchar(22) unique,
            location varchar(50),
            primary key(id)
        );

也就是说在插入的记录中,每条记录的name值不能是一样的。

1.2.5:默认约束

default  指定这一列的默认值为多少,比如,男性同学比较多,性别就可以设置为默认男,如果插入一行记录时,性别没有填,那么就默认加上男 

     
        create table table
        (
            id int(11) primary key,
            name varchar(22) not null,
            deptid int(11) default 1111,
            salary float
        );

1.2.6:自动增加  

 auto_increment 一个表只能一个字段使用auto_increment,并且使用这个约束的字段只能是整数类型(任意的整数类型     tinyint,smallin,int,bigint),默认值是1,也就是说从1开始增加的。一般就是给主键使用的,自动增加,使每个主键的值度不一样,并且不用我们自己管理,让主键自己自动生成

?
1
2
3
4
5
create table table
(
  id int(11) primary key auto_increment,
  name varchar(22) not null
);

2、查询表结构  

              2.1、查看表基本结构语句

                    格式1:describe 表名/desc 表名  这两个的功能是一样的,简写了单词describe

                      describe student; 

 MySQL入门(一) 数据表数据库的基本操作

 2.2、查看创建表的语句 

   格式:show create table 表名

   show create table student;

MySQL入门(一) 数据表数据库的基本操作

这样显示的格式很不好,看不清楚,所以有了下面这个语句

格式:show create table 表名\g

show create table student\g;

MySQL入门(一) 数据表数据库的基本操作

 3、修改数据表      

修改数据表包括:对表中字段的增加、删除、修改。 在这个里面用的关键字为 alter

  3.1、修改表名

    格式:alter table<旧表名> rename[to]<新表名>;

    将student表名改为student1(改完后在改回来)

    alter table student rename to student1;

MySQL入门(一) 数据表数据库的基本操作

3.2、修改表中的字段名

  格式:alter table<表名> change<旧字段名><新字段名><新数据类型>

  将student表中的name字段名改为 username

  alter table student change name username varchar(30);

MySQL入门(一) 数据表数据库的基本操作

3.3、修改表中的数据类型

  格式:alter table<表名> modify<字段名><数据类型>                     

  alter table student modify username varchar(20);

MySQL入门(一) 数据表数据库的基本操作

解释:只能修改字段名的数据类型,但是其原理跟上面change做的事情一样,这里也有修改字段名的过程,只不过修改后的字段名和修改前的字段名相同,但是数据类型不一样。

3.4、修改字段的排列位置

   方式1:alter table<表名> modify<字段1><数据类型> first|after<字段2>

   解释:将字段1的位置放到第一,或者放到指定字段2的后面

   alter table student modify username varchar(20) after age;

MySQL入门(一) 数据表数据库的基本操作

方式2:alter table<表名> change<字段1><字段2><数据类型> first|after<字段3> 

解释:其实是一样的,将是字段2覆盖字段1,然后在进行排序

alter table student change username username varchar(20) after age;

MySQL入门(一) 数据表数据库的基本操作

总结

change和modify的区别?

原理都市一样的,modify只能修改数据类型,但是change能够修改数据类型和字段名,也就是说modify是change的更具体化的一个操作。可能觉得用change只改变一个数据类型不太爽,就增加了一个能直接改数据类型的使用关键字modify来操作。

3.5、添加字段

格式:alter table<表名称> add<新字段名><数据类型>[约束条件][first|after<已存在的表名>]

解释:在一个特定位置增加一个新的字段,如果不指定位置,默认是最后一个。

alter table student add sex varchar(11);

MySQL入门(一) 数据表数据库的基本操作

3.6、删除字段

格式:alter table<表名称> drop<字段名>;

alter table student drop sex;

MySQL入门(一) 数据表数据库的基本操作

3.7、删除表的外键约束

格式:alter table<表名称> drop foreign key<外键约束名>

注意:外键约束名 指的不是被外键约束修饰的字段名,切记,而是我们在创建外键约束关系时取的名字。

3.8、更改表的存储引擎

格式:alter table<表名> engine=<更改后的存储引擎名>

这个存储引擎目前我自己也不太清楚,虽然知道有哪几种引擎,但是稍微深入一点就不清楚了,所以打算留到日后在说。

4、删除表

4.1、删除无关联表

格式:drop table<表名>;

alter table student;

MySQL入门(一) 数据表数据库的基本操作

4.2、删除被其他表关联的主表

这个是比较重要的一点,在有外键关联关系的两张表中,如果删除主表,那么是删不掉的,并且会报错。因为有张表依赖于他。那怎么办呢?针对这种情况,总共有两种方法

1、先删除你子表,然后在删除父表,这样就达到了删除父表的目的,但是子表也要被删除
2、先解除外键关系,然后在删除父表,这样也能达到目的,并且保留了子表,只删除我们不需要的父表。在3.7中就讲解了如何删除外键关系。

四、总结

讲了这么多,但实际中,用到的并不是很多,特别是对表结构的修改的操作,在实际开发中,一般数据库表被定义下来了,就不会在修改了,发现数据库表设计的不好,也是将表全部删除,然后在重新创建过新表。但是在我们学习的过程中,这些操作还是很重要的,因为需要这些基础来学习后面更深入的东西,不可能因为实际中不用,就不学这不学那,要相信,不管做什么,那肯定是有意义的事情,可能那意义并不大,但是日后肯定会对我们有所帮助。 

原文链接:http://www.cnblogs.com/whgk/p/6131285.html

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
最新idea2020注册码永久激活(激活到2100年)
最新idea2020注册码永久激活(激活到2100年) 2020-07-29
iPhone12什么时候上市 iPhone12手机真实图片 苹果iphone12多少钱
iPhone12什么时候上市 iPhone12手机真实图片 苹果iphone12多少钱 2020-06-03
返回顶部