MySQL:基础

数据库对于编码来说是非常重要的,可以说任何地方都离不开数据库。
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.逻辑运算符:andornot.用法和编程语言上的一样。
	也兼容&&|| ,! 
	
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...),不能用来检测是否等于nullis只能检测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 表名;		#查询表内的所有列

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值