玩转MySQL(一)

数据库

数据库概念

数据库是用于存储和管理数据的仓库。 数据库是对大量的信息进行管理的高效的解决方案。

数据库英文单词为Database。简称 DB!它的存储空间很大,可以存放百万条、千万条、上亿条数据。由瑞典 MySQL AB 公司开发,后被 Oracle 公司收购。免费(6 版本之前)。

数据库作用

  1. 持久化存储数据的。其实数据库就是一个文件系统

  2. 方便存储和管理数据

  3. 使用了统一的方式操作数据库 -- SQL

数据库存储数据的特点

1、将数据放到表中,表再放到库中。

 2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。 ?

3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。 ?

4、表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似java 中的”属性” ?。

5、表中的数据是按行存储的,每一行类似于java中的“对象”。

MySQL

MySQL是一个轻量级关系型数据库管理系统。关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性。

由于分布式和集群的出现,MySQL也用于大型的网站上。

MySQL安装与配置

一、安装

1、打开下载的mysql安装文件mysql-5.5.40-win64.zip,双击解压缩,运行“setup.exe”。

玩转MySQL(一)

玩转MySQL(一)

2、选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,选择“Custom”,按“next”键继续。

玩转MySQL(一)

3、点选“Browse”,手动指定安装目录。

确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。

玩转MySQL(一)

 

 

 玩转MySQL(一)

 

 

 玩转MySQL(一)

 

 

 玩转MySQL(一)

4、正在安装中,请稍候,直到出现下面的界面, 则完成MYSQL的安装

玩转MySQL(一)

 

 

 二、配置

1、安装完成了,出现如下界面将进入mysql配置向导。

玩转MySQL(一)

2、选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。

玩转MySQL(一)

3、选择服务器类型,“Developer Machine(开发测试类,mysql占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)”

玩转MySQL(一)

4、选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),按“Next”继续。

玩转MySQL(一)

 

 

 5、选择网站并发连接数,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”。

玩转MySQL(一)

玩转MySQL(一)

 

 

6、是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器*问mysql数据库了,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。如果是新手,建议您取消标准模式以减少麻烦。但熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续

玩转MySQL(一)

 

 

 7、就是对mysql默认数据库语言编码进行设置(重要),一般选UTF-8,按 “Next”继续。

玩转MySQL(一)

 

 

8、选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword;”就可以了,不用指出mysql.exe的完整地址,很方便),我这里全部打上了勾,Service Name不变。按“Next”继续。

玩转MySQL(一)

 

 

9、询问是否要修改默认root用户(超级管理)的密码。“Enable root access from remote machines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。

玩转MySQL(一)

 

 

 10、确认设置无误,按“Execute”使设置生效,即完成MYSQL的安装和配置。

玩转MySQL(一)

 

 

 玩转MySQL(一)

MySQL彻底卸载

以下操作以Window7操作系统为例:

*1)停止window的MySQL服务。*

找到“控制面板”-> “管理工具”-> “服务”,停止MySQL后台服务。

玩转MySQL(一)

 

 

 

*2)卸载MySQL安装程序。*找到“控制面板”-> "程序和功能",卸载MySQL程序。

玩转MySQL(一)

*3)删除MySQL安装目录下的所有文件。*

*4)删除c盘ProgramDate隐藏目录中关于MySQL的目录。*

4.1 打开window系统的“显示隐藏文件”功能,以便查看到系统的所有隐藏文件

玩转MySQL(一)

4.1 找到ProgramData目录

玩转MySQL(一)

4.2 删除MySQL目录

玩转MySQL(一)

MySQL常见问题

1.MySQL忘记root密码的解决办法

1、 首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行,使用cmd,在dos命令窗口中输入如下命令: net stop mysql

2、再打开一个cmd窗口,使用cd命令,进入到mysql安装路径的bin目录,输入下列命令(敲回车后,保持窗口的状态,不要关闭该窗口,直接进行下面的步骤即可;):

/下面语句中的文件路径需要改成你自己的文件路径/ mysqld --defaults-file="D:\MyStudySoft\MySQL5\bin\my.ini" --console --skip-grant-tables

注释: 该命令通过跳过权限安全检查,开启mysql服务,这样连接mysql时,可以不用输入用户密码。

3、打开第二个cmd窗口,使用cd命令,进入到mysql安装路径的bin目录,输入下列命令: mysql -uroot -p

出现下面的提示时直接敲回车,不用输入密码: Enter password:

