zoukankan      html  css  js  c++  java
  • MySQL 0 学习

    ubuntu  安装mysql  创建用户  以及外部如何可视化连接的   方法   https://www.linuxidc.com/Linux/2017-01/139502.htm

    centos 7 上的安装  https://www.cnblogs.com/nicknailo/articles/8563737.html

     

     

     

    2.3 MySQL安装

    注意:实验楼环境中已经安装好了 MySQL,可以直接使用,无需再次安装,以下安装仅用于大家学习使用。

    2.3.1 安装之前的检查

    先要检查Linux系统中是否已经安装了MySQL,输入命令尝试打开MySQL服务:

    sudo service mysql start   启动
    sudo service mysql stop 停止

    输入密码后,如果出现以下提示,则说明系统中已经安装有 MySQL:

    1-01

    如果提示是这样的,则说明系统中没有 MySQL,需要继续安装:

    mysql: unrecognized service

    2.3.2 Ubuntu Linux 安装配置 MySQL

    在Ubuntu上安装MySQL,最简单的方式是在线安装。只需要几行简单的命令( # 号后面是注释):

    #安装 MySQL 服务端、核心程序
    sudo apt-get install mysql-server
    
    #安装 MySQL 客户端
    sudo apt-get install mysql-client          
    

    在安装过程中会提示确认输入YES,设置 root 用户密码(之后也可以修改)等,稍等片刻便可安装成功。

    安装结束后,用命令验证是否安装并启动成功:

    sudo netstat -tap | grep mysql 
    

    如果出现如下提示,则安装成功:

    1-02

    此时,可以根据自己的需求,用 gedit 修改 MySQL 的配置文件(my.cnf),使用以下命令:

    sudo gedit /etc/mysql/my.cnf 
    

    至此,MySQL 已经安装、配置完成,可以正常使用了。

    2.3.3 尝试MySQL

    1). 打开MySQL

    使用如下两条命令,打开MySQL服务并使用root用户登录:

    # 启动 MySQL 服务
    sudo service mysql start             
    
    # 使用 root 用户登录,实验楼环境的密码为空,直接回车就可以登录
    mysql -u root
    

    执行成功会出现如下提示:

    1-03

    2). 查看数据库

    使用命令 show databases;,查看有哪些数据库(注意不要漏掉分号 ;):

    1-04

    可见已有三个数据库,分别是 “information-schema”、“mysql”、“performance-schema”。

    3). 连接数据库

    选择连接其中一个数据库,语句格式为 use <数据库名>,这里可以不用加分号,这里我们选择 information_schema 数据库:

    use information_schema
    

    1-05

    4). 查看表

    使用命令 show tables; 查看数据库中有哪些表(注意不要漏掉“;”):

    1-06

    5). 退出

    使用命令 quit 或者 exit 退出 MySQL。

    三、实验总结

    本节实验中我们初步接触了数据库,SQL 及 MySQL 的基本概念,实践了登录和退出 MySQL,使用和查看数据库等基本操作。

    四、课后习题

    1. 如果你的计算机操作系统或虚拟机中有 Ubuntu Linux,尝试在Ubuntu Linux 中完成MySQL的安装、配置、试用。
    2. 通过谷歌百度或其他方式,进一步了解数据库、SQL 和 MySQL。

    创建数据库并插入数据

    一、实验介绍

    1.1 实验内容

    本次课程将介绍 MySQL 新建数据库,新建表,插入数据以及基本数据类型的相关知识。本节实验将创建一个名为 mysql_shiyan 的数据库,其中有两张表 employee 和 department

    1.2 实验知识点

    • 基本数据类型
    • 插入数据

    1.3 实验环境

    课程使用的实验环境为 Ubuntu Linux 14.04 64 位版本。实验中会用到程序:

    • Mysql 5.5.50
    • Xfce终端

    二、开发准备

    在使用实验楼 Linux 环境进行本次实验之前,先用以下两条命令打开MySQL 服务并使用 root 登录:

    # 打开 MySQL 服务
    sudo service mysql start        
    
    #使用 root 用户登录,密码为空
    mysql -u root                   
    

    后续的实验都在 MySQL 的控制台输入命令进行操作。

    三、实验步骤

    3.1 新建数据库

    首先,我们创建一个数据库,给它一个名字,比如 mysql_shiyan,以后的几次实验也是对 mysql_shiyan 这个数据库进行操作。 语句格式为 CREATE DATABASE <数据库名字>;,(注意不要漏掉分号 ;),前面的 CREATE DATABASE 也可以使用小写,具体命令为:

    CREATE DATABASE mysql_shiyan;
    

    创建成功后输入命令 show databases; (注意不要漏掉;)检查一下:

    01

    在大多数系统中,SQL 语句都是不区分大小写的,因此以下语句都是合法的:

    CREATE DATABASE name1;
    create database name2;
    CREATE database name3;
    create DAtabaSE name4;
    

    但是出于严谨,而且便于区分保留字(保留字(reserved word):指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。)和变量名,我们把保留字大写,把变量和数据小写。

    3.2 连接数据库

    接下来的操作,就在刚才创建的 mysql_shiyan 中进行,首先要连接数据库,使用语句 use <数据库名字>

    use mysql_shiyan;
    

    如图显示,则连接成功:

    02

    输入命令 show tables; 可以查看当前数据库里有几张表,现在mysql_shiyan 里还是空的:

    03

    3.3 数据表

    数据表(table)简称表,它是数据库最重要的组成部分之一。数据库只是一个框架,表才是实质内容。

    而一个数据库中一般会有多张表,这些各自独立的表通过建立关系被联接起来,才成为可以交叉查阅、一目了然的数据库。如下便是一张表:

    IDnamephone
    01 Tom 110110110
    02 Jack 119119119
    03 Rose 114114114

    3.4 新建数据表

    在数据库中新建一张表的语句格式为:

    CREATE TABLE 表的名字
    (
    列名a 数据类型(数据长度),
    列名b 数据类型(数据长度),
    列名c 数据类型(数据长度)
    );
    

    我们尝试在 mysql_shiyan 中新建一张表 employee,包含姓名,ID 和电话信息,所以语句为:

    CREATE TABLE employee (id int(10),name char(20),phone int(12));
    

    然后再创建一张表 department,包含名称和电话信息,想让命令看起来更整洁,你可以这样输入命令:

    04

    这时候再 show tables; 一下,可以看到刚才添加的两张表:

    05

    3.5 数据类型

    在刚才新建表的过程中,我们提到了数据类型,MySQL 的数据类型和其他编程语言大同小异,下表是一些 MySQL 常用数据类型:

    数据类型大小(字节)用途格式
    INT 4 整数  
    FLOAT 4 单精度浮点数  
    DOUBLE 8 双精度浮点数  
    | |    
    ENUM | 单选,比如性别 ENUM('a','b','c')  
    SET | 多选 SET('1','2','3')  
    | |    
    DATE 3 日期 YYYY-MM-DD
    TIME 3 时间点或持续时间 HH:MM:SS
    YEAR 1 年份值 YYYY
    | |    
    CHAR 0~255 定长字符串  
    VARCHAR 0~255 变长字符串  
    TEXT 0~65535 长文本数据  

    整数除了 INT 外,还有 TINYINT、SMALLINT、MEDIUMINT、BIGINT。

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

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

    想要了解更多关于 MySQL 数据类型的信息,可以参考下面两篇博客。

    3.6 插入数据

    刚才我们新建了两张表,使用语句 SELECT * FROM employee; 查看表中的内容,可以看到 employee 表中现在还是空的:

    06

    刚才使用的SELECT语句将在下一节实验中详细介绍

    我们通过 INSERT 语句向表中插入数据,语句格式为:

    INSERT INTO 表的名字(列名a,列名b,列名c) VALUES(值1,值2,值3);
    

    我们尝试向 employee 中加入 Tom、Jack 和 Rose:

    INSERT INTO employee(id,name,phone) VALUES(01,'Tom',110110110);
    INSERT INTO employee VALUES(02,'Jack',119119119);
    INSERT INTO employee(id,name) VALUES(03,'Rose');
    

    你已经注意到了,有的数据需要用单引号括起来,比如 Tom、Jack、Rose 的名字,这是由于它们的数据类型是 CHAR 型。此外 VARCHAR,TEXT,DATE,TIME,ENUM 等类型的数据也需要单引号修饰,而 INT,FLOAT,DOUBLE 等则不需要。

    第一条语句比第二条语句多了一部分:(id,name,phone) 这个括号里列出的,是将要添加的数据 (01,'Tom',110110110) 其中每个值在表中对应的列。而第三条语句只添加了 (id,name) 两列的数据,所以在表中Rose的phone为NULL。

    现在我们再次使用语句 SELECT * FROM employee; 查看 employee 表,可见 Tom 和 Jack 的相关数据已经保存在其中了:

    07

    四、实验总结

    经过本次实验,我们已经有了一个名为 mysql_shiyan 的数据库,其中有两张表,我们已经向其中插入了一些数据。务必完整地操作一遍,以熟练SQL语句的使用。下一节我们将进入 SQL 约束的学习。

    五、课后习题

    1. 根据实验内容完整地练习一遍,并保存截图;
    2. 新建一个名为library的数据库,包含 book、reader 两张表,根据自己的理解安排表的内容并插入数据。保存截图。

    SQL 的约束

    一、实验介绍

    1.1 实验内容

    约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。本节实验将在实践操作中熟悉 MySQL 中的几种约束。

    1.2 实验知识点

    • SQL 约束

    1.3 实验环境

    课程使用的实验环境为 Ubuntu Linux 14.04 64 位版本。实验中会用到程序:

    • Mysql 5.5.50
    • Xfce终端

    二、实验步骤

    2.1 约束分类

    听名字就知道,约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

    在MySQL中,通常有这几种约束:

    约束类型:主键默认值唯一外键非空
    关键字: PRIMARY KEY DEFAULT UNIQUE FOREIGN KEY NOT NULL

    2.2 建立含约束的表

    为了方便介绍这几种约束,我们先建立一个数据库。

    注:如果你是从上一节直接进入本节进行学习的,请先删除上一节建立的数据库mysql_shiyan删除语句为DROP DATABASE mysql_shiyan;

    当然不用你一行一行地输入命令搭建这个数据库,实验楼已经为你准备好了。首先打开 Xfce 终端,输入命令进入 /home/shiyanlou/Desktop 目录:

    cd Desktop
    

    使用 git 命令将需要的数据文件下载到本地文件夹:

    git clone https://github.com/shiyanlou/SQL3
    

    下载完成后,输入命令开启 MySQL 服务并使用 root 用户登录:

    #打开 MySQL 服务
    sudo service mysql start        
    #使用 root 用户登录
    mysql -u root                   
    

    刚才下载的 SQL3 目录下,有个文件 MySQL-03-01.sql,其中包含的代码可以新建一个数据库 mysql_shiyan,然后在其中创建三张表 departmentemployeeproject,它们包含了各种约束。

    (SQL3 目录在桌面上,你可以用Gedit查看里面的 MySQL-03-01.sql 文件。)

    加载文件中的数据,需要在 MySQL 控制台中输入命令:

    source /home/shiyanlou/Desktop/SQL3/MySQL-03-01.sql;
    

    查看一下这个数据库,输入命令 show tables;,可见:

    00

    2.3 主键

    主键 (PRIMARY KEY)是用于约束表中的一行,作为这一行(列)的唯一标识符,

    在一张表中通过主键就能准确定位到一行,因此主键十分重要。主键不能有重复且不能为空。

    在 MySQL-03-01.sql 中,这里有主键:

    07

    也可以这样定义主键:

    08-

    还有一种特殊的主键——复合主键主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识,比如:

    09-

    2.4 默认值约束

    默认值约束 (DEFAULT) 规定,当有 DEFAULT 约束的列,插入数据为空时,将使用默认值。

    在 MySQL-03-01.sql 中,这段代码包含了 DEFAULT 约束:

    10

    DEFAULT 约束只会在使用 INSERT 语句(上一实验介绍过)时体现出来,INSERT语句中,如果被 DEFAULT 约束的位置没有值,那么这个位置将会被 DEFAULT 的值填充,如语句:

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

    输入命令 SELECT * FROM department;,可见表中第二行的people_num 被 DEFAULT 的值 (10) 填充:

    01

    2.5 唯一约束

    唯一约束 (UNIQUE) 比较简单,它规定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。

    在 MySQL-03-01.sql 中,也有 UNIQUE 约束:

    11

    当 INSERT 语句新插入的数据和已有数据重复的时候,如果有 UNIQUE约束,则 INSERT 失败,比如:

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

    结果如图:

    02

    2.6 外键约束

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

    一个表可以有多个外键,每个外键必须 REFERENCES (参考) 另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。

    12-

    在 INSERT 时,如果被外键约束的值没有在参考列中有对应,比如以下命令,参考列 (department 表的 dpt_name) 中没有dpt3,则INSERT 失败:

    INSERT INTO employee VALUES(02,'Jack',30,3500,114114,'dpt3');
    

    可见之后将 dpt3 改为 dpt2(department 表中有 dpt2),则插入成功:

    03

    2.7 非空约束

    非空约束 (NOT NULL),听名字就能理解,被非空约束的列,在插入值时必须非空。

    13

    在MySQL中违反非空约束,不会报错,只会有警告,比如以下语句:

    #INSERT 成功 age 为空,因为没有非空约束,表中显示 NULL
    INSERT INTO employee(id,name,salary,phone,in_dpt) VALUES(03,'Jim',3400,119119,'dpt2'); 
    #警告 salary 被非空约束,值为空,表中显示0
    INSERT INTO employee(id,name,age,phone,in_dpt) VALUES(04,'Bob',23,123456,'dpt1'); 
    

    结果如图,出现警告,但还是插入数据成功,实验楼的环境是 5.5.505.6 版本以上的 MySQL 会报错,禁止插入不符合非空约束的数据:

    04

    此时 employee 表的内容为:

    05

    三、实验总结

    本节实验中通过一个数据库实例了解了主键、默认值、外键、非空、唯一这几种约束的特性,这几种约束都是最常见的,需要仔细理解每种约束的含义及使用场景。下一节我们将进入 SELECT 语句的学习。

    四、课后习题

    按照实验过程完整操作一遍:先用现成的数据文件建立数据库,然后实验过程的各条语句,尝试并验证各种约束的作用。实验过程截图。

    还未学习完成    继续ing!!!!!!!!!!!!!!!!!!!

  • 相关阅读:
    工作那些事(四)大公司VS小公司
    HTTP Keep-Alive详解
    Burp Suite Walkthrough(英文版)
    Burp Suite Walkthrough(中文版)
    Burp Suite教程(英文版)
    XSS之学习误区分析
    工具猫魔盒介绍
    XSS脚本攻击漫谈
    WEB黑客工具箱之FireBug介绍
    WEB黑客工具箱之LiveHttpHeaders介绍
  • 原文地址:https://www.cnblogs.com/zhangkele/p/9096608.html
Copyright © 2011-2022 走看看