SlideShare a Scribd company logo
1 of 24
SQL基础培训
目录 
• 数据库与SQL 
• 数据定义语言(DDL) 
• 数据操作语言(DML) 
• 函数概览 
• 索引初步 
• 代码风格
数据库与SQL 
• 名词释义 
– 数据库 
– 关系型数据库 
– 关系型数据库管理系统(RDBMS) 
– 结构化查询语言(SQL) 
• SQL可以用来? 
– 定义数据库结构 
– 查询和修改数据 
– 控制访问权限 
– 编程
常见的关系型数据库产品
库表结构- 类比Excel
库表结构- Navicat
建库建表 
• 创建和删除数据库 
– CREATE DATABASE dw_db; 
– DROP DATABASE dw_db; 
• 创建表 
– CREATE TABLE dw_db_temp.soj_dtl ( 
log_time DATETIME, 
page_id INT, 
guid CHAR(32) 
) ENGINE=MyISAM;
建表语句解析 
• 合法的表名、字段名和索引名: 
– 数字、字母、下划线、美元符号; 
– 可以使用反撇号“`”括起; 
– 表名对大小写敏感,字段名不敏感; 
• 字段类型 
– 数值型:INT,FLOAT,DECIMAL 
– 字符型:CHAR ,VARCHAR ,TEXT 
– 日期型:DATETIME ,TIMESTAMP
建表语句解析 
• 空值和默认值 
– page_id INT NOT NULL DEFAULT 0 
• 存储引擎 
– ENGINE=MyISAM 
– ENGINE=InnoDB 
– ENGINE=BRIGHTHOUSE 
• 编码格式 
– CHARACTER SET=utf8 
• 表注释、字段注释 
– COMMENT ‘页面ID’
建表语句解析 
• 忽略已存在的表 
– CREATE TABLE IF NOT EXISTS soj_dtl (…); 
• 创建临时表 
– CREATE TEMPORARY TABLE soj_dtl (…); 
• 复制表结构 
– CREATE TABLE soj_dtl LIKE soj_dtl_template; 
• 将查询结果保存为表 
– CREATE TABLE soj_dtl AS 
SELECT * FROM soj_dtl WHERE page_id != 0;
表的其他操作 
• 删除表 
– DROP TABLE IF EXISTS soj_dtl; 
• 清空表 
– TRUNCATE TABLE soj_dtl; 
– 等价于DROP + CREATE 
• 重命名 
– RENAME TABLE soj_dtl TO soj_dtl_old;
表的其他操作 
• 修改表结构 
– ALTER TABLE soj_dtl ADD COLUMN url VARCHAR(255); 
– ALTER TABLE soj_dtl CHANGE COLUMN url long_url 
VARCHAR(500); 
– ALTER TABLE soj_dtl DROP COLUMN long_url; 
• 索引 
• 自增ID 
– id INT AUTO_INCREMENT PRIMARY KEY 
• 记录更新时间 
– ON UPDATE CURRENT_TIMESTAMP
插入数据 
• 使用INSERT INTO插入单条或多条记录 
– INSERT INTO soj_dtl (log_time, page_id, guid) 
VALUES (NOW(), 1, ‘AAA’), (NOW(), 2, ‘BBB’); 
• 将查询结果插入表 
– INSERT INTO soj_dtl SELECT * FROM soj_dtl_old; 
• 使用LOAD DATA批量导入数据 
– LOAD DATA INFILE ‘/tmp/mydata’ INTO TABLE soj_dtl 
FIELDS TERMINATED BY ‘,’; 
• 唯一键冲突 
– REPLACE INTO 
– ON DUPLICATE KEY UPDATE
查询数据 
• 普通查询 
– SELECT log_time, page_id FROM soj_dtl 
WHERE page_id IN (1, 2, 3) 
ORDER BY log_time DESC 
LIMIT 10; 
• 分组查询 
– SELECT page_id, COUNT(*) FROM soj_dtl 
GROUP BY page_id 
HAVING COUNT(*) > 100;
SQL表达式 
• 字面量:数字、字符串、日期字符串 
• 运算符:+, -, *, /, MOD 
• 比较运算符:=, !=, <>, >, >=, <, <=, IS (NOT) NULL 
(NOT) IN, BETWEEN AND, LIKE, RLIKE, REGEXP 
• 逻辑运算符:AND, OR, NOT 
• 位运算符 
• 运算符优先级 
• 变量 
• 函数
表关联查询
表关联查询 
• 星型模型
导出查询结果 
• 使用SQL 
– SELECT * FROM soj_dtl 
INTO OUTFILE ‘/tmp/soj_dtl.csv’ 
FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘”’ 
LINES TERMINATED BY ‘n’; 
• 使用mysqldump程序 
– mysqldump -h10.20.8.41 -uxxx -pxxx dw_db soj_dtl 
--compact --skip-lock-tables >soj_dtl.txt
更新和删除 
• 更新数据 
– UPDATE soj_dtl SET guid = ‘CCC’ WHERE page_id = 1; 
– UPDATE soj_dtl a, pagename_lkp b 
SET a.page_name = b.page_name 
WHERE a.page_id = b.page_id; 
• 删除数据 
– DELETE FROM soj_dtl WHERE page_id = 1 
ORDER BY log_time LIMIT 10;
函数概览 
• 函数类别 
– 聚合函数:COUNT(DISTINCT), SUM, AVG, STD, MAX, MIN 
– 流程控制:IF, IFNULL, CASE WHEN 
– 类型转换:CAST 
– 字符串操作:SUBSTRING, CONCAT, TRIM, LOWER 
– 数值操作:ROUND, RAND, POW, SIN 
– 时间日期:NOW, DATE_ADD, HOUR, DATE_FORMAT, 
UNIX_TIMESTAMP, FROM_UNIXTIME 
• 自定义函数
索引初步 
• 索引的存储结构:B树 
• 索引的类型: 
– 主键索引 
– 普通索引和唯一索引 
– 单一索引和复合索引 
• 是否需要创建索引? 
– 字段散列程度 
– WHERE条件 
– 容量
使用索引 
• 创建索引 
– ALTER TABLE soj_dtl ADD INDEX idx1 (page_id, log_time); 
• 删除索引 
– ALTER TABLE soj_dtl DROP INDEX idx1; 
• 查看建表语句(含索引) 
– SHOW CREATE TABLE soj_dtl; 
• 查看索引大小 
– SHOW TABLE STATUS LIKE ‘soj_dtl’; 
• 分析查询语句是否用到了索引 
– EXPLAIN SELECT * FROM soj_dtl WHERE log_time < NOW();
代码风格 
• 命名规范 
– 事实表,汇总表采用“dw + 事业部名+ 职能部门名(可 
选) + 表义名”格式构成,中间用下划线隔开; 
– 临时表采用“人名缩写+ 程序模块名+ 表义名”; 
– 表名和字段名尽量不与MySQL关键字冲突。 
• SQL语句 
– 关键字使用大写; 
– 合理使用空格,不紧凑,不留白; 
– 每行不超过80个字符,按子句换行; 
– 避免使用*号,应将字段列表写全; 
– 合理使用注释。
谢谢

More Related Content

What's hot

NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹國昭 張
 
Hadoop基础及hive入门
Hadoop基础及hive入门Hadoop基础及hive入门
Hadoop基础及hive入门haiwang
 
Mysql遇到的一些问题
Mysql遇到的一些问题Mysql遇到的一些问题
Mysql遇到的一些问题wang tongchao
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOpenSourceCamp
 
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析vincent253
 
IoTDB OptimizeAndCaseStudy
IoTDB OptimizeAndCaseStudyIoTDB OptimizeAndCaseStudy
IoTDB OptimizeAndCaseStudyJialinQiao
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recoveryted-xu
 
PostGIS 初入門應用
PostGIS 初入門應用PostGIS 初入門應用
PostGIS 初入門應用Chengtao Lin
 
Spark streaming经验介绍
Spark streaming经验介绍Spark streaming经验介绍
Spark streaming经验介绍Wenchun Xu
 
iOS程序设计-数据持久化
iOS程序设计-数据持久化iOS程序设计-数据持久化
iOS程序设计-数据持久化qiyutan
 
Mongo db 簡介
Mongo db 簡介Mongo db 簡介
Mongo db 簡介昱劭 劉
 
Spark性能调优分享
Spark性能调优分享Spark性能调优分享
Spark性能调优分享Wenchun Xu
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现iammutex
 
MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)frogd
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kaoxwcoder
 
无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则wensheng wei
 
mysql总结
mysql总结mysql总结
mysql总结haiwang
 
分布式系统缓存设计
分布式系统缓存设计分布式系统缓存设计
分布式系统缓存设计zhujiadun
 

What's hot (20)

NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹
 
Hadoop基础及hive入门
Hadoop基础及hive入门Hadoop基础及hive入门
Hadoop基础及hive入门
 
Mysql遇到的一些问题
Mysql遇到的一些问题Mysql遇到的一些问题
Mysql遇到的一些问题
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
 
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析
 
IoTDB OptimizeAndCaseStudy
IoTDB OptimizeAndCaseStudyIoTDB OptimizeAndCaseStudy
IoTDB OptimizeAndCaseStudy
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery
 
PostGIS 初入門應用
PostGIS 初入門應用PostGIS 初入門應用
PostGIS 初入門應用
 
Spark streaming经验介绍
Spark streaming经验介绍Spark streaming经验介绍
Spark streaming经验介绍
 
IoTDB Ops
IoTDB OpsIoTDB Ops
IoTDB Ops
 
iOS程序设计-数据持久化
iOS程序设计-数据持久化iOS程序设计-数据持久化
iOS程序设计-数据持久化
 
Mongo db 簡介
Mongo db 簡介Mongo db 簡介
Mongo db 簡介
 
Spark性能调优分享
Spark性能调优分享Spark性能调优分享
Spark性能调优分享
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 
MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)
 
Optimzing mysql
Optimzing mysqlOptimzing mysql
Optimzing mysql
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kao
 
无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则
 
mysql总结
mysql总结mysql总结
mysql总结
 
分布式系统缓存设计
分布式系统缓存设计分布式系统缓存设计
分布式系统缓存设计
 

Viewers also liked

Actividades del experimental+
Actividades del experimental+Actividades del experimental+
Actividades del experimental+Derek Garcia
 
Colegio nacional nicolás esguerra
Colegio nacional nicolás esguerraColegio nacional nicolás esguerra
Colegio nacional nicolás esguerraVeloza Kevin
 
Paradigmas emergentes
Paradigmas emergentesParadigmas emergentes
Paradigmas emergenteslucely8
 
Are you a part of Hiring Revolution
Are you a part of Hiring RevolutionAre you a part of Hiring Revolution
Are you a part of Hiring Revolutionsrinivasjmba
 
Escribirlaimagenescrita
EscribirlaimagenescritaEscribirlaimagenescrita
EscribirlaimagenescritaFabi Castillo
 
морская геодезия
морская геодезияморская геодезия
морская геодезияGulnaz Sayan
 
Crónica encuentro 2014
Crónica encuentro 2014Crónica encuentro 2014
Crónica encuentro 2014GEANI12
 
The technology of the future Part I
The technology of the future Part IThe technology of the future Part I
The technology of the future Part ISaksham9756
 
El mon electronic.
El mon electronic.El mon electronic.
El mon electronic.pppaula96
 
Practica 13 Innovaciones - Procesos tecnologicos El Norte de Castilla
Practica 13 Innovaciones - Procesos tecnologicos El Norte de CastillaPractica 13 Innovaciones - Procesos tecnologicos El Norte de Castilla
Practica 13 Innovaciones - Procesos tecnologicos El Norte de Castillapablo1909
 
Book drive
Book driveBook drive
Book drivekelleall
 
Psida Slide Share
Psida Slide SharePsida Slide Share
Psida Slide Sharejnistler
 

Viewers also liked (20)

Movilidad 2009
Movilidad 2009Movilidad 2009
Movilidad 2009
 
Actividades del experimental+
Actividades del experimental+Actividades del experimental+
Actividades del experimental+
 
Colegio nacional nicolás esguerra
Colegio nacional nicolás esguerraColegio nacional nicolás esguerra
Colegio nacional nicolás esguerra
 
Mauricio chinchilla mapa_conceptual
Mauricio chinchilla mapa_conceptualMauricio chinchilla mapa_conceptual
Mauricio chinchilla mapa_conceptual
 
ใบงานท 16
ใบงานท  16ใบงานท  16
ใบงานท 16
 
Paradigmas emergentes
Paradigmas emergentesParadigmas emergentes
Paradigmas emergentes
 
Espacioes 2
Espacioes 2Espacioes 2
Espacioes 2
 
Are you a part of Hiring Revolution
Are you a part of Hiring RevolutionAre you a part of Hiring Revolution
Are you a part of Hiring Revolution
 
Escribirlaimagenescrita
EscribirlaimagenescritaEscribirlaimagenescrita
Escribirlaimagenescrita
 
морская геодезия
морская геодезияморская геодезия
морская геодезия
 
Crónica encuentro 2014
Crónica encuentro 2014Crónica encuentro 2014
Crónica encuentro 2014
 
The technology of the future Part I
The technology of the future Part IThe technology of the future Part I
The technology of the future Part I
 
El mon electronic.
El mon electronic.El mon electronic.
El mon electronic.
 
Presentation2
Presentation2Presentation2
Presentation2
 
Practica 13 Innovaciones - Procesos tecnologicos El Norte de Castilla
Practica 13 Innovaciones - Procesos tecnologicos El Norte de CastillaPractica 13 Innovaciones - Procesos tecnologicos El Norte de Castilla
Practica 13 Innovaciones - Procesos tecnologicos El Norte de Castilla
 
Passivevoice
PassivevoicePassivevoice
Passivevoice
 
Informatica
InformaticaInformatica
Informatica
 
Felipe lll LUCIA
Felipe lll LUCIAFelipe lll LUCIA
Felipe lll LUCIA
 
Book drive
Book driveBook drive
Book drive
 
Psida Slide Share
Psida Slide SharePsida Slide Share
Psida Slide Share
 

Similar to Sql基础培训

My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规isnull
 
MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规mysqlops
 
Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整Yousri Yan
 
Log collection
Log collectionLog collection
Log collectionFEG
 
Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法maclean liu
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化isnull
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍Leo Zhou
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍Leo Zhou
 
MySQL查询优化浅析
MySQL查询优化浅析MySQL查询优化浅析
MySQL查询优化浅析frogd
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护mysqlops
 
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構Etu Solution
 
Build 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon dataBuild 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon databoxu42
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130Jinrong Ye
 
改善Programmer生活的sql技能
改善Programmer生活的sql技能改善Programmer生活的sql技能
改善Programmer生活的sql技能Rack Lin
 
111030 gztechparty-小路-云时代的mysql
111030 gztechparty-小路-云时代的mysql111030 gztechparty-小路-云时代的mysql
111030 gztechparty-小路-云时代的mysqlZoom Quiet
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验Jinrong Ye
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert systemted-xu
 
Introduction to CodeIgniter
Introduction to CodeIgniterIntroduction to CodeIgniter
Introduction to CodeIgniterChun-Kai Wang
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 

Similar to Sql基础培训 (20)

My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规
 
MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规
 
Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整
 
Log collection
Log collectionLog collection
Log collection
 
Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍
 
MySQL查询优化浅析
MySQL查询优化浅析MySQL查询优化浅析
MySQL查询优化浅析
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护
 
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
 
Build 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon dataBuild 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon data
 
MySQL入門介紹
MySQL入門介紹MySQL入門介紹
MySQL入門介紹
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
 
改善Programmer生活的sql技能
改善Programmer生活的sql技能改善Programmer生活的sql技能
改善Programmer生活的sql技能
 
111030 gztechparty-小路-云时代的mysql
111030 gztechparty-小路-云时代的mysql111030 gztechparty-小路-云时代的mysql
111030 gztechparty-小路-云时代的mysql
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert system
 
Introduction to CodeIgniter
Introduction to CodeIgniterIntroduction to CodeIgniter
Introduction to CodeIgniter
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 

Sql基础培训

  • 2. 目录 • 数据库与SQL • 数据定义语言(DDL) • 数据操作语言(DML) • 函数概览 • 索引初步 • 代码风格
  • 3. 数据库与SQL • 名词释义 – 数据库 – 关系型数据库 – 关系型数据库管理系统(RDBMS) – 结构化查询语言(SQL) • SQL可以用来? – 定义数据库结构 – 查询和修改数据 – 控制访问权限 – 编程
  • 7. 建库建表 • 创建和删除数据库 – CREATE DATABASE dw_db; – DROP DATABASE dw_db; • 创建表 – CREATE TABLE dw_db_temp.soj_dtl ( log_time DATETIME, page_id INT, guid CHAR(32) ) ENGINE=MyISAM;
  • 8. 建表语句解析 • 合法的表名、字段名和索引名: – 数字、字母、下划线、美元符号; – 可以使用反撇号“`”括起; – 表名对大小写敏感,字段名不敏感; • 字段类型 – 数值型:INT,FLOAT,DECIMAL – 字符型:CHAR ,VARCHAR ,TEXT – 日期型:DATETIME ,TIMESTAMP
  • 9. 建表语句解析 • 空值和默认值 – page_id INT NOT NULL DEFAULT 0 • 存储引擎 – ENGINE=MyISAM – ENGINE=InnoDB – ENGINE=BRIGHTHOUSE • 编码格式 – CHARACTER SET=utf8 • 表注释、字段注释 – COMMENT ‘页面ID’
  • 10. 建表语句解析 • 忽略已存在的表 – CREATE TABLE IF NOT EXISTS soj_dtl (…); • 创建临时表 – CREATE TEMPORARY TABLE soj_dtl (…); • 复制表结构 – CREATE TABLE soj_dtl LIKE soj_dtl_template; • 将查询结果保存为表 – CREATE TABLE soj_dtl AS SELECT * FROM soj_dtl WHERE page_id != 0;
  • 11. 表的其他操作 • 删除表 – DROP TABLE IF EXISTS soj_dtl; • 清空表 – TRUNCATE TABLE soj_dtl; – 等价于DROP + CREATE • 重命名 – RENAME TABLE soj_dtl TO soj_dtl_old;
  • 12. 表的其他操作 • 修改表结构 – ALTER TABLE soj_dtl ADD COLUMN url VARCHAR(255); – ALTER TABLE soj_dtl CHANGE COLUMN url long_url VARCHAR(500); – ALTER TABLE soj_dtl DROP COLUMN long_url; • 索引 • 自增ID – id INT AUTO_INCREMENT PRIMARY KEY • 记录更新时间 – ON UPDATE CURRENT_TIMESTAMP
  • 13. 插入数据 • 使用INSERT INTO插入单条或多条记录 – INSERT INTO soj_dtl (log_time, page_id, guid) VALUES (NOW(), 1, ‘AAA’), (NOW(), 2, ‘BBB’); • 将查询结果插入表 – INSERT INTO soj_dtl SELECT * FROM soj_dtl_old; • 使用LOAD DATA批量导入数据 – LOAD DATA INFILE ‘/tmp/mydata’ INTO TABLE soj_dtl FIELDS TERMINATED BY ‘,’; • 唯一键冲突 – REPLACE INTO – ON DUPLICATE KEY UPDATE
  • 14. 查询数据 • 普通查询 – SELECT log_time, page_id FROM soj_dtl WHERE page_id IN (1, 2, 3) ORDER BY log_time DESC LIMIT 10; • 分组查询 – SELECT page_id, COUNT(*) FROM soj_dtl GROUP BY page_id HAVING COUNT(*) > 100;
  • 15. SQL表达式 • 字面量:数字、字符串、日期字符串 • 运算符:+, -, *, /, MOD • 比较运算符:=, !=, <>, >, >=, <, <=, IS (NOT) NULL (NOT) IN, BETWEEN AND, LIKE, RLIKE, REGEXP • 逻辑运算符:AND, OR, NOT • 位运算符 • 运算符优先级 • 变量 • 函数
  • 18. 导出查询结果 • 使用SQL – SELECT * FROM soj_dtl INTO OUTFILE ‘/tmp/soj_dtl.csv’ FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘”’ LINES TERMINATED BY ‘n’; • 使用mysqldump程序 – mysqldump -h10.20.8.41 -uxxx -pxxx dw_db soj_dtl --compact --skip-lock-tables >soj_dtl.txt
  • 19. 更新和删除 • 更新数据 – UPDATE soj_dtl SET guid = ‘CCC’ WHERE page_id = 1; – UPDATE soj_dtl a, pagename_lkp b SET a.page_name = b.page_name WHERE a.page_id = b.page_id; • 删除数据 – DELETE FROM soj_dtl WHERE page_id = 1 ORDER BY log_time LIMIT 10;
  • 20. 函数概览 • 函数类别 – 聚合函数:COUNT(DISTINCT), SUM, AVG, STD, MAX, MIN – 流程控制:IF, IFNULL, CASE WHEN – 类型转换:CAST – 字符串操作:SUBSTRING, CONCAT, TRIM, LOWER – 数值操作:ROUND, RAND, POW, SIN – 时间日期:NOW, DATE_ADD, HOUR, DATE_FORMAT, UNIX_TIMESTAMP, FROM_UNIXTIME • 自定义函数
  • 21. 索引初步 • 索引的存储结构:B树 • 索引的类型: – 主键索引 – 普通索引和唯一索引 – 单一索引和复合索引 • 是否需要创建索引? – 字段散列程度 – WHERE条件 – 容量
  • 22. 使用索引 • 创建索引 – ALTER TABLE soj_dtl ADD INDEX idx1 (page_id, log_time); • 删除索引 – ALTER TABLE soj_dtl DROP INDEX idx1; • 查看建表语句(含索引) – SHOW CREATE TABLE soj_dtl; • 查看索引大小 – SHOW TABLE STATUS LIKE ‘soj_dtl’; • 分析查询语句是否用到了索引 – EXPLAIN SELECT * FROM soj_dtl WHERE log_time < NOW();
  • 23. 代码风格 • 命名规范 – 事实表,汇总表采用“dw + 事业部名+ 职能部门名(可 选) + 表义名”格式构成,中间用下划线隔开; – 临时表采用“人名缩写+ 程序模块名+ 表义名”; – 表名和字段名尽量不与MySQL关键字冲突。 • SQL语句 – 关键字使用大写; – 合理使用空格,不紧凑,不留白; – 每行不超过80个字符,按子句换行; – 避免使用*号,应将字段列表写全; – 合理使用注释。