然后就就会出现登录成功的信息,

4、继续输入如下命令: use mysql;

5、输入如下命令更改root密码:

/下面语句中的newpassword需要改成你自己想要设置的密码/ UPDATE user SET Password=PASSWORD(‘newpassword‘) where USER=‘root‘;

6、输入如下命令刷新权限: FLUSH PRIVILEGES;

7、输入如下命令即可退出: quit

8、重新登录,测试是否修改成功: mysql -uroot -p

出现输入密码提示,输入新的密码即可登录:

Enter password: ***

显示登录信息: 成功 就一切ok了,如果不成功,从新执行第4-8步直到成功为止; 9、此时可以关闭所有的dos窗口了; 10、手动启动mysql的服务即可,正常使用了;(或在dos命令行输入:net start mysql 命令也可以实现启动mysql的服务!)

2.MySQL错误提示(10061)解决方法

MySQL ‘localhost‘ (10061)解决方法 1、首先检查MySQL 服务有没有启动》如果没有启动,则要启动这个服务,即可解决; 2、如果问题还是没有解决请尝试下面的步骤:

第一步: 删除MySQL安装路径下面的my.ini

第二步: 打开MySQL安装路径的\bin\winmysqladmin.exe 输入用户名 和密码

第三步: 在dos下 输入:mysqld-nt -remove

第四步: 在dos下接着输入:mysqld-nt -install

第五步: 在dos下接着输入:mysql

MySQL目录结构

-- bin:mysql相关的可执行文件*.exe
    │-- MySQLInstanceConfig.exe mysql的配置程序
-- data: mysql自带的数据库文件(不用关注)
-- include: c语言的头文件(不用关注)
-- lib: 存放mysql使用到的dll动态库(相当于jar包,不用关注)
-- my.ini mysql的配置文件,配置了mysql的相关信息

打开和关闭MySQL服务

玩转MySQL(一)

 

 

玩转MySQL(一)

登录MySQL的方式

玩转MySQL(一)

dos命令行登录和退出MySQL

登录格式1:登录本机的MySQL

    -- mysql -u用户名 -p密码 
-- 示例:mysql -uroot -proot

玩转MySQL(一)

后输入密码方式:(密码不可见安全一点)

mysql -uroot -p回车
下一行输入密码

登录格式2:登录远程的MySQL

    -- mysql –h远程主机的ip地址 -u用户名 -p密码 
-- 示例:mysql -h127.0.0.1 -uroot -proot

退出MySQL

    -- exit 或 quit或ctrl+C

SQLyog登录MySQL

玩转MySQL(一)

玩转MySQL(一)

SQLyog使用

玩转MySQL(一)

 

 

 

MySQL常见数据类型玩转MySQL(一)

SQL

SQL概念

SQL(Structured Query Language):结构化查询语言。其实就是定义了操作所有关系型数据库的一种规则。

SQL作用

通过SQL语句我们可以方便的操作数据库、表、数据。 SQL是数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。

玩转MySQL(一)

通用语法规则

SQL 语句可以单行或多行书写,以分号结尾 可使用空格和缩进来增强语句的可读性 MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写 单行注释:-- 注释内容 #注释内容(MySQL特有) 多行注释:/* 注释内容 */

SQL 分类

DDL (Data Definition Language) :数据定义语言。用来操作数据库,表,列等。 DML (Data Manipulation Language) :数据操作语言。用来对数据库中表的数据进行增删改。 DQL (Data Query Language) :数据查询语言。用来查询数据库中表的记录(数据)。 DCL (Data Control Language) :数据控制语言。用来定义数据库的访问权限和安全级别,及创建用户。

名称 解释 命令
DDL 定义和管理数据对象,如:数据库,数据表等 create,drop,alter
DML 用于操作数据库对象所包含的数据 insert,delete,update
DQL 用于查询数据库对象所包含的数据 select
DCL 用于管理数据库,包括管理权限和数据更改 grant,commit,rollback

DDL操作数据库和数据表

数据库、数据表、数据的关系

MySQL服务器中可以创建多个数据库 每个数据库中可以包含多张数据表 每个数据表中可以存储多条数据记录 客户端通过数据库管理系统来操作MySQL数据库

玩转MySQL(一)

DDL查询和创建数据库

