DQL数据查询语言

数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
查询返回的结果集是一张虚拟表。查询关键字:SELECT

语法:

SELECT selection_list /*要查询的列名称*/
FROM table_list /*要查询的表名称*/
WHERE condition /*行条件*/
GROUP BY grouping_columns /*对结果分组*/
HAVING condition /*分组后的行条件*/
ORDER BY sorting_columns /*对结果分组*/
LIMIT offset_start, row_count /*结果限定*/

基础查询

查询所有的列

SELECT * FROM [表名];

查询指定的列

SELECT [列名1,列名2,...] FROM [表名];

条件查询

条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:

=、!=、<>、<、<=、>、>=;
BETWEEN…AND; 
IN(set);
IS NULL; IS NOT NULL
AND;
OR;
NOT; 

语法:

SELECT * FROM [表名] WHERE [条件];

模糊查询

模糊查询需要使用关键字LIKE
通配符:

  • _ 任意一个字符
  • %:任意0~n个字符

字段控制查询

去除重复记录

去除重复记录(两行或两行以上记录中系列的上的数据都相同),或者党激烈相同时去除改行记录。当只查询emp表的sal字段时,那么会出现重复记录,那么想去除重复记录,需要使用DISTINCT:

SELECT DISTINCT [列名]  FROM [表名];
SELECT DISTINCT [列名1],[列名2]  FROM [表名];

滤空函数

在进行计算时,需要对null值进行滤空操作(把空值当做0进行计算)关键字IFNULL

SELECT IFNULL([列名],0) FROM [表名];

给列名添加别名

SELECT [列名] AS [新列名] FROM [表名];

附录:(示例代码)

-- 查询所有列
SELECT * FROM stu;
-- 查询指定的列
SELECT sid,sname FROM stu;
-- 查询性别为女,并且年龄大于50
SELECT * FROM stu WHERE gender = "female" AND age>=50;
-- 查询学号为s_1001,S_1002,S_1003
SELECT *FROM stu WHERE sid IN('s_1001','S_1002','S_1003');
-- 查询学号不是s_1001,S_1002,S_1003
SELECT *FROM stu WHERE sid NOT IN('s_1001','S_1002','S_1003');
-- 查询学号为s_1001或者名字为liSi的
SELECT *FROM stu WHERE sid='s_1001' OR sname='liSi';
-- 查询年龄为null
SELECT * FROM stu WHERE age IS NULL;
-- 查询年龄不为null
SELECT * FROM stu WHERE age IS NOT NULL;
-- 查询年龄在20到40之间的学生记录
SELECT * FROM stu WHERE age BETWEEN 20 AND 40;
-- 查询性别非男的学生记录
SELECT * FROM stu WHERE gender!='male';
-- 查询姓名由5个字母构成,并且第5个字母为“i”的学生记录
SELECT * FROM stu WHERE sname LIKE '____i';
-- 查询姓名以“z”开头的学生记录
SELECT *FROM stu WHERE sname LIKE 'z%';
-- 查询所有的deptno(去掉重复的)
SELECT DISTINCT deptno  FROM emp;
-- 查询sal和comm不同的列
SELECT DISTINCT sal,comm FROM emp;
-- 查看雇员的月薪与佣金之和
SELECT IFNULL(comm,0)+deptno FROM emp;
-- 给列名添加别名
SELECT IFNULL(comm,0)+deptno AS total FROM emp;


  1. 查询表中的所有数据

    SELECT * FROM [表名];

  2. 插入数据

    语法: INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);

  3. 修改数据

    语法:UPDATE 表名 SET 列名1=列值1,列名2=列值2 ... WHERE 列名=值;

  4. 删除数据

    语法 : DELETE FROM 表名 [WHERE 列名=值];

  5. 使用truncate删除表中记录

    TRUNCATE TABLE 表名;

注意:

  • 在mysql中,字符串类型和日期类型都要用单引号括起来。
  • 插入数据时列名与列值的类型、个数、顺序要一一对应。可以把列名当做java中的形参,把列值当做实参。值不要超出列定义的长度。 如果插入空值,请使用null。插入的日期和字符一样,都使用引号括起来。

DELETE 和 TRUNCATE 的区别:

  • DELETE 删除表中的数据,表结构还在;删除后的数据可以找回。
  • TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。删除的数据不能找回。执行速度比DELETE快。

附录代码

