MySQL简介

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 当前用户

创建数据库

  1. 关键字与函数名称全部大写。

  2. 数据库名称、表名称、字段名称全部小写。

  3. SQL语句以分号结尾。

创建数据库命令简介:{}内代表必须 | 代表选其中一个 []代表可选。

创建数据库语句:

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS]db_name

[DEFAULT] CHARACTER SET [=] charset_name

 

三个阶段

  1. 人工管理阶段

  2. 文件系统阶段

  3. 高级数据库阶段

 

数据库的常见模型;

层次模型,为树状结构,是Java 中的继承模式。网状模型,有多个父节点,多继承模式。关系模型,关系模型,是存放一个实体,和属性

 

 

特点

  1. 实现数据共享

  2. 减少数据冗余

  3. 采用特定数据类型

  4. 有较高的数据独立性

  5. 具有统一的数据控制功能

MYSQL中的数据类型:

整型数据类型:

类型名 字节数tinyint 1smallint 2mediumint 3int 4bigint 8浮点数据类型:

类型名 字节数float 4double 8decimal(m,d) 17m表示数据的总长度,d表示小数位数

字符串类型:

类型名 含义char 定长varchart() 变长tinyText 短文本字符text 长文本数据mediumtext 中等长度文本数据longtext 极大文本数据

 

 

数据库系统

主要组成
  1. 数据库:存储数据的地方

  2. 数据库管理系统:用于管理数据库的软件

  3. 数据库应用程序:作为管理数据库的条件补充

SQL语言

  • 对数据库进行查询和修改的语言叫做SQL语言

组成
  1. 数据定义语言(DDL):DROP,CREATE,ALTER等

  2. 数据操作语言(DML):INSERT,UPDATE,DELETE等

  3. 数据库语言(DQL):SELECT语句

  4. 数据控制语言(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 学生姓名, addressAS 学生地址 FROM studentWHERE 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简介

上一篇:Java开发笔记(六十八)从泛型方法探究泛型的起源


下一篇:[转载] C++位运算:将一个4字节整数的二进制表示中的001替换为011