--查询所有数据库
SHOW DATABASES;
--创建数据库
CREATE DATABASE 数据库名称;
--创建数据库(判断,如果不存在则创建)
CREATE DATABASE IF NOT EXISTS 数据库名称;
--创建数据库(指定字符集)
CREATE DATABASE 数据库名称 CHARACTER SET 字符集名称;
--查询数据库的创建语句
SHOW CREATE DATABASE 数据库名称;

具体操作:

  • 直接创建数据库db1

    CREATE DATABASE db1;

    玩转MySQL(一) 

  • 判断是否存在并创建数据库db2

    CREATE DATABASE IF NOT EXISTS db2; -- 如果不加判断那么本来存在(再创建)或者不存在(删除库时)对该数据库进行操作,会报错。

    玩转MySQL(一)

  • 创建数据库db3并指定字符集为gbk

    CREATE DATABASE db2 CHARACTER SET gbk;

    玩转MySQL(一)

  • 查看所有的数据库

玩转MySQL(一)
  • 查看某个数据库的定义信息

SHOW CREATE DATABASE 数据名;

玩转MySQL(一)

DDL修改、删除、使用数据库

--修改数据库(修改字符集)
ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;
--删除数据库
DROP DATABASE 数据库名称;
--删除数据库(判断,如果存在则删除)
DROP DATABASE IF EXISTS 数据库名称;
--使用数据库
USE 数据库名称;
--查看当前使用的数据库
SELECT DATABASE(); -- 这个select类似Java中的打印语句

玩转MySQL(一)

具体操作:

  • 将db3数据库的字符集改成utf8

    ALTER DATABASE db3 DEFAULT CHARACTER SET utf8;

     

删除数据库

DROP DATABASE 数据库名;
?
DROP: 删除

具体操作:

  • 删除db2数据库

    DROP DATABASE db2;

    玩转MySQL(一) 

具体操作:

  • 查看正在使用的数据库

    SELECT DATABASE();

    玩转MySQL(一) 

  • 使用db1数据库

    USE db1;

    玩转MySQL(一) 

DDL创建数据表

--创建数据表
CREATE TABLE 表名 (
        列名 数据类型,
        列名 数据类型,
        ...
        列名 数据类型
);
?
--常用数据类型
       int:整数类型
       double:小数类型
       varchar(长度):字符串类型
       date 表示日期类型 yyyy-MM-dd