CREATE TABLE emp(
id INT,
NAME VARCHAR(50),
gender VARCHAR(10),
birthday DATE,
entry_date DATE,
job VARCHAR(100),
salary DOUBLE,
RESUME VARCHAR(200)
);
-- 查询表中的数据
select * FROM emp;
-- 向emp表中插入数据
insert into emp(id,name,gender,birthday,entry_date,job,salary,resume)values(1,'tom','m','2017-10-01','20000','20180103','goodboys','fff');
insert into emp(id,name,gender,birthday,entry_date,job,salary,resume)values(2,'孙肖宁','m','2017-10-01','50000','20180103','goodboys','fff');
INSERT INTO emp VALUES(3,'tom','m','2017-10-01','20000','20180103','goodboys','fff');
-- 将所有人的工资修改为50000
update emp set salary = '50000';
-- 将孙肖宁的工资修改为100000
update emp set salary='100000' where name='孙肖宁';
-- 将tom的工资加1000
update emp set salary=salary+1000 where name = 'tom';
-- 删除id是3的数据
delete from emp where id=3;
SELECT * FROM emp;

创建表

create table 表名(
    字段1 字段类型,
    字段2 字段类型,
    ...
    字段n 字段类型
);

查看当前数据库中的所有表

SHOW TABLES;

查看表的字段信息

DESC [表名];

添加一个列

alter table [表名] add [列名] blob;

修改一个列

alter table [表名] modify [列名] [属性];

删除一个列,一次只能删除一列

alter table [表名] drop [列名];

对表进行重命名

rename table [原名] to [新名];

查看表的创建细节

show create table [表名];

修改表的字符集为gbk

ALTER TABLE [表名] CHARACTER SET gbk;

修改列名

ALTER TABLE user CHANGE [原名] [新名] [参数];

删除表

DROP TABLE [表名];

附录:常用数据类型:

  1. int:整型
  2. double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
  3. char:固定长度字符串类型; char(10) 'abc '
  4. varchar:可变长度字符串类型;varchar(10) 'abc'
  5. text:字符串类型;
  6. blob:字节类型;
  7. date:日期类型,格式为:yyyy-MM-dd;
  8. time:时间类型,格式为:hh:mm:ss
  9. timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
  10. datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

示例代码

--选择数据库
USE mydb1;
--查询数据库
SELECT DATABASE();
--创建一个员工表
CREATE TABLE emp(
id INT,
NAME VARCHAR(50),
gender VARCHAR(10),
birthday DATE,
entry_date DATE,
job VARCHAR(100),
salary DOUBLE,
RESUME VARCHAR(200)
);
--显示数据库中的所有表
SHOW TABLES;
--查看表的字段信息
DESC emp;
--在上面的员工表中添加一个image列
ALTER TABLE emp ADD image BLOB;
--修改job列,长度变成60
ALTER TABLE emp MODIFY job VARCHAR(60);
--删除列,一次只能删除一行
ALTER TABLE emp DROP image;
--把表的名称改为USER
RENAME TABLE emp TO USER;
--查看表的详细创建信息
SHOW CREATE TABLE USER;
--修改表的字符集为jbk
ALTER TABLE USER CHARACTER SET gbk;
--列名NAME改为username
ALTER TABLE USER CHANGE NAME username VARCHAR(100);
DESC USER;
--删除表
DROP TABLE USER;
SHOW TABLES; 

  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等; CREATE、 ALTER、DROP
  • DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据); INSERT、 UPDATE、 DELETE
  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
  • DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

SELECT

  • 注意:sql语句以;结尾

  • 按win+R键,输入运行cmd
  • 打开mysql -uroot -p[密码]
  • 修改mysql root用户密码
  • 停止mysql服务 运行输入services.msc 停止mysql服务或者net stop mysql
  • 在cmd下 输入 mysqld --skip-grant-tables 启动服务器 光标不动 (不要关闭该窗口)
  • 新打开cmd 输入mysql -u root -p 不需要密码 use mysql;update user set password=password('【新密码】') WHERE User='root';
  • 关闭两个cmd窗口 在任务管理器结束mysqld 进程
  • 在服务管理页面 重启mysql 服务

密码修改完成

启动MySQL数据库

net start mysql

关闭MySQL数据库

net stop mysql

连接MySQL数据库

mysql -h[ip地址] -r[用户名] -p[密码]

显示数据库

show databases;

