SQL基本原理及MySQL语句解析
2018-12-20 13:37:13 0 举报
AI智能生成
SQL基本原理及MySQL语句解析
作者其他创作
大纲/内容
数据库定义
创建数据库
SQL CREATE DATABASE
创建表
通过NOT NULL可以定义强制不接收空值
LastName varchar(255) NOT NULL
通过Unique可以定义强制单一值
通过CHECK可以创建列约束
通过Default约束,可以加入默认值
删除
DROP TABLE 表名称
DROP DATABASE 数据库名称
列操作
增加列
ALTER TABLE table_name ADD column_name datatype
删除列
ALTER TABLE table_name DROP COLUMN column_name
改变列的数据类型
ALTER TABLE table_name ALTER COLUMN column_name datatype
AUTO INCREMENT 字段
主键定义该字段
自动加1,更新时不用定义对应主键
Mysql
P_Id int NOT NULL AUTO_INCREMENT
SQL services
逻辑判断
if
聚合后数据过滤 &定义变量命名
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
排序Order by
降序DESC
升序ASC
默认
常用函数
时间
select now()
select date(now())
quarter,year,day,hour,minute等
时间加减法
date_add
day可以改为week、year
时间间隔
时间类函数(mysql)
NOW() \t返回当前的日期和时间
CURDATE() \t返回当前的日期
CURTIME() \t返回当前的时间
DATE() \t提取日期或日期/时间表达式的日期部分
EXTRACT() \t返回日期/时间按的单独部分
DATE_ADD() \t给日期添加指定的时间间隔
DATE_SUB() \t从日期减去指定的时间间隔
DATEDIFF() \t返回两个日期之间的天数
DATE_FORMAT() \t用不同的格式显示日期/时间
清洗类
嵌套函数+分组聚合
如果要有进一步计算变量
就要有嵌套函数
关联
join
select * from Students join Address on Students.addressId = Address.id
分支主题
Inner Join最常见,叫做内联接,可以缩写成Join,找的是两张表共同拥有的字段
Left Join叫做左联接,以左表(join符号前的那张表)为主,返回所有的行。如果右表有共同字段,则一并返回,如果没有,则为空
Right Join和Left Join没有区别,A Left Join B 等价于 B Right Join A。
Full Join叫做全联接,也叫做Full Outer Join,意思是不管有的没的,只要存在,就返回
A Full Join B = A Left Join B + A Right Join B - A Inner Join B
SQL基本原理及MySQL语句解析
SQL相关的练习题
LeetCode
SQL基本概念
SQL 对大小写不敏感
SQL 使用单引号来环绕文本值
语言分类
数据操作语言 (DML)
查询和更新指令构成了 SQL 的 DML 部分
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据
数据定义语言 (DDL)
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。定义索引(键),规定表之间的链接,以及施加表间的约束。
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
基础查询
select column from table
select * from DataAnalyst where city = '上海'
select * from DataAnalyst where (city = '上海' and positionName = '数据分析师') or (city = '北京' and positionName = '数据产品经理')
select * from DataAnalyst where companyId between 10000 and 20000
模糊查找
select * from DataAnalyst where positionName like '%数据分析%'
内建函数的通用用法
SELECT function(列) FROM 表
distinct
列出列中的不同值
SELECT DISTINCT 列名称 FROM 表名称
group by
类似数据透视表
情况一
含义是,按照firsttype列透视,数去重了之后的companyId列
distinct 是去重函数,distinct positionId 会只计算唯一的positionId个数
除了count。还有max,min,sum,avg等函数
情况二
select count(distinct companyId) from dataanalystutf group by firsttype
select的意思是结果显示那些列
这个语句依然可执行,就是没有firsttype列,只有数了
情况三
多维数据透视
Union
UNION 操作符用于合并两个或多个 SELECT 语句的结果集
UNION
SELECT column_name(s) FROM table_name1
SELECT column_name(s) FROM table_name2
UNION ALL
UNION只列不重复的值
视图(View)
特性
视图中的字段就是来自一个或多个数据库中的真实的表中的字段
我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表
视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据
创建视图
CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
通过Index相关指令创建索引
在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据
NULL
IS NULL 来查找 NULL 值
WHERE Address IS NULL
IS NOT NULL 来查找不是NULL值
固定形式
更新操作
INSERT INTO 语句
插入整行
制定列中插入
SQL UPDATE 语句 用于修改
更新一个值:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
后面的列名称指的是主键,用于定位到行
更新某一行中的若干值
SQL DELETE 语句
DELETE FROM 表名称 WHERE 列名称 = 值
DELETE FROM Person WHERE LastName = 'Wilson'
删除所有行
DELETE FROM table_name
但继续保持表的结构、索引
select into
一般用于备份
SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename
SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename
0 条评论
下一页