-- 目标 : 创建一个school数据库
-- 创建学生表(列,字段)
-- 学号int 登录密码varchar(20) 姓名,性别varchar(2),出生日期(datatime),家庭住址,email
-- 创建表之前 , 一定要先选择数据库
?
CREATE TABLE IF NOT EXISTS `student` (
`id` int(4) NOT NULL AUTO_INCREMENT COMMENT ‘学号‘,
`name` varchar(30) NOT NULL DEFAULT ‘匿名‘ COMMENT ‘姓名‘,
`pwd` varchar(20) NOT NULL DEFAULT ‘123456‘ COMMENT ‘密码‘,
`sex` varchar(2) NOT NULL DEFAULT ‘男‘ COMMENT ‘性别‘,
`birthday` datetime DEFAULT NULL COMMENT ‘生日‘,
`address` varchar(100) DEFAULT NULL COMMENT ‘地址‘,
`email` varchar(50) DEFAULT NULL COMMENT ‘邮箱‘,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
?
CREATE TABLE ‘表名‘ (
‘字段名‘ 列类型 [属性] [索引] [注释],
   ‘字段名‘ 列类型 [属性] [索引] [注释],
   ‘字段名‘ 列类型 [属性] [索引] [注释]
)[表类型][字符集设置]
?
SHOW CREATE DATABASE student; -- 显示建数据库语句
SHOW CREATE TABLE student; -- 显示建表语句

DDL查询数据表

--查询所有的数据表
SHOW TABLES;
--查询表结构
DESC 表名;
--查看创建表的SQL语句
SHOW CREATE TABLE 表名;
--快速创建一个表结构相同的表(复制表结构)
CREATE TABLE 表名 LIKE 其他表;
?
--删除数据表
DROP TABLE 表名;
?
--删除数据表(判断,如果存在则删除)
DROP TABLE IF EXISTS 表名;

具体操作:

  • 查看MySQL数据库中的所有表

    SHOW TABLES;

    玩转MySQL(一)

  • 查看student表的结构

    DESC student;

    玩转MySQL(一)

  • 查看student的创建表SQL语句

    SHOW CREATE TABLE student;

    玩转MySQL(一)

具体操作:

  • 直接删除表s1表

    DROP TABLE s1;

    玩转MySQL(一)

  • 判断表是否存在并删除s1表

    DROP TABLE IF EXISTS s1;

    玩转MySQL(一) 

DDL 修改数据表

--修改表名
ALTER TABLE 表名 RENAME TO 新表名;
--修改表的字符集
ALTER TABLE 表名 CHARACTER SET 字符集名称;
--单独添加一列
ALTER TABLE 表名 ADD 列名 数据类型;
--修改某列的数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型;
--修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
--删除某一列
ALTER TABLE 表名 DROP 列名;
?
--规律: 所有的修改表结构的语句都是
ALTER TABLE 表名 XXX;
?

具体操作:

  • 为学生表添加一个新的字段remark,类型为varchar(20)

    ALTER TABLE student ADD remark VARCHAR(20);

    玩转MySQL(一)

修改字段类型

ALTER TABLE 表名 MODIFY 字段名 新类型;

具体操作:

  • 将student表中的remark字段的改成varchar(100)

    ALTER TABLE student MODIFY remark VARCHAR(100);

    玩转MySQL(一)

修改字段名

ALTER TABLE 表名 CHANGE 老字段名 新字段名 类型;

具体操作:

  • 将student表中的remark字段名改成intro,类型varchar(30)

    ALTER TABLE student CHANGE remark intro varchar(30);

    玩转MySQL(一)

     

     

     

删除字段

ALTER TABLE 表名 DROP 字段名;

具体操作:

  • 删除student表中的字段intro

    ALTER TABLE student DROP intro;

    玩转MySQL(一) 

修改表名

RENAME TABLE 表名 TO 新表名;

具体操作:

  • 将学生表student改名成student2,再删除student2表

     RENAME TABLE student TO student2;
    DROP TABLE student2;

    玩转MySQL(一)

修改表的字符集

ALTER TABLE 表名 DEFAULT CHARACTER SET 新字符集;

具体操作:

  • 将sutden2表的编码修改成gbk

    ALTER TABLE student2 character set gbk;

    玩转MySQL(一)

DDL规律

玩转MySQL(一)

DML表数据的增删改

DML新增表数据(增)

添加一条数据

    INSERT INTO `表名`(`字段1`,`字段2`,...) VALUES (值1,值2,...),(值1,值2,...),...

给全部列添加一条数据

    INSERT INTO 表名 VALUES (值1, 值2, …);

批量添加数据(一次加入多条数据)

    INSERT INTO 表名 VALUES (值1, 值2, …), (值1, 值2, …), (值1, 值2, …);

插入部分数据

只需要指定要插入数据的字段
INSERT INTO 表名 (字段名1, 字段名2...) VALUES (字段值1, 字段值2);

没有添加数据的字段会使用NULL

具体操作:

  • 插入部分数据,往学生表中添加 id, name, age, sex数据

INSERT INTO student (id, NAME, age, sex) VALUES (1, ‘张三‘, 20, ‘男‘);

玩转MySQL(一)

  • 向表中插入所有字段

    • 所有的字段名都写出来

    INSERT INTO student (NAME, id, age, sex, address) VALUES (‘李四‘, 2, 23, ‘女‘, ‘广州‘);

    玩转MySQL(一)

    • 不写字段名

    INSERT INTO student VALUES (3, ‘王五‘, 18, ‘男‘, ‘北京‘);

    玩转MySQL(一)

插入数据注意事项 值与字段必须对应,个数相同,类型相同值的数据大小必须在字段的长度范围内除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)如果要插入空值,可以不写字段,或者插入NULL

DML修改和删除表数据(改、删)

修改表中的数据

    UPDATE 表名 SET 列名1=值1, 列名2=值2, … [WHERE 条件];
-- 修改语句中必须加条件,如果不加条件,则会将所有数据都修改。

具体操作

  • 不带条件修改数据,将所有的性别改成女

    UPDATE student SET sex=‘女‘;

    玩转MySQL(一) 

  • 带条件修改数据,将id号为2的学生性别改成男

    UPDATE student SET sex=‘男‘ WHERE id=2;

    玩转MySQL(一)

  • 一次修改多个列,把id为3的学生,年龄改成26岁,address改成北京

    UPDATE student SET age=26, address=‘北京‘ WHERE id=3;

    玩转MySQL(一) 

删除表中的数据

    DELETE FROM 表名 [WHERE 条件];
-- 删除语句中必须加条件,如果不加条件,则会将所有数据都删除。

