时间:2018-07-31
作者:魏文应
一、SQL的语言分类
SQL主要由下面四类组成:
英文名称 | 中文名称 | 举例 |
---|---|---|
DQL(Data Query Language) | 数据查询语言 | select |
DML(Data Manipulate Language) | 数据操作语言 | insert 、update、delete |
DDL(Data Define Languge) | 数据定义语言 | create、drop、alter |
TCL(Transaction Control Language) | 事务控制语言 | commit、rollback |
MySQL数据库结构
-
数据表(Table): 简称表,由一组数据记录组成,数据库中的数据是以表为单位进行组织的。一个表是一组相关的按行排列的数据;每个表中都含有相同类型的信息。表实际上是一个二维表格,例如,一个班所有学生的考试成绩,可以存放在一个表中,表中的每一行对应一个学生,这一行包括学生的学号,姓名及各门课程成绩。
-
记录(Record): 表中的每一行称为一个记录,它由若干个字段组成。
-
字段(Field): 也称域。表中的每一列称为一个字段。每个字段都有相应的描述信息,如数据类型、数据宽度等。
二、IDE环境配置
我们在编写代码时,习惯使用一个IDE工具。这里学习SQL语言,我使用SQLyog这个IDE工具。MySQL是一种C/S架构,所以,MySQL有server端,而SQLyog在这里充当client客户端。使用SQLyog IDE工具,windows下傻瓜式安装就可以了。安装完点击新建连接,然后输入对应的信息,连接数据库:
- 新建连接
如果连接时,提示类似下面的错误:
Client does not support authentication protocal requested by server; consider upgrading MySQL client
那么,需要配置一下mysql。这个配置很简单:
- 打开cmd终端命令行。
- 在cmd中登陆mysql :
mysql 【-h主机名 -P端口号 】-u用户名 -p密码
。 - 登陆mysql以后,命令:
use mysql
。 - 设置root用户登陆 :
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'weiwenying';
,其中 weiwenying 是密码,根据你自己情况设定。 - 最后,执行下面命令
FLUSH PRIVILEGES;
。
然后重新连接,就可以登录连接成功了:
- 登录连接成功
sql文件导入到SQLyog
如何将写好的sql文件导入SQLyog中呢? 选择用户 -> 右键 -> 执行SQL脚本 -> 选择脚本 -> 点击执行 -> 点击完成 -> 点击刷新,这样就执行了已有的脚本了。
- 导入sql文件并刷新
代码运行,应该在左侧点击选中你要操作的库,然后点击运行,如果是运行多条语句,要点击 两个三角形 的那个图标。如果只想 运行 其中某个语句,可以使用鼠标选中你希望执行的代码,再点击运行:
- 代码运行
三、DQL语言
DQL时SQL的组成部分,主要用于 数据查询 操作。
SELECT 关键字
select 关键字,就是用于数据查询的,它的语法如下:
select 想要查询的东西 from 查询的位置;
最终的效果,就类似于 System.out.println("打印东西");
然后打印出我们要查询的内容。
# 都在myemployess中的库
USE myemployees;
# 查询表中的单个字段
SELECT last_name FROM employees;
# 查询表中的多个字段
SELECT last_name,salary,email FROM employees;
SELECT
`employee_id`,
`first_name`,
`last_name`,
`email`,
`phone_number`
FROM
employees ;
SELECT * FROM employees;
在SQL语言中使用 /* */
进行 多行注释,使用 #
进行 单行注释 。
select 关键字,用于查询一个 table 中的列表:SELECT 字段 from 表名
。有以下用法:
用法 | 举例 | 说明 |
---|---|---|
查询表中的单个字段 | SELECT last_name FROM employees; |
|
查询表中的多个字段 | SELECT last_name,salary,email FROM employees; |
|
查询常量 |
SELECT 100; 、SELECT 'john';
|
|
查询表达式 | SELECT 100%98; |
|
查询函数 | SELECT VERSION(); |
查看当前mysql版本 |
去重显示 | SELECT DISTINCT department_id FROM employees; |
使用了 distinct 关键字,去除重复的值 |
起别名 | SELECT 100%98 AS 结果; |
as 关键字,给 100%98 起了一个叫做 结果 的名。 |
起别名 | SELECT 100%98 结果; |
直接空格,默认就是其别名,和上面的使用AS的效果一样。 |
加号 +
加号 +
表示的是两个数相加:
SELECT 10 + 1;
字符型和数值型相加时,字符型会转换成数值型:
SELECT '123' + 90; # 其值和 SELECT 123 + 90; 一样
如果 字符转换失败,其值为0:
SELECT 'john' + 90; # 转换失败,则将字符型转换为0
只要其中一个为 null ,其结果必为 null :
SELECT NULL + 90; # 只要有null,其结果必为null
CONCAT 连接函数
如果想将两个字符连接成一个字符,那么可以使用concat函数:
SELECT
CONCAT(`last_name`, `first_name`) AS 姓名
FROM
employees;
条件查询
条件查询语法:
select
字段
from
表名
where
筛选条件;
上面执行顺序依次是 from
-> where
-> select
, 先确定查询的是哪个表,再确定筛选条件,最后根据条件查询列表。条件查询可以有以下分类:
-
按条件表达式筛选: 使用条件运算符
> 大于号 < 小于号 = 等于号 != 不等于 <> 不等于(推荐使用这个) >= 大于等于 <= 小于等于
-
按逻辑表达式筛选: 使用逻辑运算符
& 与 || 或 ! 非 and 与(推荐使用这种方式) or 或(推荐使用这种方式) not 非(推荐使用这种方式)
-
模糊查询:
like beteen and in is null
比如下面是使用 条件表达式 的例子:
SELECT
*
FROM
employees
WHERE
salary > 12000;
salary 大于 12000 的 record(记录) 将会被查询出来。下面是使用 逻辑表达式 的例子:
/* 查询工资在10000到20000之间的员工姓名、工资、奖金。*/
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE
salary >= 10000 AND salary <= 20000;
还可以有多个逻辑条件:
/* 查询:部门编号不在90~110之间,或者工资高于15000的员工信息。*/
SELECT
*
FROM
employees
WHERE
NOT(department_id >= 90 OR department_id <= 110) OR salary > 15000;
下面是使用 模糊查询 的例子:
/* 查询 last_name中有a的 record */
SELECT
*
FROM
employees
WHERE
last_name LIKE '%a%';
模糊查询通常和 通配符 配合使用。
网友评论