Week 1 初识SQL和MySQL
一、SQL和MySQL背景
1.SQL和MySQL是什么?
- SQL是结构化查询语言(Structured Query Language)的缩写,专门用来与数据库进行通信的语言,几乎所有的DBMS(数据库软件)都支持
- MySQL是官方发布的免费开源的数据库软件,即SQL编辑器,也有其他更好用的但是收费的SQL编辑器软件
- 在线写代码教程(需翻墙,英语):http://www.mysqltutorial.org
2.怎么进入MySQL编辑界面?
先把MySQL Notifier打开,在右下角显示后即可进行通讯,默认Stop,切换成Start后即可和数据库进行通讯,最后再把MySQLWorkbench打开即可。
3.MySQL基础概念
数据库(datebase):保存有组织的数据的容器。
表(table):某种特定类型数据的结构化清单。
列(column):表中的一个字段。所有表都由一列或者多列组成,每一列都有对应的数据类型。
行(row):表中的一个记录。
主键(primary key):一列(或一组列?),其值能够唯一区分表中每个行。表中每一行都有可以唯一标识自己的一列,表中的任何列都可以作为主键,但必须满足以下条件:①任意两行都不具有相同主键 ②每行都必须具有一个主键。即主键是唯一且每行必须的。
4.SQL基础概念
- SQL操作不可逆
- SQl不区分大小写
- 结束sql语句要使用分号(;)
- SQL语句会忽略空格,即如果不用符号隔开会默认为一个单词,但是在获取结果时目标格的空格不被忽略,相当于一个字符
- null 值会被忽略计算
- *代表全部的数据(all)
- 字符串用双引号和单引号皆可,单引号更规范
- 通配符(wildcard)用来匹配值的一部分的特殊字符,在搜索字句中使用通配符必须使用like操作符,通配符可位于开头、结尾或中间,要注意尾部空格和空值null
- % 代表任意长度
- _代表一个字符
选取在name列里以A开头的行
后面输了三个_,表示以ab开头后面还有三个字符的单词
- 使用limit限制返回结果行数,可以提前设置,也可在语句中限制
二、SQL语法
1.select选取数据,order by排序,use指定库名
SQL几乎所有的语句都要使用select来选取列数据,select返回的结果是无序的,可使用order by(位于from字句之后)排序,asc 升序,desc 降序
也可在输入语句前,先指定库,一般情况下是不会跨库查询的,因此可以直接用use语句指定库名,后续from不用再输入库,如果需要指定到特定库,再到from那里指定,则优先运行from那里的库,再运行use指定的库
use指定库的操作执行一次,只要后续不再使用use指定库,即一直默认使用该库,即使删掉指定语句也不影响,如果想换库,再指定一次即可
要选取多列,用逗号(,)隔开
2.select … from
select … from一般是连着使用。
from表示从哪张表中选择,如果多个库中有相同的表,要在表之前指定库名,用句点(.)隔开,再指定表名
可多重排序,按前后顺序优先排列
3.注释及显示数量
注释(#)不会被执行,只用来描述当前代码,如第6行
show datebases显示当前有多少库
show tables显示当前库有多少表
show columns from XX 显示当前表有多少列
4.where过滤,and/or连接,in语句
在select语句中,数据根据where子句指定的搜索条件进行过滤,多个过滤子句使用and/or连接,where字句中的圆括号决定了计算次序
优先运行and,再运行or,即该语句表示先运行同时满足红色框框的部分,再单独运行绿色框框部分
加括号后则优先运行括号内的部分,再运行括号外的部分
上述语句也可直接换成更简洁的in语句
5.修剪函数
trim修剪函数,删除空格:rtrim删除右边空格,ltrim删除左边空格
Substring:字符串子集,substring(目标单元格,2),从字符串左边第二个字符开始截取,substring(目标单元格,2,5),从字符串左边第二个字符开始截取5个字符长度。【个人感觉SQL里的SubString作用和Excel里mid函数作用是一样的,都是截取部分字段】
Left:返回字符串最左边的n个字符
6.group by和having
group by分成小组,以便进行平均等操作,如表里是按城市为一行,但按照国家对不同国家人口进行求平均值等
分组后不可使用where进行条件过滤,而应使用having对组进行过滤
7.distinct 唯一值
三、SQL其他操作
1.增删表
- DROP TABLE 删除表【SQL操作不可逆,一旦drop掉不可恢复,操作前要思考好】
- update用来更新表中的数据,一定要仔细,不要省略where字句
- delete用于从表中删除特定的行或者从表中删除所有行,一定要仔细,不要省略where字句