目录
MySQL安装以及相关工具
SQL分类
导入数据
最基本的SELECT语句
SELECT FROM
列的别名
去除重复行
着重号
查询常数
描述表结构
过滤数据(重要)
运算符
算数运算符
比较运算符
符号运算符
非符号运算符
逻辑运算符
位运算符
MySQL安装以及相关工具
MySQL
安装时会对mysql进行相关设置,例如用户及其密码,具体参见MySQL 安装 | 菜鸟教程
如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:
mysql -u root -p
按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:
Enter password:
可视化工具这里推荐 SQLyog、navicat
现在左上角建立连接,连接到自己的mysql,再进行操作
SQL分类
SQL语言在功能上主要分为如下3大类:
- DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。主要的语句关键字包括 CREATE 、 DROP 、 ALTER等。
- DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记录,并检查数据完整性。主要的语句关键字包括 INSERT 、 DELETE 、 UPDATE 、 SELECT等。SELECT是SQL语言的基础,最为重要。
- DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT等
导入数据
命令行输入:
source 路径.sql;
当然也可以直接把sql文件拖到数据库文件夹下
也可以使用SQLyog、navicat等可视化工具导入
最基本的SELECT语句
SELECT FROM
意为查询
SELECT 字段1,字段2 、、、 FROM 表名;
例如,在jobs表中选择所有列:
SELECT * FROM jobs;
在jobs表中查询 min_salary 和 max_salary 列
SELECT min_salary,max_salary FROM jobs;
列的别名
在查询操作中,可以给列取别名
有三种方式:
- 列名 别名
- 列名 as 别名
- 列名 ”别名“
SELECT min_salary mins,max_salary AS masx,job_id "id"
FROM jobs;
去除重复行
当某些列有很多重复的内容(例如每个人的部门编号)
而你只想看见不同的内容(一共有哪些部门),就需要去重:
SELECT DISTINCT department_id
FROM employees;
着重号
如果表名与mysql中的语句方法名冲突,就应该加着重号修饰 `xxx`
SELECT * FROM `order`
查询常数
在查询的语句中加入 常数,会自动填充此常数
SELECT 'lalala',department_id
FROM employees;
描述表结构
DESCRIBE employees;
包含了表的字段,数据类型,能否为空值等等信息
过滤数据(重要)
查询某些满足特定要求的数据,例如查询 部门编号为90的表数据
SELECT *
FROM employees
WHERE department_id=90
当然可以同时提交多个条件
SELECT *
FROM employees
WHERE department_id=90 AND last_name = 'king'
值得注意的是,windows下的mysql对大小写不敏感,例如这里写 king 和KING ,查询结果都是一样的,在某些情况下这是一个缺点。
运算符
算数运算符
举例:
- 一个整数类型的值对整数进行加法和减法操作,结果还是一个整数;
- 一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮点数;
- 加法和减法的优先级相同,进行先加后减操作与进行先减后加操作的结果是一样的;
- 在Java中,+的左右两边如果有字符串,那么表示字符串的拼接。但是在MySQL中+只表示数值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。(补充:MySQL中字符串拼接要使用字符串函数CONCAT()实现)
比较运算符
符号运算符
下面展示了一些特殊情况
- 100=100,最普通的情况
- 1=’1‘,sql存在隐式转换,转换为等号前面的数据类型
- 1=’a',0='a',若转换不成功,默认为0
- NULL不能用=比较,但是可以用<=>比较
非符号运算符
- is null , least (最小), greatest (最大)
- BETWEEN AND是包含两者的,即包含6000和8000
等价于
SELECT salary
FROM employees
WHERE salary >=6000 AND salary<=8000
- in , not in
等价于
SELECT department_id
FROM employees
WHERE department_id = 10 OR department_id = 20 OR department_id = 30
- like 模糊查询
例如查询 first_name中以字母a开头的数据
这里经常搭配 % 使用,表达不确定的个数
_表示不确定的一个字符,例如查询 第二个字母为a 的数据
SELECT first_name
FROM employees
WHERE first_name LIKE '_a%'
- REGEXP
REGEXP运算符用来匹配字符串
(1)‘^’匹配以该字符后面的字符开头的字符串。
(2)‘$’匹配以该字符前面的字符结尾的字符串。
(3)‘.’匹配任何一个单字符。
(4)“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
(5)‘*’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]*”匹配任何数量的数字,而“*”匹配任何数量的任何字符。
SELECT first_name
FROM employees
WHERE first_name REGEXP '^b'
逻辑运算符
位运算符
这里需要将数据转换为二进制数据进行 位运算
用的比较少,不赘述