选择数据库

use [数据库名];

创建数据库

create database [数据库名];

创建编码格式为gbk的数据库

create database [数据库名] character set gbk;

创建编码格式为gbk,字符校对gbk_chinese_ci为的数据库

Create database [数据库名] character set gbk COLLATE gbk_chinese_ci;

显示数据库数据库的定义信息

Show  create  database [数据库名];

删除数据库

Drop database [数据库名];

查看服务器中的数据库,并把mydb2的字符集修改为utf8;

alter database mydb2 character set utf8;

产看当前数据库

select database();

退出数据库

`exit`或者`quit`


代码实例

--创建数据库
CREATE DATABASE mydb1;
--显示所有数据库
SHOW DATABASES;
--创建一个使用gbk字符集的mydb2数据库
CREATE DATABASE mydb2 CHARACTER SET gbk;
--显示mydb2数据库的字符集
SHOW CREATE DATABASE mydb2;
--创建一个带字符校对的数据库mydb3
CREATE DATABASE mydb3 CHARACTER SET utf8 COLLATE utf8_general_ci;
--查看前面创建的数据库的定义信息
SHOW CREATE DATABASE mydb2;
--删除数据库
DROP DATABASE mydb3;
--修改mydb2的编码为utf8
ALTER DATABASE mydb2 CHARACTER SET utf8;
--切换数据库到mydb1;
USE mydb1;
--查看当前数据库
SELECT DATABASE();

为了提高网页的整体效果,在网页中往往需要,通过JavaScript引入百度地图,小编在这里整理了一下,希望可以帮到大家。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>引入百度地图</title>
    <!-- 引入百度地图 -->
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>
</head>
<body>
      <div id="contactinformation">
   <!--地图-->
            <div id="mapCanvas" class="map-canvas no-margin" style="height: 450px; width: 450px">
            <script type="text/javascript">
                var map = new BMap.Map("mapCanvas"); // 创建Map实例
                var point = new BMap.Point("116.3119450000", "39.9891970000"); // 创建点坐标
                map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别。
                map.enableScrollWheelZoom(); //启用滚轮放大缩小
                //添加缩放控件
                map.addControl(new BMap.NavigationControl());
                map.addControl(new BMap.ScaleControl());
                map.addControl(new BMap.OverviewMapControl());

                var marker = new BMap.Marker(point); // 创建标注
                map.addOverlay(marker); // 将标注添加到地图中
                var infoWindow = new BMap.InfoWindow("小宁博客<br/><span class=''>小宁博客</span>"); // 创建信息窗口对象
                marker.openInfoWindow(infoWindow);
            </script>
        </div>
        <!--地图-->

        </div>
</body>
</html>

第一步:下载Ueditor1.4.3

下载之后重命名为ueditor ,并放到项目的public目录下

第二步:引入

在视图文件里引入一下js文件

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>//也可以引用本地的
<js file="__ROOT__/Public/Ueditor/ueditor.config.js"/>  
<js file="__ROOT__/Public/Ueditor/ueditor.all.min.js"/>  
<js file="__ROOT__/Public/Ueditor/lang/zh-cn/zh-cn.js"/>  
<script type="text/javascript" charset="utf-8">  
   window.UEDITOR_HOME_URL = "__PUBLIC__/Ueditor/";  
    $(document).ready(function () {  
      UE.getEditor('info', {  
      initialFrameHeight: 500,  
      initialFrameWidth: 1100,  
      serverUrl: "{:U(MODULE_NAME.'/Index/save_info')}"  
    });  
  });    
</script>

在需要编辑器的地方写入以下代码

<textarea name="info" id="info" style="width:1024px;height:500px;"></textarea>  

第三步:控制器

在控制器中放入以下代码

