Linux下的MySQL基础学习一

安装:请自行搜索Linux下的Mysql安装

一、基本操作

          Linux下的MySQL基础学习一_第1张图片 

  1. 输入命令打开MySQL服务   sudo service mysql start
  2. 输入:mysql -u root进入MySQL
  3. 输入:show databases; 查看那些数据库
  4. 输入use  mysql,输入后就会选择mysql数据库,再输入show tables,可查看mysql数据库中的表

          Linux下的MySQL基础学习一_第2张图片 

    5. 输入quit;即可退出

二、创建自己的数据库并且操作

  1. 创建数据库   CREATE DATABASE +数据库名称sql_abc;(红色语法大小写均可,注意分号)
  2. 输入show  databases;查看数据库是否创建成功,数据库中存在sql_abc,则表示成功
  3. 输入use  sql_abc;出现database changed则表示当前可对数据库sql_abc进行操作
  4. 输入show tables;出现empty set,说明此时数据库中没表。这句话是废话,只创建的数据库没创建表当然是空的。
  5. 现在我们创建一个表user和表user_adress,表内的内容分别如下:
ID Name Phone
01 1111
02 2222
03 3333

    

ID address
01 abc
02 bcd
03 cde

6. 创建表和表项的语法如下:

CREATE TABLE 表的名字
(
列名a 数据类型(数据长度),
列名b 数据类型(数据长度),
列名c 数据类型(数据长度)
);    //注意这个分号
create table user
{
    id int(16),
    name char(20),
    phone int(11)
};

出现Query OK,则表示表创建成功。输入show tables;查看当前数据库中是否有此表

create table user_address{
    id int(10),
    address varchar(12)
};

出现Query OK,则表示表创建成功。输入show tables;查看当前数据库中是否有此表,此时数据库中应该出现两个表。

那如果要删除一个数据库,则要输入语法:

drop database 数据库名称

mysql中常用的数据类型:

     Linux下的MySQL基础学习一_第3张图片

CHAR 和 VARCHAR 的区别: CHAR 的长度是固定的,而 VARCHAR 的长度是可以变化的,比如,存储字符串 “abc",对于 CHAR(10),表示存储的字符将占 10 个字节(包括 7 个空字符),而同样的 VARCHAR(12) 则只占用4个字节的长度,增加一个额外字节来存储字符串本身的长度,12 只是最大值,当你存储的字符小于 12 时,按实际长度存储。

ENUM和SET的区别: ENUM 类型的数据的值,必须是定义时枚举的值的其中之一,即单选,而 SET 类型的值则可以多选。

7.那么接下来就应该针对不同的表进行操作,我们选择其中一张表对其进行操作就要使用select语句,语法如下:

select * from 表的名字

 例如:我们选择user表,select * from user;,此时会出现empty set。那么我们就要对此表进行填充,

使用insert into 表的名字(列名1,列名2,列名3) values(值1,值2,值3),每输入一次,即可输入一个人的信息。

插入赵的信息:insert into user(id,name,phone)values(01,'赵',1111),注意针对字符串的插入,要写单引号。VARCHAR,TEXT,DATE,TIME,ENUM 等类型的数据也需要单引号修饰,而 INT,FLOAT,DOUBLE 等则不需要。将其他两人的信息进行插入,插入结束后,通过select * from user来查看是否插入成功。

 

三、SQL约束

约束是对表的行或列的数据做出限制,来确保表的数据完整性、唯一性。在mysql中通常有几种约束:

主键 默认值 唯一 外键
primary key default unique foreign key

这里先介绍主键和外键的作用(重点):

1、主键保证的是数据的唯一性,是能够唯一的标识一组数据的数据元素;比如说:学号,姓名,年龄,性别,课程号课程中学号是唯一的,所以可以设它为主键;

2、外键保证的是数据的完整性。外键:一组数据的主键是另一组数据的的元素;主键约束了外键所在表中不能存在主键类之外的值;外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,就可以是A表的外键。