具体操作:

  • 带条件删除数据,删除id为3的记录

    DELETE FROM student WHERE id=3;

    玩转MySQL(一)

  • 不带条件删除数据,删除表中的所有数据

    DELETE FROM student;

    玩转MySQL(一)

DOS命令窗口操作数据乱码问题

当我们使用DOS命令行进行SQL语句操作如有有中文会出现乱码,导致SQL执行失败

玩转MySQL(一)

错误原因:因为MySQL的客户端设置编码是utf8,而系统的DOS命令行编码是gbk,编码不一致导致的乱码 

玩转MySQL(一)

 

 

 

解决方案:

  1. 快捷设置

    在DOS命令行输入:
    set names gbk; -- 让服务器使用GBK解码

注意:以上方式为临时方案,退出DOS命令行就失效了,需要每次都配置

  1. 修改MySQL安装目录下的my.ini文件,重启服务所有地方生效。此方案将所有编码都修改了[不建议] 玩转MySQL(一) 

DQL表数据的查询

DQL表数据查询-无条件查询

--查询指定字段的数据
SELECT 字段名1, 字段名2, 字段名3 FROM 表名;
--查询所有字段的数据
SELECT * FROM 表名;
--去除重复查询
SELECT DISTINCT 列名1 FROM 表名;
--计算列的值(四则运算)
SELECT 列名1 (+ - * /) 列名2 FROM 表名;
--起别名查询
SELECT 列名1 AS 别名1, 列名2 AS 别名2 FROM 表名;
--取别名时AS关键字可以省略
SELECT 列名1 别名1, 列名2 别名2 FROM 表名;--(用空格隔开)

具体操作:

SELECT id, NAME ,age, sex, address FROM student;

玩转MySQL(一)

使用*表示所有列

SELECT * FROM 表名;

具体操作:

SELECT * FROM student;

玩转MySQL(一)

查询student表中的name 和 age 列

SELECT NAME, age FROM student;

玩转MySQL(一)

别名查询

  1. 查询时给列、表指定别名需要使用AS关键字

  2. 使用别名的好处是方便观看和处理查询到的数据

    SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名; 

注意: AS关键字可以省略

具体操作:

  • 查询sudent表中name 和 age 列,name列的别名为”姓名”,age列的别名为”年龄”

SELECT NAME AS 姓名, age AS 年龄 FROM student;

玩转MySQL(一)

清除重复值

查询指定列并且结果不出现重复数据

SELECT DISTINCT 字段名 FROM 表名;

具体操作:

  • 查询address列并且结果不出现重复的address

SELECT DISTINCT address 城市 FROM student;

玩转MySQL(一)

 

 

查询结果参与运算

  1. 某列数据和固定值运算

    SELECT 字段名 + 值 FROM 表名;
  2. 某列数据和其他列数据参与运算

    SELECT 字段1 + 字段2 FROM 表名;

    注意: 参与运算的必须是数值类型

  3. 需求:

    • 添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩

    • 查询的时候将数学和英语的成绩相加

  4. 实现:

  • 修改student表结构,添加数学和英语成绩列

    ALTER TABLE student ADD math INT;
    ALTER TABLE student ADD english INT;
  • 给每条记录添加对应的数学和英语成绩

  •  玩转MySQL(一)

     

  • 查询math + english的和

    SELECT math + english FROM student;

    玩转MySQL(一)

    结果确实将每条记录的math和english相加,但是效果不好看

  • 查询math + english的和使用别名”总成绩”

    SELECT math + english 总成绩 FROM student;

    玩转MySQL(一) 

  • 查询所有列与math + english的和并使用别名”总成绩”

    SELECT *, math + english 总成绩 FROM student;

    玩转MySQL(一)

  • 查询姓名、年龄,将每个人的数学增加10分

    SELECT name, math + 10 FROM student;

DQL表数据查询-条件查询

select 
要查询的字段|表达式|常量值|函数
from
表名
where
条件 ;

准备数据

CREATE TABLE student3 (
id int,
name varchar(20),
age int,
sex varchar(5),
address varchar(100),
math int,
english int
);
?
INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (1,‘马云‘,55,‘男‘,‘杭州‘,66,78),(2,‘马化腾‘,45,‘女‘,‘深圳‘,98,87),(3,‘马景涛‘,55,‘男‘,‘香港‘,56,77),(4,‘柳岩‘,20,‘女‘,‘湖南‘,76,65),(5,‘柳青‘,20,‘男‘,‘湖南‘,86,NULL),(6,‘刘德华‘,57,‘男‘,‘香港‘,99,99),(7,‘马德‘,22,‘女‘,‘香港‘,99,99),(8,‘德玛西亚‘,18,‘男‘,‘南京‘,56,65);

