当前位置: 首页 > news >正文

做自媒体查找素材的网站嘉兴自助建网站

做自媒体查找素材的网站,嘉兴自助建网站,10m网站并发量,网站必须兼容哪些浏览器SQL 介绍及 MySQL 安装 一、实验简介 本课程为实验楼提供的 MySQL 实验教程#xff0c;所有的步骤都在实验楼在线实验环境中完成#xff0c;学习中请按照实验步骤依次操作。 本课程为 SQL 基本语法及 MySQL 基本操作的实验#xff0c;理论内容较少#xff0c;动手实践多…SQL 介绍及 MySQL 安装 一、实验简介 本课程为实验楼提供的 MySQL 实验教程所有的步骤都在实验楼在线实验环境中完成学习中请按照实验步骤依次操作。 本课程为 SQL 基本语法及 MySQL 基本操作的实验理论内容较少动手实践多可以快速上手 SQL 及 MySQL 服务。 1.1 实验内容 本次课程对数据库、SQL、MySQL 做了简单介绍并介绍了 Ubuntu Linux 下 MySQL 的安装。完成本实验可以对这门课程和 MySQL 有了简单的了解接下来的实验也将在此基础上进行。 1.2 实验知识点 数据库的概念MySQL 的安装 1.3 实验环境 课程使用的实验环境为 Ubuntu Linux 16.04 64 位版本。实验中会用到程序 Mysql 5.7.22Xfce 终端Gedit 二、相关概念 2.1 数据库和 SQL 概念 数据库Database是按照数据结构来组织、存储和管理数据的仓库它的产生距今已有六十多年。随着信息技术和市场的发展数据库变得无处不在它在电子商务、银行系统等众多领域都被广泛使用且成为其系统的重要组成部分。 数据库用于记录数据使用数据库记录数据可以表现出各种数据间的联系也可以很方便地对所记录的数据进行增、删、改、查等操作。 结构化查询语言(Structured Query Language)简称 SQL是上世纪 70 年代由 IBM 公司开发用于对数据库进行操作的语言。更详细地说SQL 是一种数据库查询和程序设计语言用于存取数据以及查询、更新和管理关系数据库系统同时也是数据库脚本文件的扩展名。 2.2 MySQL 介绍 MySQL 是一个 DBMS数据库管理系统由瑞典 MySQLAB 公司开发目前属于 Oracle 公司MySQL 是最流行的关系型数据库管理系统关系数据库是建立在关系数据库模型基础上的数据库借助于集合代数等概念和方法来处理数据库中的数据。由于其体积小、速度快、总体拥有成本低尤其是开放源码这一特点一般中小型网站的开发者都选择 MySQL 作为网站数据库。MySQL 使用 SQL 语言进行操作。 三、MySQL 安装 3.1 安装之前的检查 先要检查 Linux 系统中是否已经安装了 MySQL输入命令尝试打开 MySQL 服务 sudo service mysql start输入密码后如果出现以下提示则说明系统中已经安装有 MySQL 如果提示是这样的则说明系统中没有 MySQL需要继续安装 mysql: unrecognized service 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如果出现如下提示则安装成功 此时可以根据自己的需求用 gedit 修改 MySQL 的配置文件my.cnf,使用以下命令: sudo gedit /etc/mysql/my.cnf至此MySQL 已经安装、配置完成可以正常使用了。 3.3 尝试 MySQL 1). 打开 MySQL 使用如下两条命令打开 MySQL 服务并使用 root 用户登录 # 启动 MySQL 服务 sudo service mysql start# 使用 root 用户登录实验楼环境的密码为空直接回车就可以登录 mysql -u root执行成功会出现如下提示 2). 查看数据库 使用命令 show databases;查看有哪些数据库注意不要漏掉分号 ; 可见已有三个数据库分别是 “information-schema”、“mysql”、“performance-schema”。 3). 连接数据库 选择连接其中一个数据库语句格式为 use 数据库名这里可以不用加分号这里我们选择 information_schema 数据库 use information_schema4). 查看表 使用命令 show tables; 查看数据库中有哪些表注意不要漏掉“;” 5). 退出 使用命令 quit 或者 exit 退出 MySQL。 四、实验总结 本节实验中我们初步接触了数据库SQL 及 MySQL 的基本概念实践了登录和退出 MySQL使用和查看数据库等基本操作。 五、课后习题 如果你的计算机操作系统或虚拟机中有 Ubuntu尝试在 Ubuntu 中完成 MySQL 的安装、配置、试用。通过谷歌百度或其他方式进一步了解数据库、SQL 和 MySQL。 创建数据库并插入数据 一、实验简介 1.1 实验内容 本次课程将介绍 MySQL 新建数据库新建表插入数据以及基本数据类型的相关知识。本节实验将创建一个名为 mysql_shiyan 的数据库其中有两张表 employee 和 department。 1.2 实验知识点 基本数据类型插入数据 1.3 实验环境 课程使用的实验环境为 Ubuntu Linux 16.04 64 位版本。实验中会用到程序 Mysql 5.7.22Xfce 终端 二、开发准备 在使用实验楼 Linux 环境进行本次实验之前先用以下两条命令打开 MySQL 服务并使用 root 登录 # 打开 MySQL 服务 sudo service mysql start#使用 root 用户登录密码为空 mysql -u root如果你理解了上述代码的含义 -u 和 root 之间可以不要空格 后续的实验都在 MySQL 的控制台输入命令进行操作。 三、实验步骤 下面了解一下 MySQL 的基本使用方法创建数据库以及插入数据。 3.1 新建数据库 首先我们创建一个数据库给它一个名字比如 mysql_shiyan以后的几次实验也是对 mysql_shiyan 这个数据库进行操作。 语句格式为 CREATE DATABASE 数据库名字;注意不要漏掉分号 ;前面的 CREATE DATABASE 也可以使用小写具体命令为 CREATE DATABASE mysql_shiyan;创建成功后输入命令 show databases; 注意不要漏掉;检查一下 在大多数系统中SQL 语句都是不区分大小写的因此以下语句都是合法的 CREATE DATABASE name1; create database name2; CREATE database name3; create DAtabaSE name4;但是出于严谨而且便于区分保留字保留字(reserved word)指在高级语言中已经定义过的字使用者不能再将这些字作为变量名或过程名使用。和变量名我们把保留字大写把变量和数据小写。 3.2 连接数据库 接下来的操作就在刚才创建的 mysql_shiyan 中进行由于一个系统中可能会有多个数据库要确定当前是对哪一个数据库操作使用语句 use dbname use mysql_shiyan;如图显示则连接成功 输入命令 show tables; 可以查看当前数据库里有几张表现在 mysql_shiyan 里还是空的 3.3 数据表 数据表table简称表它是数据库最重要的组成部分之一。数据库只是一个框架表才是实质内容。 而一个数据库中一般会有多张表这些各自独立的表通过建立关系被联接起来才成为可以交叉查阅、一目了然的数据库。如下便是一张表 IDnamephone01Tom11011011002Jack11911911903Rose114114114 3.4 新建数据表 在数据库中新建一张表的语句格式为 CREATE TABLE 表的名字 ( 列名a 数据类型(数据长度), 列名b 数据类型(数据长度) 列名c 数据类型(数据长度) );我们尝试在 mysql_shiyan 中新建一张表 employee包含姓名ID 和电话信息所以语句为 CREATE TABLE employee (id int(10),name char(20),phone int(12));然后再创建一张表 department包含名称和电话信息想让命令看起来更整洁你可以这样输入命令 这时候再 show tables; 一下可以看到刚才添加的两张表 3.5 数据类型 在刚才新建表的过程中我们提到了数据类型MySQL 的数据类型和其他编程语言大同小异下表是一些 MySQL 常用数据类型 数据类型大小(字节)用途格式INT4整数FLOAT4单精度浮点数DOUBLE8双精度浮点数ENUM--单选,比如性别ENUM(a,b,c)SET--多选SET(1,2,3)DATE3日期YYYY-MM-DDTIME3时间点或持续时间HH:MM:SSYEAR1年份值YYYYCHAR0~255定长字符串VARCHAR0~255变长字符串TEXT0~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 数据类型的信息可以参考下面两篇博客。 MySQL 中的数据类型介绍MySQL 数据类型 3.6 插入数据 刚才我们新建了两张表使用语句 SELECT * FROM employee; 查看表中的内容可以看到 employee 表中现在还是空的 刚才使用的 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 的相关数据已经保存在其中了 四、实验总结 经过本次实验我们已经有了一个名为 mysql_shiyan 的数据库其中有两张表我们已经向其中插入了一些数据。务必完整地操作一遍以熟练 SQL 语句的使用。下一节我们将进入 SQL 约束的学习。 五、课后习题 新建一个名为 library 的数据库包含 book、reader 两张表根据自己的理解安排表的内容并插入数据。保存截图。 5.1 参考答案 以下内容仅供参考为了能有更好的学习效果请尽量按自己的想法来完成练习题。 create database library; use library;create table book(book_id int primary key,book_name varchar(50) not null );create table reader(reader_id int primary key,reader_name varchar(50) not null ); SQL 的约束 一、实验简介 1.1 实验内容 约束是一种限制它通过对表的行或列的数据做出限制来确保表的数据的完整性、唯一性。本节实验将在实践操作中熟悉 MySQL 中的几种约束。 1.2 实验知识点 SQL 约束 1.3 实验环境 课程使用的实验环境为 Ubuntu Linux 16.04 64 位版本。实验中会用到程序 Mysql 5.7.22Xfce 终端 二、实验步骤 本节实验会创建几个表然后对其中的各个字段添加约束学习添加和测试约束的方法。 2.1 约束分类 听名字就知道约束是一种限制它通过对表的行或列的数据做出限制来确保表的数据的完整性、唯一性。 比如规定一个用户的用户名不能为空值且没有重复的记录这就是一种约束规则。 在 MySQL 中通常有这几种约束 约束类型主键默认值唯一外键非空关键字PRIMARY KEYDEFAULTUNIQUEFOREIGN KEYNOT NULL 2.2 建立含约束的表 为了方便介绍这几种约束我们先建立一个数据库。 注如果你是从上一节直接进入本节进行学习的请先删除上一节建立的数据库mysql_shiyan删除语句为DROP DATABASE mysql_shiyan; 关于数据库的删除操作我们会具体讲解这里先继续实验。 当然不用你一行一行地输入命令搭建这个数据库实验楼已经为你准备好了。首先打开 Xfce 终端输入命令进入 /home/shiyanlou/Desktop 目录 cd Desktop将需要的数据文件下载到桌面 wget https://labfile.oss-internal.aliyuncs.com/courses/9/MySQL-03-01.sql下载完成后输入命令开启 MySQL 服务并使用 root 用户登录 #打开 MySQL 服务 sudo service mysql start#使用 root 用户登录 mysql -u root刚才下载的 MySQL-03-01.sql 文件其中包含的代码可以新建一个数据库 mysql_shiyan,然后在其中创建三张表 departmentemployeeproject它们包含了各种约束。 你可以用 Gedit 查看 MySQL-03-01.sql 文件。 如果你是接着上一个实验开始操作的话记得先使用如下命令删掉 mysql_shiyan 数据库 drop database mysql_shiyan;加载文件中的数据需要在 MySQL 控制台中输入命令 source /home/shiyanlou/Desktop/MySQL-03-01.sql;查看一下这个数据库输入命令 show tables;可见 2.3 主键 在数据库中如果有两行记录数据完全一样那么如何来区分呢 答案是无法区分如果有两行记录完全相同那么对于 Mysql 就会认定它们是同一个实体这与现实生活是存在差别的。 假如我们要存储一个学生的信息信息包含姓名身高性别年龄。 不幸的是有两个女孩都叫小梦且她们的身高和年龄相同数据库将无法区分这两个实体这时就需要用到主键了。 主键PRIMARY KEY作为数据表中一行数据的唯一标识符在一张表中通过主键就能准确定位到某一行数据因此主键十分重要它不能有重复记录且不能为空。 在 MySQL-03-01.sql 中这里有主键 也可以这样定义主键 还有一种特殊的主键——复合主键。主键不仅可以是表中的一列也可以由表中的两列或多列来共同标识比如 2.4 默认值约束 默认值约束 (DEFAULT) 规定当有 DEFAULT 约束的列插入数据为空时将使用默认值。 默认值常用于一些可有可无的字段比如用户的个性签名如果用户没有设置系统给他应该设定一个默认的文本比如空文本或 ‘这个人太懒了没有留下任何信息’ 在 MySQL-03-01.sql 中这段代码包含了 DEFAULT 约束 people_num INT(10) 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) 填充 2.5 唯一约束 唯一约束 (UNIQUE) 比较简单它规定一张表中指定的一列的值必须不能有重复值即这一列每个值都是唯一的。 在 MySQL-03-01.sql 中也有 UNIQUE 约束 当 INSERT 语句新插入的数据和已有数据重复的时候如果有 UNIQUE 约束则 INSERT 失败比如 INSERT INTO employee VALUES(01,Tom,25,3000,110110,dpt1); INSERT INTO employee VALUES(02,Jack,30,3500,110110,dpt2);结果如图 2.6 外键约束 外键 (FOREIGN KEY) 既能确保数据完整性也能表现表之间的关系。 比如现在有用户表和文章表给文章表中添加一个指向用户 id 的外键表示这篇文章所属的用户 id外键将确保这个外键指向的记录是存在的如果你尝试删除一个用户而这个用户还有文章存在于数据库中那么操作将无法完成并报错。因为你删除了该用户过后他发布的文章都没有所属用户了而这样的情况是不被允许的。同理你在创建一篇文章的时候也不能为它指定一个不存在的用户 id。 一个表可以有多个外键每个外键必须 REFERENCES (参考) 另一个表的主键被外键约束的列取值必须在它参考的列中有对应值。 在 INSERT 时如果被外键约束的值没有在参考列中有对应比如以下命令参考列 (department 表的 dpt_name) 中没有 dpt3则 INSERT 失败 INSERT INTO employee VALUES(02,Jack,30,3500,114114,dpt3);可见之后将 dpt3 改为 dpt2department 表中有 dpt2则插入成功 2.7 非空约束 非空约束 (NOT NULL),听名字就能理解被非空约束的列在插入值时必须非空。 在 MySQL 中违反非空约束会报错比如以下语句 #INSERT 成功 age 为空因为没有非空约束表中显示 NULL INSERT INTO employee(id,name,salary,phone,in_dpt) VALUES(03,Jim,3400,119119,dpt2);#报错 salary 被非空约束插入数据失败 INSERT INTO employee(id,name,age,phone,in_dpt) VALUES(04,Bob,23,123456,dpt1);结果如图插入数据失败实验楼的 MySQL 环境是 5.7.22禁止插入不符合非空约束的数据 此时 employee 表的内容为 三、实验总结 本节实验中通过一个数据库实例了解了主键、默认值、外键、非空、唯一这几种约束的特性这几种约束都是最常见的需要仔细理解每种约束的含义及使用场景。下一节我们将进入 SELECT 语句的学习。 项目实战搭建简易成绩管理系统数据库 搭建一个简易的成绩管理系统的数据库 介绍 现需要构建一个简易的成绩管理系统的数据库来记录几门课程的学生成绩。数据库中有三张表分别用于记录学生信息、课程信息和成绩信息。 数据表结构如下 学生表(student)学生 id 、学生姓名和性别 课程表课程 id 和课程名 成绩表成绩 id 、学生 id 、课程 id 和分数 服务器中的 MySQL 还没有启动请注意 MySQL 的 root 账户默认密码为空。 目标 1.MySQL 服务处于运行状态 2.新建数据库的名称为 gradesystem 3.gradesystem 包含三个表student、course、mark student 表包含 3 列sid(主键)、sname、gender course 表包含 2 列cid(主键)、cname mark 表包含 4 列mid(主键)、sid、cid、score 注意与其他两个表主键之间的关系。 4.将上述表中的数据分别插入到各个表中 提示 建立表时注意 id 自增和键约束每个表插入语句可通过一条语句完成 挑战参考代码 以下内容仅供参考为了能有更好的学习效果请尽量按自己的想法来完成练习题。 sudo service mysql startmysql -u rootCREATE DATABASE gradesystem;use gradesystemCREATE TABLE student(sid int NOT NULL AUTO_INCREMENT,sname varchar(20) NOT NULL,gender varchar(10) NOT NULL,PRIMARY KEY(sid));CREATE TABLE course(cid int NOT NULL AUTO_INCREMENT,cname varchar(20) NOT NULL,PRIMARY KEY(cid));CREATE TABLE mark(mid int NOT NULL AUTO_INCREMENT,sid int NOT NULL,cid int NOT NULL,score int NOT NULL,PRIMARY KEY(mid),FOREIGN KEY(sid) REFERENCES student(sid),FOREIGN KEY(cid) REFERENCES course(cid));INSERT INTO student VALUES(1,Tom,male),(2,Jack,male),(3,Rose,female);INSERT INTO course VALUES(1,math),(2,physics),(3,chemistry);INSERT INTO mark VALUES(1,1,1,80),(2,2,1,85),(3,3,1,90),(4,1,2,60),(5,2,2,90),(6,3,2,75),(7,1,3,95),(8,2,3,75),(9,3,3,85); SELECT 语句详解 一、实验简介 1.1 实验内容 SQL 中最常用的 SELECT 语句用来在表中选取数据本节实验中将通过一系列的动手操作详细学习 SELECT 语句的用法。 1.2 实验知识点 SELECT 基本语法数学符号条件AND OR IN通配符排序SQL 内置函数和计算子查询与连接查询 1.3 实验环境 课程使用的实验环境为 Ubuntu Linux 16.04 64 位版本。实验中会用到程序 Mysql 5.7.22Xfce 终端 二、开发准备 注如果你是从上一节直接进入本节进行学习的请先删除上一节建立的数据库mysql_shiyan删除语句为DROP DATABASE mysql_shiyan;。 在正式开始本实验内容之前需要先下载相关数据库表搭建好一个名为mysql_shiyan 的数据库(有三张表departmentemployeeproject)并向其中插入数据。 具体操作如下,首先输入命令进入 /home/shiyanlou/Desktop 目录 cd /home/shiyanlou/Desktop然后再输入命令下载代码 wget https://labfile.oss-internal.aliyuncs.com/courses/9/MySQL-04-01.sql wget https://labfile.oss-internal.aliyuncs.com/courses/9/MySQL-04-02.sql下载完成后输入命令开启 MySQL 服务并使用 root 用户登录 # 打开 MySQL 服务 sudo service mysql start# 使用 root 用户登录 mysql -u root刚才下载的两个文件 MySQL-04-01.sql 和 MySQL-04-02.sql其中第一个文件用于创建数据库第二个文件向数据库中插入数据。 你可以用 gedit 查看两个文件的内容。 如果你是接着上一个实验操作的话首先删除 mysql_shiyan 数据库 drop database mysql_shiyan;加载文件中的数据需要在 MySQL 控制台中输入命令搭建数据库 source /home/shiyanlou/Desktop/MySQL-04-01.sql向数据库插入数据 source /home/shiyanlou/Desktop/MySQL-04-02.sql 三、实验步骤 在数据库操作语句中使用最频繁也被认为最重要的是 SELECT 查询语句。之前的实验中我们已经在不少地方用到了 SELECT * FROM table_name; 这条语句用于查看一张表中的所有内容。 而 SELECT 与各种限制条件关键词搭配使用具有各种丰富的功能这次实验就进行详细介绍。 3.1 基本的 SELECT 语句 SELECT 语句的基本格式为 SELECT 要查询的列名 FROM 表名字 WHERE 限制条件;如果要查询表的所有内容则把 要查询的列名 用一个星号 * 号表示(实验 2、3 中都已经使用过)代表要查询表中所有的列。 而大多数情况我们只需要查看某个表的指定的列比如要查看 employee 表的 name 和 age SELECT name,age FROM employee;3.2 数学符号条件 SELECT 语句常常会有 WHERE 限制条件用于达到更加精确的查询。WHERE 限制条件可以有数学符号 (,,,,) 刚才我们查询了 name 和 age现在稍作修改 SELECT name,age FROM employee WHERE age25;筛选出 age 大于 25 的结果 或者查找一个名字为 Mary 的员工的 name,age 和 phone SELECT name,age,phone FROM employee WHERE nameMary;结果当然是 3.3 “AND”与“OR” 从这两个单词就能够理解它们的作用。WHERE 后面可以有不止一条限制而根据条件之间的逻辑关系可以用 [条件一 OR 条件二] 和 [条件一 AND 条件二] 连接 例如筛选出 age 小于 25或 age 大于 30 SELECT name,age FROM employee WHERE age25 OR age30;#筛选出 age 大于 25且 age 小于 30 SELECT name,age FROM employee WHERE age25 AND age30;而刚才的限制条件 age25 AND age30 如果需要包含 25 和 30 这两个数字的话可以替换为 age BETWEEN 25 AND 30  3.4 IN 和 NOT IN 关键词 IN 和 NOT IN 的作用和它们的名字一样明显用于筛选“在”或“不在”某个范围内的结果比如说我们要查询在 dpt3 或 dpt4 的人: SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN (dpt3,dpt4);而 NOT IN 的效果则是如下面这条命令查询出了不在 dpt1 也不在 dpt3 的人 SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt NOT IN (dpt1,dpt3);3.5 通配符 关键字 LIKE 可用于实现模糊查询常见于搜索功能中。 和 LIKE 联用的通常还有通配符代表未知字符。SQL 中的通配符是 _ 和 % 。其中 _ 代表一个未指定字符% 代表不定个未指定字符 比如要只记得电话号码前四位数为 1101而后两位忘记了则可以用两个 _ 通配符代替 SELECT name,age,phone FROM employee WHERE phone LIKE 1101__;这样就查找出了 1101 开头的 6 位数电话号码 另一种情况比如只记名字的首字母又不知道名字长度则用 % 通配符代替不定个字符 SELECT name,age,phone FROM employee WHERE name LIKE J%;这样就查找出了首字母为 J 的人 3.6 对结果排序 为了使查询结果看起来更顺眼我们可能需要对结果按某一列来排序这就要用到 ORDER BY 排序关键词。默认情况下ORDER BY 的结果是升序排列而使用关键词 ASC 和 DESC 可指定升序或降序排序。 比如我们按 salary 降序排列SQL 语句为 SELECT name,age,salary,phone FROM employee ORDER BY salary DESC;如果后面不加 DESC 或 ASC 将默认按照升序排列。应用场景博客系统中按时间先后顺序显示博文。 3.7 SQL 内置函数和计算 SQL 允许对表中的数据进行计算。对此SQL 有 5 个内置函数这些函数都对 SELECT 的结果做操作 函数名COUNTSUMAVGMAXMIN作用计数求和求平均值最大值最小值 其中 COUNT 函数可用于任何数据类型(因为它只是计数)而 SUM 、AVG 函数都只能对数字类数据类型做计算MAX 和 MIN 可用于数值、字符串或是日期时间数据类型。 具体举例比如计算出 salary 的最大、最小值用这样的一条语句 SELECT MAX(salary) AS max_salary,MIN(salary) FROM employee;有一个细节你或许注意到了使用 AS 关键词可以给值重命名比如最大值被命名为了 max_salary 3.8 子查询 上面讨论的 SELECT 语句都仅涉及一个表中的数据然而有时必须处理多个表才能获得所需的信息。例如想要知道名为 Tom 的员工所在部门做了几个工程。员工信息储存在 employee 表中但工程信息储存在 project 表中。 对于这样的情况我们可以用子查询 SELECT of_dpt,COUNT(proj_name) AS count_project FROM project GROUP BY of_dpt HAVING of_dpt IN (SELECT in_dpt FROM employee WHERE nameTom);上面代码包含两个 SELECT 语句第二个 SELECT 语句将返回一个集合的数据形式然后被第一个 SELECT 语句用 in 进行判断。 HAVING 关键字可以的作用和 WHERE 是一样的都是说明接下来要进行条件筛选操作。 区别在于 HAVING 用于对分组后的数据进行筛选 子查询还可以扩展到 3 层、4 层或更多层。 3.9 连接查询 在处理多个表时子查询只有在结果来自一个表时才有用。但如果需要显示两个表或多个表中的数据这时就必须使用连接 (join) 操作。 连接的基本思想是把两个或多个表当作一个新的表来操作如下 SELECT id,name,people_num FROM employee,department WHERE employee.in_dpt department.dpt_name ORDER BY id;这条语句查询出的是各员工所在部门的人数其中员工的 id 和 name 来自 employee 表people_num 来自 department 表 另一个连接语句格式是使用 JOIN ON 语法刚才的语句等同于 SELECT id,name,people_num FROM employee JOIN department ON employee.in_dpt department.dpt_name ORDER BY id;结果也与刚才的语句相同。 四、实验总结 本节实验中学习了 SELECT 语句的常用方法 基本语法数学符号条件AND OR IN模糊查询对查询结果排序SQL 内置函数和计算子查询与连接查询 五、课后习题 使用连接查询的方式查询出各员工所在部门的人数与工程数工程数命名为 count_project。连接 3 个表并使用 COUNT 内置函数 练习题参考答案 以下提示仅供参考你可以按自己的想法来完成 SELECT name, people_num, COUNT(proj_name) AS count_projectFROM employee, department, projectWHERE in_dpt dpt_name AND of_dpt dpt_nameGROUP BY name, people_num;--------------------------------- | name | people_num | count_project | --------------------------------- | Alex | 11 | 1 | | Jack | 12 | 2 | | Jim | 11 | 1 | | Jobs | 12 | 2 | | Joe | 12 | 2 | | Ken | 11 | 1 | | Mary | 12 | 2 | | Mike | 15 | 2 | | Rick | 10 | 1 | | Rose | 10 | 1 | | Tom | 15 | 2 | | Tony | 10 | 1 | --------------------------------- 12 rows in set (0.01 sec)前两行不必说了从三张表选择三列数据第三行设置三列数据的关系dpt_name 是唯一值of_dpt 和 in_dpt 的值必取自 dpt_name 这列它们应该有外键关系但不是必须的第四行分组分组不可或缺否则会出现无意义的数据一般来说连接查询语句中有 COUNT 就会有 GROUP BY报一个 sql_mode 引起的错误至于为什么选择 name 和 people_num 分组大家可以试一下同时去掉 COUNT 和 GROUP BY 语句看看其中的差异即可理解。 数据库及表的修改和删除 一、实验简介 1.1 实验内容 本节实验中我们将学习并实践如何对数据库表和表中的内容做修改删除重命名等操作。 1.2 实验知识点 数据库操作数据表操作更新和删除数据 1.3 实验环境 课程使用的实验环境为 Ubuntu Linux 16.04 64 位版本。实验中会用到程序 Mysql 5.7.22Xfce 终端 二、开发准备 注如果你是从上一节直接进入本节进行学习的请先删除上一节建立的数据库 mysql_shiyan删除语句为 DROP DATABASE mysql_shiyan;。 在正式开始本实验内容之前需要先下载相关代码。 该代码可以新建两个数据库分别名为 test_01 和mysql_shiyan 并在 mysql_shiyan 数据库中建 4 个表departmentemployeeprojecttable_1然后向其中插入数据。 具体操作如下,首先输入命令进入 /home/shiyanlou/Desktop 目录 cd /home/shiyanlou/Desktop然后再输入命令下载代码 wget https://labfile.oss-internal.aliyuncs.com/courses/9/MySQL-05.sql下载完成后输入命令开启 MySQL 服务并使用 root 用户登录 #打开 MySQL 服务 sudo service mysql start#使用 root 用户登录 mysql -u root可以在桌面看到下载的 MySQL-05.sql 文件你可以用 gedit 查看、编辑里面的内容。 如果你是接着上一个实验操作的话首先删除 mysql_shiyan 数据库 drop database mysql_shiyan;加载文件中的数据需要在 MySQL 控制台中输入命令完成实验准备 source /home/shiyanlou/Desktop/MySQL-05.sql; 三、实验步骤 本节将通过实践操作带领大家熟悉数据库的修改和删除操作。 3.1 删除数据库 使用命令 SHOW DATABASES; 可以看到刚才运行MySQL-05.sql 文件生成的两个数据库 现在我们运行命令删除名为 test_01 的数据库 DROP DATABASE test_01;现在再次使用命令 SHOW DATABASES; 可以发现test_01 数据库已经被成功删除 关于修改数据库 目前 Mysql 没有提供修改数据库名称的方法因为这曾导致一系列安全问题。 在老版本中 RENAME DATABASE 可以修改数据库名称这条命令在 MySQL 5.1.7 中被加入但官方很快就发现这条命令所带来的危险于是在 MySQL 5.1.23 中把这条命令移除。 事实上数据库名几乎不会遇到必须修改的情况如果你一定要这么做比较安全的做法是重新建一个新库然后将旧库中的数据转移到新库中并且暂时不要删除旧的数据库以防数据遗失。 3.2 对一张表的修改 3.2.1 重命名一张表 重命名一张表的语句有多种形式以下 3 种格式效果是一样的 RENAME TABLE 原名 TO 新名字;ALTER TABLE 原名 RENAME 新名;ALTER TABLE 原名 RENAME TO 新名;进入数据库 mysql_shiyan use mysql_shiyan使用命令尝试修改 table_1 的名字为 table_2  RENAME TABLE table_1 TO table_2;3.2.2 删除一张表 删除一张表的语句类似于刚才用过的删除数据库的语句格式是这样的 DROP TABLE 表名字;比如我们把 table_2 表删除 DROP TABLE table_2;3.3 对一列的修改(即对表结构的修改) 对表结构的修改是本节实验的难点有时候一些小的错误会造成不可挽回的后果所以请细心操作。另外需要注意非必要情况不要修改表结构。 3.3.1 增加一列 在表中增加一列的语句格式为 ALTER TABLE 表名字 ADD COLUMN 列名字 数据类型 约束; 或 ALTER TABLE 表名字 ADD 列名字 数据类型 约束;现在 employee 表中有 id、name、age、salary、phone、in_dpt 这 6 个列我们尝试加入 height (身高)一个列并指定 DEFAULT 约束 ALTER TABLE employee ADD height INT(4) DEFAULT 170;可以发现新增加的列被默认放置在这张表的最右边。如果要把增加的列插入在指定位置则需要在语句的最后使用 AFTER 关键词(“AFTER 列 1” 表示新增的列被放置在 “列 1” 的后面)。 提醒语句中的 INT(4) 不是表示整数的字节数而是表示该值的显示宽度如果设置填充字符为 0则 170 显示为 0170 比如我们新增一列 weight(体重) 放置在 age(年龄) 的后面 ALTER TABLE employee ADD weight INT(4) DEFAULT 120 AFTER age;上面的效果是把新增的列加在某位置的后面如果想放在第一列的位置则使用 FIRST 关键词如语句 ALTER TABLE employee ADD test INT(10) DEFAULT 11 FIRST;效果如下 3.3.2 删除一列 删除表中的一列和刚才使用的新增一列的语句格式十分相似只是把关键词 ADD 改为 DROP 语句后面不需要有数据类型、约束或位置信息。具体语句格式 ALTER TABLE 表名字 DROP COLUMN 列名字;或 ALTER TABLE 表名字 DROP 列名字;我们把刚才新增的 test 删除 ALTER TABLE employee DROP test;3.3.3 重命名一列 这条语句其实不只可用于重命名一列准确地说它是对一个列做修改(CHANGE) ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束;注意这条重命名语句后面的 “数据类型” 不能省略否则重命名失败。 当原列名和新列名相同的时候指定新的数据类型或约束就可以用于修改数据类型或约束。需要注意的是修改数据类型可能会导致数据丢失所以要慎重使用。 我们用这条语句将 “height” 一列重命名为汉语拼音 “shengao” 效果如下 ALTER TABLE employee CHANGE height shengao INT(4) DEFAULT 170;3.3.4 改变数据类型 要修改一列的数据类型除了使用刚才的 CHANGE 语句外还可以用这样的 MODIFY 语句 ALTER TABLE 表名字 MODIFY 列名字 新数据类型;再次提醒修改数据类型必须小心因为这可能会导致数据丢失。在尝试修改数据类型之前请慎重考虑。 3.4 对表的内容修改 3.4.1 修改表中某个值 大多数时候我们需要做修改的不会是整个数据库或整张表而是表中的某一个或几个数据这就需要我们用下面这条命令达到精确的修改 UPDATE 表名字 SET 列1值1,列2值2 WHERE 条件;比如我们要把 Tom 的 age 改为 21salary 改为 3000 UPDATE employee SET age21,salary3000 WHERE nameTom;注意一定要有 WHERE 条件否则会出现你不想看到的后果 3.4.2 删除一行记录 删除表中的一行数据也必须加上 WHERE 条件否则整列的数据都会被删除。删除语句 DELETE FROM 表名字 WHERE 条件;我们尝试把 Tom 的数据删除 DELETE FROM employee WHERE nameTom;四、实验总结 本节实验中我们学习了对数据库、数据库表、数据库表项及记录的修改和删除方法。 五、课后习题 按照实验过程完整操作一遍先用下载的代码建立数据库并插入数据然后试用各种修改语句。使用没有 WHERE 条件的 UPDATE 语句查看有什么不良后果。 5.1 练习题参考答案 以下内容仅供参考为了能有更好的学习效果请尽量按自己的想法来完成练习题。 UPDATE employee SET salary2500; 其它基本操作 一、实验简介 1.1 实验内容 本节实验中我们将学习并实践数据库的其它基本操作索引、视图导入和导出备份和恢复等。 这些概念对于数据库管理员而言都非常重要请仔细理解并完成所有实验操作。 作为基础篇不会涉及到关于索引和视图的高级应用和核心概念但是基本操作大家会了解尤其是关于索引的内容学会建立恰当的索引可以大大提高数据库的查询效率更高级的应用我们会在进阶篇详细讲解。 1.2 实验知识点 索引视图导入和导出备份和恢复 1.3 实验环境 课程使用的实验环境为 Ubuntu Linux 16.04 64 位版本。实验中会用到程序 Mysql 5.7.22Xfce 终端 二、开发准备 注如果你是从上一节直接进入本节进行学习的请先删除上一节建立的数据库 mysql_shiyan 删除语句为 DROP DATABASE mysql_shiyan; 。 在正式开始本实验内容之前需要先下载相关代码。 下载的代码会搭建好一个名为 mysql_shiyan 的数据库有三张表departmentemployeeproject并向其中插入数据。 具体操作如下,首先输入命令进入 /home/shiyanlou/Desktop 目录 cd /home/shiyanlou/Desktop然后再输入命令下载代码 wget https://labfile.oss-internal.aliyuncs.com/courses/9/MySQL-06.sql wget https://labfile.oss-internal.aliyuncs.com/courses/9/in.txt下载完成后输入命令开启 MySQL 服务并使用 root 用户登录 # 打开 MySQL 服务 sudo service mysql start# 使用 root 用户登录 mysql -u root我们下载了两个文件 MySQL-06.sql 和 in.txt其中第一个文件用于创建数据库并向其中插入数据第二个文件用于测试数据导入功能。 你可以尝试查看、编辑里面的文件。 如果你是接着上一个实验操作的话首先把 mysql_shiyan 数据库删掉 drop database mysql_shiyan;输入命令运行第一个文件搭建数据库并插入数据 source /home/shiyanlou/Desktop/MySQL-06.sql 三、实验步骤 本节将通过实践操作带领大家熟悉数据库的其它操作。 3.1 索引 索引是一种与表有关的结构它的作用相当于书的目录可以根据目录中的页码快速找到所需的内容。 当表中有大量记录时若要对表进行查询没有索引的情况是全表搜索将所有记录一一取出和查询条件进行对比然后返回满足条件的记录。这样做会执行大量磁盘 I/O 操作并花费大量数据库系统时间。 而如果在表中已建立索引在索引中找到符合查询条件的索引值通过索引值就可以快速找到表中的数据可以大大加快查询速度。 对一张表中的某个列建立索引有以下两种语句格式 ALTER TABLE 表名字 ADD INDEX 索引名 (列名);CREATE INDEX 索引名 ON 表名字 (列名);我们用这两种语句分别建立索引 ALTER TABLE employee ADD INDEX idx_id (id); #在employee表的id列上建立名为idx_id的索引CREATE INDEX idx_name ON employee (name); #在employee表的name列上建立名为idx_name的索引索引的效果是加快查询速度当表中数据不够多的时候是感受不出它的效果的。这里我们使用命令 SHOW INDEX FROM 表名字; 查看刚才新建的索引 在使用 SELECT 语句查询的时候语句中 WHERE 里面的条件会自动判断有没有可用的索引。 比如有一个用户表它拥有用户名(username)和个人签名(note)两个字段。其中用户名具有唯一性并且格式具有较强的限制我们给用户名加上一个唯一索引个性签名格式多变而且允许不同用户使用重复的签名不加任何索引。 这时候如果你要查找某一用户使用语句 select * from user where username? 和 select * from user where note? 性能是有很大差距的对建立了索引的用户名进行条件查询会比没有索引的个性签名条件查询快几倍在数据量大的时候这个差距只会更大。 一些字段不适合创建索引比如性别这个字段存在大量的重复记录无法享受索引带来的速度加成甚至会拖累数据库导致数据冗余和额外的 CPU 开销。 3.2 视图 视图是从一个或多个表中导出来的表是一种虚拟存在的表。它就像一个窗口通过这个窗口可以看到系统专门提供的数据这样用户可以不用看到整个数据库中的数据而只关心对自己有用的数据。 注意理解视图是虚拟的表 数据库中只存放了视图的定义而没有存放视图中的数据这些数据存放在原来的表中使用视图查询数据时数据库系统会从原来的表中取出对应的数据视图中的数据依赖于原来表中的数据一旦表中数据发生改变显示在视图中的数据也会发生改变在使用视图的时候可以把它当作一张表。 创建视图的语句格式为 CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;可见创建视图的语句后半句是一个 SELECT 查询语句所以视图也可以建立在多张表上只需在 SELECT 语句中使用子查询或连接查询这些在之前的实验已经进行过。 现在我们创建一个简单的视图名为 v_emp包含v_namev_agev_phone三个列 CREATE VIEW v_emp (v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;3.3 导入 此处讲解的是导入一个纯数据文件该文件中将包含与数据表字段相对应的多条数据这样可以快速导入大量数据除此之外还有用 SQL 语句的导入方式语法为source *.sql 这是实验中经常用到的。两者之间的不同是数据文件导入方式只包含数据导入规则由数据库系统完成SQL 文件导入相当于执行该文件中包含的 SQL 语句可以实现多种操作包括删除更新新增甚至对数据库的重建。 数据文件导入可以把一个文件里的数据保存进一张表。导入语句格式为 LOAD DATA INFILE 文件路径和文件名 INTO TABLE 表名字;现在桌面上有一个名为 in.txt 的文件我们尝试把这个文件中的数据导入数据库 mysql_shiyan 的 employee 表中。 由于导入导出大量数据都属于敏感操作根据 mysql 的安全策略导入导出的文件都必须在指定的路径下进行在 mysql 终端中查看路径变量 mysql -uroot mysql show variables like %secure%; ------------------------------------------------- | Variable_name | Value | ------------------------------------------------- | require_secure_transport | OFF | | secure_auth | ON | | secure_file_priv | /var/lib/mysql-files/ | ------------------------------------------------- 3 rows in set (0.00 sec)注意到 secure_file_priv 变量指定安全路径为 /var/lib/mysql-files/ 要导入数据文件需要将该文件移动到安全路径下。 打开 Xfce 终端输入命令拷贝 in.txt 文件夹到 /var/lib/mysql-files/ 目录 sudo cp -a /home/shiyanlou/Desktop/in.txt /var/lib/mysql-files/使用命令 sudo cat /var/lib/mysql-files/in.txt 查看 in.txt 文件中的内容 可以看到其中仅仅包含了数据本身没有任何的 SQL 语句 再使用以下命令以 root 用户登录数据库再连接 mysql_shiyan 数据库 # 在Xfce 终端输入命令 mysql -u root# 在 MySQL 控制台中输入命令 use mysql_shiyan查看一下没有导入数据之前employee 表中的数据 现在执行导入语句文件中的数据成功导入 employee 表 LOAD DATA INFILE /var/lib/mysql-files/in.txt INTO TABLE employee;3.4 导出 导出与导入是相反的过程是把数据库某个表中的数据保存到一个文件之中。导出语句基本格式为 SELECT 列1列2 INTO OUTFILE 文件路径和文件名 FROM 表名字;注意语句中 “文件路径” 之下不能已经有同名文件。 现在我们把整个 employee 表的数据导出到 /var/lib/mysql-files/ 目录下导出文件命名为 out.txt 具体语句为 SELECT * INTO OUTFILE /var/lib/mysql-files/out.txt FROM employee;用 gedit 可以查看导出文件 /var/lib/mysql-files/out.txt 的内容 也可以使用 sudo cat /var/lib/mysql-files/out.txt 命令查看。 3.5 备份 数据库中的数据十分重要出于安全性考虑在数据库的使用中应该注意使用备份功能。 备份与导出的区别导出的文件只是保存数据库中的数据而备份则是把数据库的结构包括数据、约束、索引、视图等全部另存为一个文件。 mysqldump 是 MySQL 用于备份数据库的实用程序。它主要产生一个 SQL 脚本文件其中包含从头重新创建数据库所必需的命令 CREATE TABLE INSERT 等。 使用 mysqldump 备份的语句 mysqldump -u root 数据库名备份文件名; #备份整个数据库mysqldump -u root 数据库名 表名字备份文件名; #备份整个表mysqldump 是一个备份工具因此该命令是在终端中执行的而不是在 mysql 交互环境下 我们尝试备份整个数据库 mysql_shiyan将备份文件命名为 bak.sql先 CtrlD 退出 MySQL 控制台再打开 Xfce 终端在终端中输入命令 cd /home/shiyanlou/ mysqldump -u root mysql_shiyan bak.sql;使用命令 “ls” 可见已经生成备份文件 bak.sql 你可以用 gedit 查看备份文件的内容可以看见里面不仅保存了数据还有所备份的数据库的其它信息。 3.6 恢复 用备份文件恢复数据库其实我们早就使用过了。在本次实验的开始我们使用过这样一条命令 source /home/shiyanlou/Desktop/MySQL-06.sql这就是一条恢复语句它把 MySQL-06.sql 文件中保存的 mysql_shiyan 数据库恢复。 还有另一种方式恢复数据库但是在这之前我们先使用命令新建一个空的数据库 test mysql -u root #因为在上一步已经退出了 MySQL现在需要重新登录CREATE DATABASE test; #新建一个名为test的数据库再次 CtrlD 退出 MySQL然后输入语句进行恢复把刚才备份的 bak.sql 恢复到 test 数据库 mysql -u root test bak.sql我们输入命令查看 test 数据库的表便可验证是否恢复成功 mysql -u root # 因为在上一步已经退出了 MySQL现在需要重新登录use test # 连接数据库 testSHOW TABLES; # 查看 test 数据库的表可以看见原数据库的 4 张表和 1 个视图现在已经恢复到 test 数据库中 再查看 employee 表的恢复情况 四、实验总结 在本实验中我们实践了下面几个基本概念 索引可以加快查询速度视图是一种虚拟存在的表导入从文件中导入数据到表导出从表中导出到文件中备份mysqldump 备份数据库到文件恢复从文件恢复数据库 下一节我们将学习 MySQL 服务安装及命令使用 。 五、课后习题 建立员工名字 employee.name 和对应部门人数 department.people_num 的视图并展示。 练习题参考答案 以下内容仅供参考为了能有更好的学习效果请尽量按自己的想法来完成练习题。 CREATE VIEW name_people_num (name, people_num)AS SELECT name, people_num FROM employee, departmentWHERE in_dpt dpt_name;SELECT * FROM name_people_num;------------------ | name | people_num | ------------------ | Alex | 11 | | Ken | 11 | | Mike | 11 | | Jack | 12 | | Jobs | 12 | | Joe | 12 | | Mary | 12 | | Tony | 10 | | Rose | 10 | | Rick | 10 | | Tom | 15 | | Jim | 15 | ------------------ 12 rows in set (0.00 sec)
文章转载自:
http://www.morning.mbbgk.com.gov.cn.mbbgk.com
http://www.morning.mqmxg.cn.gov.cn.mqmxg.cn
http://www.morning.knqck.cn.gov.cn.knqck.cn
http://www.morning.ldcsw.cn.gov.cn.ldcsw.cn
http://www.morning.mwwnz.cn.gov.cn.mwwnz.cn
http://www.morning.zwckz.cn.gov.cn.zwckz.cn
http://www.morning.fkmyq.cn.gov.cn.fkmyq.cn
http://www.morning.xpqyf.cn.gov.cn.xpqyf.cn
http://www.morning.yxmcx.cn.gov.cn.yxmcx.cn
http://www.morning.rfwrn.cn.gov.cn.rfwrn.cn
http://www.morning.sqhtg.cn.gov.cn.sqhtg.cn
http://www.morning.mm27.cn.gov.cn.mm27.cn
http://www.morning.ckxd.cn.gov.cn.ckxd.cn
http://www.morning.nyqb.cn.gov.cn.nyqb.cn
http://www.morning.pfmsh.cn.gov.cn.pfmsh.cn
http://www.morning.clkyw.cn.gov.cn.clkyw.cn
http://www.morning.cthkh.cn.gov.cn.cthkh.cn
http://www.morning.c7501.cn.gov.cn.c7501.cn
http://www.morning.mmqhq.cn.gov.cn.mmqhq.cn
http://www.morning.wtrjq.cn.gov.cn.wtrjq.cn
http://www.morning.burpgr.cn.gov.cn.burpgr.cn
http://www.morning.qlsbz.cn.gov.cn.qlsbz.cn
http://www.morning.tnjz.cn.gov.cn.tnjz.cn
http://www.morning.qfzjn.cn.gov.cn.qfzjn.cn
http://www.morning.dodoking.cn.gov.cn.dodoking.cn
http://www.morning.xnkh.cn.gov.cn.xnkh.cn
http://www.morning.mxcgf.cn.gov.cn.mxcgf.cn
http://www.morning.mznqz.cn.gov.cn.mznqz.cn
http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn
http://www.morning.pzpj.cn.gov.cn.pzpj.cn
http://www.morning.tqsnd.cn.gov.cn.tqsnd.cn
http://www.morning.clkjn.cn.gov.cn.clkjn.cn
http://www.morning.lfdmf.cn.gov.cn.lfdmf.cn
http://www.morning.mwpcp.cn.gov.cn.mwpcp.cn
http://www.morning.wgtr.cn.gov.cn.wgtr.cn
http://www.morning.jcnmy.cn.gov.cn.jcnmy.cn
http://www.morning.bhznl.cn.gov.cn.bhznl.cn
http://www.morning.hwlmy.cn.gov.cn.hwlmy.cn
http://www.morning.nicetj.com.gov.cn.nicetj.com
http://www.morning.qttg.cn.gov.cn.qttg.cn
http://www.morning.smxrx.cn.gov.cn.smxrx.cn
http://www.morning.xnfg.cn.gov.cn.xnfg.cn
http://www.morning.tsnq.cn.gov.cn.tsnq.cn
http://www.morning.bftr.cn.gov.cn.bftr.cn
http://www.morning.bykqg.cn.gov.cn.bykqg.cn
http://www.morning.cwyrp.cn.gov.cn.cwyrp.cn
http://www.morning.rjnrf.cn.gov.cn.rjnrf.cn
http://www.morning.gxklx.cn.gov.cn.gxklx.cn
http://www.morning.ranglue.com.gov.cn.ranglue.com
http://www.morning.ycgrl.cn.gov.cn.ycgrl.cn
http://www.morning.bxqtq.cn.gov.cn.bxqtq.cn
http://www.morning.rsbqq.cn.gov.cn.rsbqq.cn
http://www.morning.lmpfk.cn.gov.cn.lmpfk.cn
http://www.morning.lynkz.cn.gov.cn.lynkz.cn
http://www.morning.fdmtr.cn.gov.cn.fdmtr.cn
http://www.morning.jgrjj.cn.gov.cn.jgrjj.cn
http://www.morning.rykmf.cn.gov.cn.rykmf.cn
http://www.morning.tsnq.cn.gov.cn.tsnq.cn
http://www.morning.skqfx.cn.gov.cn.skqfx.cn
http://www.morning.dhyqg.cn.gov.cn.dhyqg.cn
http://www.morning.hmpxn.cn.gov.cn.hmpxn.cn
http://www.morning.kxbdm.cn.gov.cn.kxbdm.cn
http://www.morning.qwwhs.cn.gov.cn.qwwhs.cn
http://www.morning.xkqjw.cn.gov.cn.xkqjw.cn
http://www.morning.mwkwg.cn.gov.cn.mwkwg.cn
http://www.morning.wckrl.cn.gov.cn.wckrl.cn
http://www.morning.fhqsm.cn.gov.cn.fhqsm.cn
http://www.morning.mrnnb.cn.gov.cn.mrnnb.cn
http://www.morning.gwwky.cn.gov.cn.gwwky.cn
http://www.morning.rdmn.cn.gov.cn.rdmn.cn
http://www.morning.ppbrq.cn.gov.cn.ppbrq.cn
http://www.morning.ryfpx.cn.gov.cn.ryfpx.cn
http://www.morning.fkmrj.cn.gov.cn.fkmrj.cn
http://www.morning.xdwcg.cn.gov.cn.xdwcg.cn
http://www.morning.zcwtl.cn.gov.cn.zcwtl.cn
http://www.morning.sgpnz.cn.gov.cn.sgpnz.cn
http://www.morning.kxqpm.cn.gov.cn.kxqpm.cn
http://www.morning.jypqx.cn.gov.cn.jypqx.cn
http://www.morning.bmzxp.cn.gov.cn.bmzxp.cn
http://www.morning.tpssx.cn.gov.cn.tpssx.cn
http://www.tj-hxxt.cn/news/237584.html

