数据库对于编码来说是非常重要的,可以说任何地方都离不开数据库。
MySQL视频
SQL语言不区分大小写。
此处仅是记录一下我自己总结的简单语句,并不一定能解答您的疑惑哦。
1.查询select,类似于Java的system.out.println()
基本操作
select 100;
select 100*3;
select * from employees;
select employer_id,first_name from employees;
如果一行代码写的太长,则可以按F12自动排版
2.基础查询
显示employees表内的employer_id那一列。
` `表示强调符,如果表名或者列名与特殊字相同时需要用起符号
select employer_id from `employess`;
起外号,类似于C语言内的typedef
select employer_id as "员工编号" from employees;
起的外号如果不含特殊字符(空格),则可以不用引号,否则需要用单引号或者双引号括起来。
3.合成列。
把一个的表两列和一块
mysql内加号的用处
若+两边都是数,则结果为数
若+两边一侧为字符型数据,一边为数,则强制把字符型数据转换为数字,无法转换的话就转换为0.
若其中一个或者两个都为null,则结果也为null。
合并错误写法,输出结果会为0.
SELECT first_name+last_name AS "姓名" FROM `employees`;
正确写法,如果其中有null,则结构还是为null
SELECT CONCAT(`first_name`,`last_name`) AS "姓名" FROM employees;
如果不想直接显示null,则可以用ifnull(str1,str2)函数,如果值为null,str2,否则显示str1。(str1为表内的一个表头,str2可以为一个字符串,例如:"此处为空")
SELECT IFNULL(last_name,"空") FROM employees;
只显示表内不同的元素,相同的元素不显示,类似于集合。
SELECT DISTINCT `department_id` AS 部门编号 FROM employees;
查看表的结构,两种语句效果一样。
DESC employees;
SHOW COLUMNS FROM employees;
4.条件查询
基础语句
select emplayer_id
from emoloyees
where ....;
先执行from后面的,再执行where后面的,然后设select后面的。
where后面跟的就是条件查询的语句,返回值只能为boolean型。
1.关系运算符: < , > , <= , >= , =(等于) , <>(不等于) , <=>(安全等于) 下面会简单介绍。.不过多说。
对于不等号,可以用!=
2.逻辑运算符:and , or , not.用法和编程语言上的一样。
也兼容&& , || ,!
3.模糊查询:like , in , between and , is null.
(1) like,( 下划线_代表一个字符,百分号%代表未知个字符,范围为0~n)
SELECT `first_name` FROM `employees` WHERE `first_name` LIKE "_a%";
SELECT `last_name` FROM `employees` WHERE `last_name` LIKE "%$_%" ESCAPE "$";
escape是用来定义一个转义字符,此字符后面的_不代表关键字,仅是一个字符。不一定非要用$,理论上可以用任意其他符号。
(2) in,(查询是否在自己定义的一个列表内,类似于python中的in)
SELECT `salary` FROM `employees` WHERE `salary` IN (10000,24000);
SELECT `salary` FROM `employees` WHERE `salary` NOT IN (10000,24000);
(3) between and(查询是否在某个区间内,注意区间要合逻辑,小点的数在前,大的数在后)
SELECT `salary` FROM `employees` WHERE `salary` BETWEEN 9000 AND 20000;
SELECT `salary` FROM `employees` WHERE `salary` NOT BETWEEN 9000 AND 20000;
(4) is null(检测值是否为null)
SELECT `commission_pct` FROM `employees` WHERE `commission_pct` IS NOT NULL;
SELECT `commission_pct` FROM `employees` WHERE `commission_pct` IS NULL;
这里is不能用=代替。=只能用来检测常规数值(1,2,3,1.2,2.4...),不能用来检测是否等于null,is只能检测null,不能检测常规数值。安全等于<=>则常规数值,null都能检测。
5.排序查询:
基础语句
select ...
from ...
where ... (可以没有)
order by ...;
order by 语句后面跟的可以是单个列名,多个列名,函数表达式,计算式,列号。
asc是正序,desc是倒序,默认的是正序。
1.单个列名:
select salary
from employees
where salary>10000
order by salary;
可以用别名:
select salary 薪水
from employees
where salary>10000
order by 薪水 desc;
2.多个列名(规则:先按第一个写出来的排序,第一个相同的话,则按第二个排序,以此类推)
select salary,employ_id
from employees
where employ_id between 100 and 200
order by salary,employee;
3.按函数返回值查询
select first_name
from employees
where first_name like("%a%")
order by length(first_name);
4.按表达式结果查询
select salary
from employees
where employee_id in (123,124,125)
order by salary*12;
5.按列号查询
select first_name
from employees
where salary_bite is null
order by 3; 按照第三行排序
6.分组查询
分组查询需要用到分组函数
语句:
group by(有where的话,写在where后面,写在having前面。where不能跟分组函数,having可以跟)
用where的话是分组前的筛选,此时还未分组不能用分组函数
用having的话是分组后的筛选,可以用分组函数,间下面的例子
特点:
查询分组函数和被分组的字段,不适合查询分组范围外的东西。
group by后面不只能写一个分组,可以写多个,然后这多个属性相同的才为一组,只要有一个不相同,就不是同一组
例:
查询哪个部门的员工个数大于5
SELECT `department_id`
FROM employees
GROUP BY `department_id`
HAVING COUNT(*)>5;
SQL99语法:对比前面有一些小变动
select 查询列表
from 表名1 别名 join 表名2 别名 ...... join代替了之前的逗号
on 连接条件 将筛选条件和链接条件分离
where 筛选条件
group by 分组
having 分组后筛选
order by 排序;
执行顺序
1.from
2.where
3.group by
4.having
5.select
6.order by
SELECT DATABASE(); #查询此时在哪个数据库内
SELECT VERSION(); #查询数据库软件版本
select user(); #查询此时用户名
SHOW DATABASES; #显示当前帐户下的所有数据库
SHOW TABLES; #显示当前库中的所有表
SHOW TABLES from 库名; #查询这个库中的所有表
SHOW COLUMNS FROM 表名; #查询表内的所有列