外键取值规则:空值或参照的主键值

(1)插入非空值时,如果主键表中没有这个值,则不能插入。

(2)更新时,不能改为主键表中没有的值。

(3)删除主键表记录时,可以在建外键时选定外键记录一起级联删除还是拒绝删除。

(4)更新主键记录时,同样有级联更新和拒绝执行的选择。

建立主键应该遵循的原则

1、主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

2、永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。

3、主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

4、主键应当由计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生人为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

外键的使用原则

1、 为关联字段创建外键。

2、 所有的键都必须唯一。

3、避免使用复合键。

4、外键总是关联唯一的键字段。

实验步骤:

         department表中的表项如图:

        

         employee表中的表项如图:

         

         project表中的表如图:

         

  1. 新创建一个数据库,create database shiyan;,然后show databases;查看数据库是否创建成功
  2. use shiyan;show tables;(这里只是回忆一下前一节所学的,在以后的开发中,可以不必在show)
  3. 创建三个空表,分别为department,employee,project
  4. 如果是将一个SQL文件引入到数据库而不是自己创建的情况下,要知道表中的数据项,输入show columns from 表名称; 或者 describe 表名称; 
  5. 如果有两个人的表中的数据项是一致,但却是不同的两个人。那么就要用到主键来做一个区分。主键 (PRIMARY KEY)是用于约束表中的一行,作为这一行的唯一标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要,主键不能有重复记录且不能为空。

主键的定义:

id int(10)primary key

或者

constraint  dp(主键名自己定义)  primary key (dpt_name)

或者,特殊的主键-复合主键,主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识

constraint  pk(主键名自己定义)  primary key (proj_num,proj_name)

     6.默认值约束(default)默认值常用于一些可有可无的字段,比如用户的个性签名,如果用户没有设置,系统给他应该设定一个默认的文本,比如空文本或 ‘这个人太懒了,没有留下任何信息’。DEFAULT 约束只会在使用 INSERT 语句(上一实验介绍过)时体现出来, INSERT 语句中,如果被 DEFAULT 约束的位置没有值,那么这个位置将会被 DEFAULT 的值填充。

在创建表department时,有people_num  int(10) default '10',这句的意思就是人数在没有输入的情况下,默认为10

# 正常插入数据
INSERT INTO department(dpt_name,people_num) VALUES('dpt1',11);

#插入新的数据,people_num 为空,使用默认值
INSERT INTO department(dpt_name) VALUES('dpt2');  

       7.唯一约束 (UNIQUE) 比较简单,它规定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。在employee表中,有表项phone,对其进行unique(phone)即可完成唯一约束。当 INSERT 语句新插入的数据和已有数据重复的时候,如果有 UNIQUE 约束,则 INSERT 失败。

INSERT INTO employee VALUES(01,'Tom',25,3000,110110,'dpt1');
INSERT INTO employee VALUES(02,'Jack',30,3500,110110,'dpt2'); 

     8.外键约束(FOREIGN KEY) 既能确保数据完整性,也能表现表之间的关系。

      比如,现在有用户表和文章表,给文章表中添加一个指向用户 id 的外键,表示这篇文章所属的用户 id,外键将确保这个外键指向的记录是存在的,如果你尝试删除一个用户,而这个用户还有文章存在于数据库中,那么操作将无法完成并报错。因为你删除了该用户过后,他发布的文章都没有所属用户了,而这样的情况是不被允许的。同理,你在创建一篇文章的时候也不能为它指定一个不存在的用户 id。一个表可以有多个外键,每个外键必须 REFERENCES (参考) 另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。

     9.非空约束(NOT NULL)对某项进行非空处理,即某一项不能不填写,必须有其值,在插入时,如果没有填写某项非空数据时,便会报错。

此教程跟着实验楼MySQL教程学习总结得来的,地址为https://www.shiyanlou.com/courses/9

你可能感兴趣的:(大数据基础)