MYSQL基本语句

  1. 导入示例数据库
    教程

  2. SQL是什么?MySQL是什么?
    2.1 SQL
    SQL(/ˈsiːkwəl/,Structured Query Language,结构化查询语言),用于管理关系数据库管理系统(RDBMS),或在关系流数据管理系统(RDSMS)中进行流处理。
    SQL的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
    SQL在1986年成为美国国家标准学会(ANSI)的一项标准,在1987年成为国际标准化组织(ISO)标准。虽然有这一标准的存在,但大部分的SQL代码在不同的数据库系统中并不具有完全的跨平台性。
    2.2 MySQL
    MySQL原开发者为瑞典的MySQL AB公司,该公司于2008年被Sun Microsystems收购。2009年,Oracle收购Sun Microsystems。
    特点:开源 ;关系型;规模小、功能有限。

  3. 查询语句 SELECT FROM
    3.1 语句解释
    从表中选择数据

SELECT attribute_name, ...
FROM table_name

3.2 查重语句

SELECT
	attribute_name
FROM
 	table_name
GROUP BY
  	attribute_name
HAVING
  	COUNT(attribute_name) > 1;

3.3 前N个语句

SELECT *
FROM table_name
ORDER BY attribute_anme DESC
LIMIT n 
OFFSET n

3.4 CASE…END判断语句

CASE 
  WHEN 条件1 THEN 结果1
  WHEN 条件2 THEN 结果2
  WHEN 条件3 THEN 结果3
  .........
  WHEN 条件N THEN 结果N
END
  1. 筛选语句 WHERE
    4.1 语法
SELECT attribute_name
FROM table_name
WHERE attribute_name operator value

属性名不要求相同。

4.2 运算符/通配符/操作符
operator 描述
= 等于
<> 不等于

大于
< 小于
= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式

  1. 分组语句 GROUP BY

5.1 语句解释
GROUP BY语句根据一个或多个列对结果集进行分组。

SELECT attribute_name
FROM table_name
WHERE attribute_name operator value
GROUP BY attribute_name

属性名不要求相同。

5.2 HAVING子句
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
示例:

SELECT attribute_name, aggregate_function(attribute_name)
FROM table_name
WHERE attribute_name operator value
GROUP BY attribute_name
HAVING aggregate_function(attribute_name) operator value
  1. 排序语句 ORDER BY
    ORDER BY语句用于根据指定的列对结果集进行排序。默认按照升序,添加DESC关键字可改成降序。

6.1 正序、逆序
SQL默认按照升序(ASC),添加DESC关键字可改成降序。

  1. 函数

7.1 时间函数
dayofweek():返回date为星期几,odbc标准,周天为1
weekday():返回date为星期几
dayofmonth():月中第几日
dayofyear():年中第几日
month():返回月份
dayname():星期英文名
monthname():月份英文名
quarter():一年的第几个季度
week(date,first):为一年的第几周,default:first:=0,周日开始,1为从周一开始…
year():返回年份
hour():返回小时
minute():返回分钟
second():返回秒数
period_add():增加月份
period_diff():相差的月份
date_add(date,interval expr type):增加对应的时间单位
date_sub(date,interval expr type):减去对应的时间单位
date_format():字符串格式化date
now():返回当前datetime
curdate():当前date
curtime():当前time

7.2 数值函数

abs(x):绝对值
ceil(x):大于数值的最大整数
floor(x):小于数值的最大整数
mod(x, y):取余
rand():[0,1)区间的随机小数
round(x, y):返回参数x四舍五入后的有y位小数的结果
truncate(x, y):返回参数x截断为y位小数的结果

7.3 字符串函数

concat():连接字符串
insert():替换子串内容
lower():所有字母小写
upper():所有字母大写
left():返回最左边的字符
right():返回最右边的字符
lpad():最左端填充n个长度的字符串
rpad():最右端填充n个长度的字符串
ltrim():去左边空格
rtrim():去右边空格
trim():去左右空格
repeat():返回重复n次的字符串
replace():替换子串内容
strcmp():比较两个字符串
substring():取子串

  1. SQL注释

SQL语句中的单行注释使用–,多行注释采用//

  1. SQL代码规范

SQL编程格式的优化建议
SQL Style Guide

  1. 作业

10.1 查找重复的电子邮箱(难度:简单)

创建表,表名accounts。再输入records。

CREATE TABLE email (
ID INT NOT NULL PRIMARY KEY,
Email VARCHAR(255)
);

INSERT INTO email VALUES('1','a@b.com');
INSERT INTO email VALUES('2','c@d.com');
INSERT INTO email VALUES('3','a@b.com');

查重

SELECT Email 
FROM accounts
GROUP BY Email
HAVING COUNT(Email)>1;

10.2 查找大国

建表,表名world。再输入records。

CREATE TABLE World (
name VARCHAR(50) NOT NULL,
continent VARCHAR(50) NOT NULL,
area INT NOT NULL,
population INT NOT NULL,
gdp INT NOT NULL
);

INSERT INTO World
  VALUES('Afghanistan','Asia',652230,25500100,20343000);
INSERT INTO World 
  VALUES('Albania','Europe',28748,2831741,12960000);
INSERT INTO World 
  VALUES('Algeria','Africa',2381741,37100000,188681000);
INSERT INTO World
  VALUES('Andorra','Europe',468,78115,3712000);
INSERT INTO World
  VALUES('Angola','Africa',1246700,20609294,100990000);

查找大国(条件:国家的面积超过300万平方公里,或者(人口超过2500万并且gdp超过2000万))

SELECT  name, population, area
FROM  world
WHERE  area > 3000000 OR (population > 25000000 and GDP > 20000000);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值