MySQL简介
MySQL一般特制完整的MySQLRDBMS,是一个开源的关系型数据库管理系统(Relational Database Management System),属于Oracle公司。随着MySQL功能的不断完善,性能不断提高,又有开源免费的优势,很多的企业都优先选择使用MySQL,而放弃商用收费的Oracle。
————————————————
MySQL采用的是客户/服务器体系结构,因此实际使用时,有两个程序:
1、一个是MySQL服务器程序,指的是mysqlId程序,运行在数据库服务器上,负责在网络上监听并处理来自客户端的服务请求根据这些请求去访问数据库的内容,再把有关信息回传给客户;
2、 另一个程序是MySQL客户端程序,负责连接到数据库服务器,并通过命令来告知服务器它想要的操作,我们主要是操作这个程序,服务器那边一般不是我们去操作。
MySQL 数据类型
1、整数类型
tinyint(4)
smallint(6)
mediumint(9)
int(11)
bigint(20)
注意:后面的是默认显示宽度,以 int 为例,占用的存储字节数是 4 个,即 4*8=32 位,2 的
32 次方,无符号的最大能达到 4亿多。tinyint(4)相当亍 bool 型
2、浮点数
float
double
decimal(m,d)
decimal(6,2) 这里定义的数字形如 1234.56,指总长 6 位,小数点后精确到 2 位
3、日期和时间
year 年
date 日期
time 时间
datetime 日期时间
timestamp 时间(时区),范围小,支持时区
datetime 最通用,year,date,time 可以节省一些空间。
4、字符串
char(m) 定长
varchar(m) 不定长
enum,set 和其它库不兼容,可暂不用
tinytext
text
mediumtext
longtext
5、二进制
binary(m)
varbinary(m)
bit(m)
tinyblob
blob
mediumblob
longblob
MySQL基础常用命令教程
1、WHERE 子句
从表中选择数据,可将 WHERE 子句添加到 SELECT /UPDATE等语句。下面将以SELECT说明,其他情况下面陆续有讲述,语法如下:
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
引号的使用:SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,则不需要使用引号。
下面的运算符可在 WHERE 子句中使用:
操作符 | 描述 |
---|---|
= | 等于,其实就是精确搜索 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 搜索某种模式 |
<> | 不等于 |
> | 大于 |
LIKE | 在某个范围内,其实就是模糊搜索 |
2、INSERT INTO 语句
INSERT INTO 语句用于向表格中插入新的行,简称增,语法如下:
不指定字段插入填入的值必须对应字段值,缺一不可
INSERT INTO 表名称 VALUES (值1, 值2,…)
当然,我们也可以指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)
3、DELETE 语句
DELETE 语句用于删除表中的行,简称删,语法如下:
DELETE FROM 表名称 WHERE 列名称 = 值
4、Update 语句
Update 语句用于修改表中的数据。简称改 ,语法如下:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
5、SELECT 语句
SELECT 语句用于从表中查询数据,简称查,语法如下:
SELECT 列名称 FROM 表名称
以及:
SELECT * FROM 表名称
注释:SQL 语句对大小写不敏感。SELECT 等效于 select。
6、 DISTINCT 语句
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 DISTINCT用于返回唯一不同的值。简称不同,语法如下:
SELECT DISTINCT 列名称 FROM 表名称
7、AND & OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
AND 运算符实例
使用 AND 来显示姓名为 “Carter” 并且性别为 “男” 的人:
SELECT * FROM Persons WHERE Name=‘Thomas’ AND sex=‘男’
OR 运算符实例
使用 OR来显示姓名为 “Carter” 或者性别为 “男” 的人:
SELECT * FROM Persons WHERE Name=‘Thomas’ OR sex=‘男’
结合 AND 和 OR 运算符
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM Persons WHERE (Name=‘Thomas’ OR Name=‘William’) AND sex=‘男’
8、ORDER BY 子句
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
以id升序显示名字:
SELECT Name FROM students ORDER BY id
以降序显示名字:
SELECT Name FROM students ORDER BY id DESC
9、limit 语句
现在,我们希望从上面的 “students” 表中选取头两条记录。语法如下:
SELECT * FROM students limit 0,2 #从0索引开始拿两条数据
9、group by 语句
group by 用于分类汇总,一般与聚合函数(比如avg平均、sum合计、max最大、min最小、count计算行)一起使用。强烈建议与聚合函数结合使用。
测试表如下:
示例一: 查询每个部⻔门有⼏个人
select dept,count(*) from emp group by dept;
示例二:计算每个部⻔门的平均⼯工资
select avg(salary) from emp group by dept;
总结:什么时候需要使用分组,只要你的需求中 带有这样的字眼就需要分组:
每个岗位/每个部门/每个性别
where 语句后面不能使用聚合函数
where 条件不能用于筛选分组后的数据
10、Having 语句
Having跟where的功能差不多,只不过他是在分完组之后,再对分组数据进行过滤。
HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。
示例:计算每个部⻔门的平均⼯工资 且大于五千的数据(测试表可看第九点) select dept,avg(salary) from emp
group by dept HAVING avg(salary)>5000
11、like 语句
示例一:查看dept字段有‘市’的数据
select * from emp WHERE dept LIKE ‘市%’
注:"%"可用于定义通配符
MySQL高级连接命令教程
MySQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
一、内连接
关键字:inner join on
语句:select * from a_table inner join b_table on a.a_id = b.b_id;
可使用此语句实现:select * from a_table ,b_table where on a.a_id = b.b_id;
执行结果:
二、左连接(左外连接)
关键字:left join on / left outer join on
语句:select * froma_table left join b_table on a.a_id = b.b_id;
执行结果:
三、右连接(右外连接)
关键字:right join on / right outer join on
语句:select * from a_table right outer join b_table on a.a_id = b.b_id;
执行结果:
四、全连接(全外连接)
MySQL目前不支持此种方式,可以用其他方式替代解决。
上面只是介绍工作中常用的命令,还有更多的其他命令就不作介绍了
有不足的地方请留言指正或加QQ讨论(1441302865),谢谢大家