比较运算符

符号 功能
> 大于
< 小于
<= 小于等于
>= 大于等于
= 等于
<>或!= 不等于

 

具体操作:

  • 查询math分数大于80分的学生

SELECT * FROM student3 WHERE math>80;

玩转MySQL(一)

  • 查询english分数小于或等于80分的学生

SELECT * FROM student3 WHERE english<=80;

玩转MySQL(一) 

  • 查询age等于20岁的学生

SELECT * FROM student3 WHERE age=20;

玩转MySQL(一)

  • 查询age不等于20岁的学生

SELECT * FROM student3 WHERE age!=20;
SELECT * FROM student3 WHERE age<>20;

玩转MySQL(一)

逻辑运算符

玩转MySQL(一)

具体操作:

  • 查询age大于35且性别为男的学生(两个条件同时满足)

SELECT * FROM student3 WHERE  age>35 AND sex=‘男‘;

玩转MySQL(一)

  • 查询age大于35或性别为男的学生(两个条件其中一个满足)

SELECT * FROM student333 WHERE age>35 OR sex=‘男‘;

玩转MySQL(一)

  • 查询id是1或3或5的学生

SELECT * FROM student3 WHERE id=1 OR id=3 OR id=5;

玩转MySQL(一)

范围

玩转MySQL(一)

in关键字 语法格式:

SELECT * FROM 表名 WHERE 字段名 IN (值1, 值2);

in里面的每个数据都会作为一次条件,只要满足条件的就会显示

具体操作:

  • 查询id是1或3或5的学生

SELECT * FROM student3 WHERE id IN (1,3,5);

玩转MySQL(一)

  • 查询id不是1或3或5的学生

SELECT * FROM student3 WHERE id NOT IN (1,3,5);

玩转MySQL(一)

范围

SELECT * FROM 表名 WHERE 字段名 BETWEEN 值1 AND 值2;

比如:age BETWEEN 80 AND 100 相当于: age>=80 && age<=100

具体操作:

  • 查询english成绩大于等于75,且小于等于90的学生

SELECT * FROM student3 WHERE english>=75 AND english<=90;
SELECT * FROM student3 WHERE english BETWEEN 75 AND 90;

玩转MySQL(一)

NULL的处理

玩转MySQL(一)

 

 

 模糊查询语法

SELECT * FROM 表名 WHERE 字段名 LIKE ‘通配符字符串‘;
/* MySQL通配符有两个:
%: 表示任意多个字符
_: 表示一个字符

具体操作:

  • 查询姓马的学生

SELECT * FROM student3 WHERE NAME LIKE ‘马%‘;

玩转MySQL(一)

  • 查询姓名中包含‘德‘字的学生

SELECT * FROM student3 WHERE NAME LIKE ‘%德%‘;

玩转MySQL(一)

  • 查询姓马,且姓名有三个字的学生

SELECT * FROM student3 WHERE NAME LIKE ‘马__‘;

玩转MySQL(一)

DQL表数据查询-排序查询

排序查询语法

    SELECT 列名列表 FROM 表名 [WHERE 条件] ORDER BY 列名 排序方式;
 /*排序方式:
    ASC: 升序
    DESC: 降序
   如果有多个排序条件,只有当前边的条件值一样时,才会判断第二条件。

单列排序就是使用一个字段排序

具体操作:

  • 查询所有数据,使用年龄降序排序

select * FROM student3 order by age DESC;

玩转MySQL(一)

 

 

上面的例子中,年龄是有相同的。当年龄相同再使用math进行排序

具体操作:

  • 查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩降序排序

SELECT * FROM student3 ORDER BY age DESC, math DESC;

 

 

 玩转MySQL(一)

 

 

执行顺序

玩转MySQL(一)

 

 

 

特点

1、 asc代表的是升序,可以省略,desc代表的是降序

2、 order by 子句可以支持 单个字段、别名、表达式、函数、多个字段

3、 order by 子句在查询语句的最后面,除了limit子句

玩转MySQL(一)

上一篇:centos 6 卸载自带MySQL


下一篇:Can't create test file /var/lib/mysql/mysqld_tmp_file_case_insensitive_test.lower-test