相关文章:

  • 深圳网站建设分期付网站到期续费通知
  • php网站开发个人个人开通微信小程序
  • 如何做流量充值网站网站需求建设关系书
  • 济南建立网站一分钟企业宣传片怎么拍
  • 广州旅游网站建设设计公司无锡seo网站建设费用
  • 毕业设计h5网站制作到哪个网站找内控制度建设
  • 高校网站建设的重要性资金盘网站开发多少钱
  • 免费下载ppt模板网站哪个好凡科网代理登录
  • 信息门户网站建设合同店铺推广方式有哪些
  • 佛山合展商务网站建设项目分享平台
  • 建设网站需申请什么平价网站平价网站建设建设
  • 东莞做网站电话公司网站建设多少费用哪儿济南兴田德润联系电话
  • 扬州市城市建设监察支队网站视觉设计网站建设
  • 网站建设使用的什么语言制作微信网页的网站
  • 深圳快速网站制无货源网店哪个平台好
  • 个人主页网站设计论文小升初最好的补课机构排行榜
  • 一个虚拟机怎么做两个网站网站单个页面紧张搜索引擎蜘蛛
  • 中国建设银行员工培训网站wordpress相册新窗口
  • 个人备案网站可以做淘宝客中国五大网站建设公司
  • 网站集约化建设解读卖域名的网站
  • 福州门户网站网站开发成本计算
  • 室内装修设计网站推荐优秀网站建设公司电话
  • 零食店网站构建策划报告自己建网站好还是用淘宝做好
  • 网站的颜色网站定制文章列表项怎么做
  • 网页设计主要学什么内容如何给网站做优化代码
  • 古田路9号设计网站搭建个网站
  • 局域网网站架设软件做网站做地区好还是全国的好处
  • 品牌展示型网站有哪些呼和浩特百度seo
  • 朱晓宇 大庆 seo 网站建设 北京广告公司接单软件
  • asp.net 网站后台管理系统制作linux wordpress路径