public function save_info(){  
   $ueditor_config = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "",     file_get_contents("./Public/Ueditor/php/config.json")), true);  
        $action = $_GET['action'];  
        switch ($action) {  
            case 'config':  
                $result = json_encode($ueditor_config);  
                break;  
                /* 上传图片 */  
            case 'uploadimage':  
                /* 上传涂鸦 */  
            case 'uploadscrawl':  
                /* 上传视频 */  
            case 'uploadvideo':  
                /* 上传文件 */  
            case 'uploadfile':  
                $upload = new \Think\Upload();  
                $upload->maxSize = 3145728;  
                $upload->rootPath = './Public/Uploads/';  
                $upload->exts = array('jpg', 'gif', 'png', 'jpeg');  
                $info = $upload->upload();  
                if (!$info) {  
                    $result = json_encode(array(  
                            'state' => $upload->getError(),  
                    ));  
                } else {  
                    $url = __ROOT__ . "/Public/Uploads/" . $info["upfile"]["savepath"] . $info["upfile"]['savename'];  
                    $result = json_encode(array(  
                            'url' => $url,  
                            'title' => htmlspecialchars($_POST['pictitle'], ENT_QUOTES),  
                            'original' => $info["upfile"]['name'],  
                            'state' => 'SUCCESS'  
                    ));  
                }  
                break;  
            default:  
                $result = json_encode(array(  
                'state' => '请求地址出错'  
                        ));  
                        break;  
        }  
        /* 输出结果 */  
        if (isset($_GET["callback"])) {  
            if (preg_match("/^[\w_]+$/", $_GET["callback"])) {  
                echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')';  
            } else {  
                echo json_encode(array(  
                        'state' => 'callback参数不合法'  
                ));  
            }  
        } else {  
            echo $result;  
        }  
    }  

注意:文件默认目录为"Public/Uploads",如果没有就自己创建,也可以自己修改。

关闭apache的开机启动

  • 安装sysv-rc-conf

    sudo apt-get install sysv-rc-conf

  • 运行sysv-rc-conf

    sudo sysv-rc-conf

将apache2服务对应的开机启动全部去掉(即运行级别2345的都去掉)
如下图
2017-12-14 07-54-38屏幕截图.png

  • 按q保存退出

关闭apache的开机启动

  • 执行如下命令即可:

    sudo update-rc.d mysql disable

第一步:下载Page.class.php

把下载后的Page.class.php放入ThinkPHP/Extend/Library/ORG/Util/(如果该目录不存在就手动去创建)。

第二步:控制器

 

  $User = M('Goods');//实例化Goods数据对象  Goods是你的表名
  //p是前台传值过来的参数,也就是页码
    if($_GET['p']==NULL){
        $p=1;
    }else{
        $p=$_GET['p'];
    }
    $list = $User->order('id')->page($p.',10')->select();// 查询满足要求的总记录数
    $this->assign('list',$list);// 赋值数据集
    $count = $User->count();
    $Page = new \Think\Page($count,10);
    $show = $Page->show();
    $this->assign('page',$show);
    $this->display();

第三步:视图

<div class="result page">{$page}</div>

第四步:css

引入的样式小编感觉不是很好看,所以进行了一下美化,想要的童鞋可以拿走哦

.page{
    padding-top: 20px;
    padding-bottom: 15px;
    text-align: center;
    clear: both;
}
.num,.current,.prev,.next{
background-color: rgb(255, 255, 255);
border-bottom-color: rgb(226, 226, 226);
border-bottom-style: solid;
border-bottom-width: 0.666667px;
border-image-outset: 0;
border-image-repeat: stretch stretch;
border-image-slice: 100%;
border-image-source: none;
border-image-width: 1;
border-left-color: rgb(226, 226, 226);
border-left-style: solid;
border-left-width: 0.666667px;
border-right-color: rgb(226, 226, 226);
border-right-style: solid;
border-right-width: 0.666667px;
border-top-color: rgb(226, 226, 226);
border-top-style: solid;
border-top-width: 0.666667px;
box-sizing: content-box;
color: rgb(51, 51, 51);
display: inline-block;
font-family: Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif;
font-feature-settings: normal;
font-kerning: auto;
font-language-override: normal;
font-size: 12px;
font-size-adjust: none;
font-stretch: normal;
font-style: normal;
font-variant: normal;
font-variant-alternates: normal;
font-variant-caps: normal;
font-variant-east-asian: normal;
font-variant-ligatures: normal;
font-variant-numeric: normal;
font-variant-position: normal;
font-weight: 400;
height: 28px;
line-height: 28px;
margin-bottom: 5px;
margin-left: 0px;
margin-right: -1px;
margin-top: 0px;
padding-bottom: 0px;
padding-left: 15px;
padding-right: 15px;
padding-top: 0px;
position: relative;
text-align: left;
vertical-align: middle;
-moz-border-bottom-colors: none;
-moz-border-left-colors: none;
-moz-border-right-colors: none;
-moz-border-top-colors: none;
}
.current{
    background:orange;
}