MySQL简介
Posted sty-88
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL简介相关的知识,希望对你有一定的参考价值。
MySQL由瑞典MySQL AB公司开发,目前属于Oracle公司。
MySQL是一个开源的关系型数据库管理系统。
MySQL分为社区版和企业版。
MySQL简单命令启动mysql :net start mysql(也可以启动其他的服务)
停止mysql :net stop mysql
登录 : mysql –u root –p 然后输入你的密码
修改mysql的提示符: mysql –uroot–p --prompt 提示符
提示符:
D 完整的日期
d 当前数据库
h 服务器名称
u 当前用户
创建数据库
-
关键字与函数名称全部大写。
-
数据库名称、表名称、字段名称全部小写。
-
SQL语句以分号结尾。
创建数据库命令简介:{}内代表必须 | 代表选其中一个 []代表可选。
创建数据库语句:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS]db_name
[DEFAULT] CHARACTER SET [=] charset_name
三个阶段
-
人工管理阶段
-
文件系统阶段
-
高级数据库阶段
数据库的常见模型;
层次模型,为树状结构,是Java 中的继承模式。网状模型,有多个父节点,多继承模式。关系模型,关系模型,是存放一个实体,和属性
特点
-
实现数据共享
-
减少数据冗余
-
采用特定数据类型
-
有较高的数据独立性
-
具有统一的数据控制功能
MYSQL中的数据类型:
整型数据类型:
类型名 字节数tinyint 1smallint 2mediumint 3int 4bigint 8浮点数据类型:
类型名 字节数float 4double 8decimal(m,d) 17m表示数据的总长度,d表示小数位数
字符串类型:
类型名 含义char 定长varchart() 变长tinyText 短文本字符text 长文本数据mediumtext 中等长度文本数据longtext 极大文本数据
数据库系统
主要组成
-
数据库:存储数据的地方
-
数据库管理系统:用于管理数据库的软件
-
数据库应用程序:作为管理数据库的条件补充
SQL语言
-
对数据库进行查询和修改的语言叫做SQL语言
组成
-
数据定义语言(DDL):DROP,CREATE,ALTER等
-
数据操作语言(DML):INSERT,UPDATE,DELETE等
-
数据库语言(DQL):SELECT语句
-
数据控制语言(DCL):GRANT, REVOKE, ROLLBACK等
数据库访问接口
OBDC
-
为访问不同的数据库提供一个共同的接口
-
一个基于ODBC的应用程序不依赖任何DMBS
JDBC
-
用于Java链接数据库的标准方法
ADO.NET
-
是在微软.net框架下设计的
PDO
-
为php访问数据库定义了一个轻量级一致性的接口
SQL语言的分类
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
1. **数据查询语言DQL**数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>2 .**数据操纵语言DML**数据操纵语言DML主要有三种形式:1) 插入:INSERT2) 更新:UPDATE3) 删除:DELETE3. **数据定义语言DDL**数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:CREATE TABLE/VIEW/INDEX/SYN/CLUSTER? | | | | |? 表 视图 索引 同义词 簇
DDL操作是隐性提交的!不能rollback 4. **数据控制语言DCL**数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚---ROLLBACK回滚命令使数据库状态回到上次最后提交的状态。其格式为:SQL>ROLLBACK;
3) COMMIT [WORK]:提交。
MySQL的存储引擎
存储引擎的类型MyISAM、InnoDB 、Memory、CSV等9种
名称 | InnoDB | MyISAM |
---|---|---|
事务处理 | 支持 | 不支持 |
数据行锁定 | 支持 | 不支持 |
外键约束 | 支持 | 不支持 |
全文索引 | 不支持 | 支持 |
表空间大小 | 较大,约2倍 | 较小 |
适用场合 使用MyISAM: 不需事务,空间小,以查询访问为主
使用InnoDB: 多删除、更新操作,安全性高,事务处理及并发控制
查看当前默认存储引擎:SHOW VARIABLES LIKE ‘storage_engine%’;
修改存储引擎:default-storage-engine= InnoDB
DML语句——插入单条数据记录
语法:
INSERT INTO 表名 [(字段名列表)] VALUES (值列表);
DML语句——插入多条数据记录
语法:
INSERT INTO 新表(字段名列表) VALUES(值列表1),(值列表2),……,(值列表n);
将查询结果插入新表
语法:
CREATE TABLE 新表(SELECT 字段1,字段2…… FROM 原表);
更新数据记录
语法:
UPDATE 表名 SET 字段1=值1,字段2=值2,…,字段n=值n [WHERE 条件];
数据删除
语法:
DELETE FROM 表名 [WHERE条件];
TRUNCATE TABLE 表名;
什么是查询
查询产生一个虚拟表看到的是表形式显示的结果,但结果并不真正存储每次执行查询只是从数据表中提取数据,并按照表的形式显示出来
查询语法
SELECT <列名|表达式|函数|常量> FROM <表名> WHERE <查询条件表达式>];
数据查询基础
查询全部的行和列
语法:SELECT * FROM student
;
数据查询-列别名
SELECT studentNo
AS 学生编号,studentName
AS 学生姓名, address
AS 学生地址 FROM student
WHERE address
<> ‘河南新乡‘;
数据查询-空行、常量列
空行语法:
SELECT studentName
FROM student
WHERE email
IS NULL;
常量列语法:
SELECT studentName
AS 姓名,address
AS 地址,’北京信息中心’ AS 学校名称FROM student
;
常用函数——聚合函数
函数名 | 作用 |
---|---|
AVG() | 返回某字段的平均值 |
COUNT() | 返回某字段的行数 |
MAX() | 返回某字段的最大值 |
MIN() | 返回某字段的最小值 |
SUM() | 返回某字段的和 |
常用函数——字符串函数
函 数 名 | 作 用 | 举 例 |
---|---|---|
CONCAT(str1, str1...strn) | 字符串连接 | SELECT CONCAT(‘My‘,‘S‘,‘QL‘);返回:MySQL |
INSERT(str,pos,len,newstr) | 字符串替换 | SELECT INSERT( ‘这是SQL Server数据库‘, 3,10,‘MySQL‘);返回:这是MySQL数据库 |
LOWER(str) | 将字符串转为小写 | SELECT LOWER(‘MySQL‘);返回:mysql |
UPPER(str) | 将字符串转为大写 | SELECT UPPER(‘MySQL‘); 返回:MYSQL |
SUBSTRING (str,num,len) | 字符串截取 | SELECT SUBSTRING( ‘JavaMySQLOracle‘,5,5);返回:MySQL |
查询多表数据
表连接:比较运算符:子查询只能返回单个数值
子查询:IN/NOT IN:子查询可返回多条记录
高级查询
EXISTS子查询
SELECT …… FROM 表名 WHERE EXISTS(子查询);
子查询有返回结果: EXISTS子查询结果为TRUE
子查询无返回结果: EXISTS子查询结果为FALSE, 外层查询不执行
NOT EXISTS子查询
参考语句:
SELECT AVG(studentresult) + 5 AS 平均分
FROM result
WHERE NOT EXISTS
(SELECT * FROM `result`
WHERE `examDate` = (
SELECT MAX(`examDate`)
FROM `result`
WHERE `subjectNo` = (
SELECT `subjectNo`
FROM `subject`
WHERE
`subjectName` = ‘Logic Java‘
)
)
AND `studentResult` > 60
);
?
子查询注意事项
任何允许使用表达式的地方都可以使用子查询
嵌套在父查询SELECT语句的子查询可包括
SELECT子句
FROM子句
WHERE子句
GROUP BY子句
HAVING子句
只出现在子查询中而没有出现在父查询中的列不能包含在输出列中
分组查询用法:
SELECT …… FROM <表名> WHERE ……GROUP BY ……
分组筛选语句
SELECT …… FROM <表名>WHERE ……GROUP BY ……HAVING……
WHERE与HAVING对比
WHERE子句
用来筛选 FROM 子句中指定的操作所产生的行
GROUP BY子句
用来分组 WHERE 子句的输出
HAVING子句
用来从分组的结果中筛选行
常用的多表连接查询:
内连接(INNER JOIN)
外连接
左外连接 (LEFT JOIN)
右外连接 (RIGHT JOIN)
内连接语句
SELECT …… FROM 表1,表2WHERE ……
SELECT …… FROM 表1INNER JOIN 表2ON ……
以上是关于MySQL简介的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段
SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段
C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段
连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段