SQL数据库知识总结
数据库知识 . 2020/01/13发布 . shanyonggang_web . 我要评论 . 79阅读

基础知识

数据库:保存有组织的数据的容器

表:某种特定类型数据的结构化清单(类比excel学习)

列:表示表中的一个字段,所有表都是由一列或者多列组成

主键:能够唯一区分表中的每一行的字段(任意两行都不具有相同的主键值、每个行必须有一个主键值且不为NULL)

SQL:用来与数据库通信的语言

连接数据库:主机名(如:localhost)、端口(3306)、用户名(root)、密码(*******)

选择数据库:USE Database

显示表和数据库:SHOW DataBase、SHOW Table

数据查询

sql语句不区分大小写;多条sql语句查询需要用分号‘;’隔开

# 检索所有列
select * from tables
# 检索某列
select column1,column2,column3 from tables
# 返回columns的不同值(每个值仅返回一次,不重复)
SELECT DISTINCT column1 FROM tables 
# 返回特定行数(5,5表示从第五行开始选择5行,如果只有一个数字的话表示从第一行开始选择5行)
SELECT column1 FROM tables LIMIT 5,5
# 使用限定的表名
SELECT tables.column1 FROM tables
# 其可用于从不同表中选取不同的字段,例如:
SELECT table1.name,table1.age,table2.name,table2.age FROM table1,table2
# 使用限定的数据库
SELECT tables.column1 FROM Database.tables

排序查询

# 按单一列排序
SELECT * FROM tables ORDER BY column1
# 按多列排序
SELECT * FROM tables ORDER BY column1,column2
# 降序排序(默认使用升序ASC)
SELECT * FROM tables ORDER BY column1 DESC,column2 ASC
# ORDER BY和LIMIT共同使用可以查询最大最小值
SELECT column1 FROM tables ORDER BY column1 DESC LIMIT 1

过滤数据

WHERE语句的简单操作:

主要是使用条件搜索进行数据的过滤查询

注:where与order by一起使用时,where应该位于order by之后

# where语句简单过滤
SELECT * FROM tables WHERE age = 30
# 空值检查
SELECT * FROM tables WHERE age IS NULL

where语句操作符:

WHERE语句高级操作:

AND和OR语句,AND和OR语句可以实现组合使用过滤查询

# 使用AND语句进行联合过滤(OR语句与其用法类似)
SELECT * FROM tables WHERE age=30 AND name='hello'

IN操作符

优点:1、语法清楚直观;2、计算次序更容易管理;3、比OR字符执行速度快;4、可以包含其他SELECT语句

SELECT * FROM tables WHERE age IN (30,40,50,20) ORDER BY name

NOT操作符

SELECT * FROM tables WHERE age NOT IN (30,40,50,20) ORDER BY name

通配符过滤

LIKE操作符

%通配符:%表示任意字符出现任意次

# 百分号(%)通配符(已hel开头的所有name)
SELECT * FROM tables WHERE name LIKE 'hel%'
# 百分号(%)通配符(name中包含world的所有行)
SELECT * FROM tables WHERE name LIKE '%world%'
# 百分号(%)通配符(查找以hello开头world结尾的所有行)
SELECT * FROM tables WHERE name LIKE 'hello%word'

下划线_通配符:下划线通配符和%通配符类似,不同的是下划线通配符仅匹配单个字符

使用通配符原则:

  • 不要过度使用通配符,如果能用其他操作达到效果,应该使用其他
  • 在确实需要使用通配符时,除非绝对有必要,否则不要把他们用在搜索模式的开始处
  • 注意通配符的放置位置

创建计算字段

拼接字段:RTrim()表示去除右边的空格、LTrim()表示去除左边的空格、Trim()表示去掉两边的空格

# 使用Concat拼接字段,结果为:name(age)
SELECT Concat(name,'(',age,')') FROM tables ORDER BY name
# 字段重新命名,使用AS语句
SELECT Concat(name,'(',age,')') AS new_column FROM tables ORDER BY name

执行算术计算(+、-、*、/)

# 计算商品的总结(单价*数量)
SELECT price,quantity,quantity*price AS all_price FROM tables 

数据处理函数

例如:UPPER()转换成大写

# UPPER()所有字符串转换成大写
SELECT UPPER(name) FROM tables

常用函数如下:

文本处理函数:

  • Left():返回串左边的字符
  • Length():返回串的长度
  • Locate():找出串的一个子串
  • Lower():将串转换成小写
  • LTrim():去掉串左边的空格
  • Right():去掉串右边的字符
  • RTrim():去掉串右边的空格
  • Soundex():返回串的SOUNDEX值(匹配发音类似的字符串)
  • SubString():返回子串的字符
  • Upper():将串转换成大写

日期和时间处理函数:

mysql使用的日期格式:yyyy-mm-dd(尽可能使用四位数的年份)

# 时间日期筛选(其默认时间为00:00:00)
SELECT * FROM tables WHERE born_date='1999-02-17'
# 筛选日期为1999-02-17的数据、不管时间
SELECT * FROM tables WHERE Date(born_date)='1999-02-17'

举例查询:(查询1999年五月份出生的所有数据)

# 第一种方式
SELECT * FROM tables WHERE Date(born_date) BETWEEN '1999-05-01' AND '1999-05-31'
# 第二种方式
SELECT * FROM tables WHERE Year(born_date)=1999 And Month(born_date)=5 

数值处理函数:


  • 有疑问请在下方评论区留言,我会尽快回复。
  • Email私信我: 511248513@qq.com 或添加博主 微信
本文作者:shanyonggang_web
发布时间:2020年1月13日 16:04
许可协议: 署名-非商业性使用 4.0 国际许可协议
知识共享许可协议     转载请保留原文链接及作者
正在加载今日诗词....
您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的


登录 后回复

当前暂无评论,点击登录来做第一个吃螃蟹的人吧!