MySQL

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

数据库(Database):

数据库也是一种软件。

可以动态的对数据库润健创建的数据库,进行修改查询。

常用的数据库:

mysql,oracle,sqlserver,DB2数据库(IBM)

数据库的安装:

mysql一步一步安装即可。

Oracle1安装注意,安装出错就要重装系统。

一般的数据库软件都有对饮搞得客户端,通过客户端连接数据库

安装完成后在服务里面启动服务:


SQL语言:

SQL(Structured Query Language)结构化查询语言

-----------------------------------------------------------------------------------------------------------------------------------------------


MySQL语言分类:



SQL DML 和 DDL:




可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。

查询和更新指令构成了 SQL 的 DML 部分:

  • SELECT
  • UPDATE
  • DELETE
  • INSERT INTO

SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

SQL 中最重要的 DDL 语句:

  • CREATE DATABASE
  • ALTER DATABASE
  • CREATE TABLE
  • ALTER TABLE
  • DROP TABLE
  • CREATE INDEX
  • DROP INDEX


---------------------------------------------------------------------------------------------------------------------------------------------------

SQL SELECT 语法:


SELECT 列名称 FROM 表名称



  •  example:

我们建立了一个user用户表,并且在各个字段插入value。

mysql int 负数字段_mysql int 负数字段

查询结果为:

mysql int 负数字段_数据_02

我们也可以对某个满足条件的字段查询:

mysql int 负数字段_mysql_03

查询结果:

mysql int 负数字段_mysql_04


SQL SELECT DISTINCT 语句

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值。

语法:


SELECT DISTINCT 列名称 FROM 表名称



  •  example:

mysql int 负数字段_数据库_05


查询结果为:

mysql int 负数字段_mysql int 负数字段_06




WHERE 子句用于规定选择的标准。


WHERE 子句

如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。

语法



SELECT 列名称 FROM 表名称 WHERE 列 运算符 值



下面的运算符可在 WHERE 子句中使用:

操作符

描述

=

等于

<>

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

BETWEEN

在某个范围内

LIKE

搜索某种模式

注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。



  •  example:详细见例子1



AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。


AND 和 OR 运算符

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。




  •  example:

mysql int 负数字段_数据_07


查询结果为:

mysql int 负数字段_数据库_08




Update 语句

Update 语句用于修改表中的数据。

语法:


UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值



  •  example:


mysql int 负数字段_mysql int 负数字段_09

查询结果:

mysql int 负数字段_数据_10



DELETE 语句

DELETE 语句用于删除表中的行。

语法


DELETE FROM 表名称 WHERE 列名称 = 值




  •  example:

mysql int 负数字段_mysql_11


查询结果:

mysql int 负数字段_数据_12



LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。


LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。




一般LIKE和通配符使用:


SQL 通配符

在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE 运算符一起使用。


在 SQL 中,可使用以下通配符:

通配符

描述

%

替代一个或多个字符

_

仅替代一个字符

[charlist]

字符列中的任何单一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符



  •  example:

mysql int 负数字段_数据_13



查询结果:

mysql int 负数字段_数据_14


SQL别名:

语法:select coll(as) 别名,coll(as)别名 from 表名 where 条件

  •  example:

mysql int 负数字段_语言_15



查询结果:

mysql int 负数字段_语言_16



ORDER BY 语句用于对结果集进行排序。


ORDER BY 语句

ORDER BY 语句用于根据指定的列对结果集进行排序。

ORDER BY 语句默认按照升序对记录进行排序。

如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。




  •  example:

这里我们用另外一个table tablename is  emp.

mysql int 负数字段_mysql int 负数字段_17


我们将对sal字段进行排序:

mysql int 负数字段_数据库_18

查询结果如下:

mysql int 负数字段_数据库_19

现在我们看看分别对两个字段进行排序,看看又会是怎么样呢?

mysql int 负数字段_数据_20

查询结果:

mysql int 负数字段_语言_21

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


INSERT INTO 语句

INSERT INTO 语句用于向表格中插入新的行。

语法


INSERT INTO 表名称 VALUES (值1, 值2,....)


我们也可以指定所要插入数据的列:


INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)




  •  example:详细见例子1
  • ------------------------------------------------------------------------------------------------------------------------------------------------------------



SQL 拥有很多可用于计数和计算的内建函数。


函数的语法

内建 SQL 函数的语法是:



SELECT function(列) FROM 表


函数的类型

在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是:

  • Aggregate 函数
  • Scalar 函数





函数

描述

AVG(column)

返回某列的平均值

COUNT(column)

返回某列的行数(不包括 NULL 值)

COUNT(*)

返回被选行数

LOWER(column)

返回在指定的域中的字母换成小写

UPPER(column)

返回在指定的域中的字母换成大写

MAX(column)

返回某列的最高值

MIN(column)

返回某列的最低值

LENGHT(str)

返回某个字符的长度

SUBSTR(str , pos ,len)

切取字符

SUM(column)

返回某列的总和


代码笔记:




/*ORDER BY
ASC 升序
DESC 降序
*/
SELECT * FROM emp ORDER BY  sal ASC;/*以empno排序*/
SELECT * FROM emp ORDER BY sal DESC,deptno DESC;/*ORDER BY 排序只能作用于第一个排序的字段**/
/*常用函数*
*LOWER(str):转小写
*UPPER(str):装换成大写
*CONCAT(str1,str2,...):把字段连接起来
*LENGTH(str):字符串的长度
*SUBSTR(str,pos,len):切取字符
*ROUND(X,D):指定四舍五入到小数点后几位,可以用负数指定前几位
*TO_NUMBER(num):把数字字符串转换成数字
*TO_CHAR(str,格式):按指定格式格式化字符串
*/
SELECT  LOWER(dname) FROM dept WHERE deptno=30;
SELECT  UPPER(dname) FROM dept WHERE deptno=30;
set @num='sssss';
SELECT LENGTH(@num);
SELECT SUBSTR(@num,1,5);
SELECT dname,SUBSTR(dname,1,1) FROM dept;
SELECT empno ,TO_DAYS(??) FROM emp;
/**分组函数
*AVG(str):计算平均值
*MAX(expr):最大值
*/
SELECT*FROM emp;
SELECT AVG(sal) FROM emp;
SELECT AVG(sal) FROM emp WHERE sal>(SELECT AVG(sal) FROM emp);

SELECT COUNT(*) FROM emp;
SELECT MAX(sal) FROM emp;
SELECT MIN(sal) FROM emp;
SELECT SUM(sal) FROM emp;




/*********插入数据**********/
INSERT INTO user VALUES(1,'秦博',0,321654,1);
INSERT INTO user VALUES(2,'杜良思',0,321654,1);
INSERT INTO user VALUES(3,'熊东超',0,321654,2);
INSERT INTO user VALUES(4,'陈燧',0,321654,3);
INSERT INTO user VALUES(5,'范明珠',1,321654,4);
INSERT INTO user(userId,userName,userSex,password,flag) VALUES(6,'唐家伟',0,454545,5);
INSERT INTO user(userId,userName,userSex,password,flag) VALUES(7,'苟朋',0,545454,6);
INSERT INTO user(userId,userName,userSex,password,flag) VALUES(8,'苟朋',0,545454,6);
INSERT INTO user(userId,userName,userSex,password,flag) VALUES(8,'苟朋',0,545454,6);
SELECT * FROM user;
UPDATE user SET userSex=1 WHERE userName='范明珠';
/*查找表中女孩子1位女0男*/
SELECT userName FROM user WHERE userSex=1;
/**给查询出来的字段去别名**/

/*语法:select coll(as) 别名,coll(as)别名 from 表名 where 条件*/
SELECT userName as '小仙女' FROM `user` WHERE userName='范明珠';
SELECT userName as '帅哥',password as '密码' FROM user WHERE userId=1;

/*在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
	DISTINCT所有字段一样的只显示一条记录
*/
 SELECT DISTINCT * FROM user; 
/**实例(查询table中所有的不同密码)*/
SELECT DISTINCT password FROM `user`;
/*如果多个字段的话,表示当这个结果字段一样的话保留一条*/
/*语法:select coll(as) 别名,coll(as)别名 from 表名 where 条件*/
SELECT DISTINCT userName as 'USER',password as 'USER1' FROM user;


/**WHERE条件(=,!=,<>,<,><=,>=,ANY(任意一个),SOME(任何一个),ALL(所有))
BETWEEN(在某个范围内),
LIKE(	搜索某种模式模糊查询)*/
 
/**IS NULL  和 IS NOT NULL 都是查询状态*/

SELECT  userId FROM `user` WHERE userName IS  NULL;
SELECT * FROM user;

/*LIKE*/
/*
*  %(任意个任意字符)
*	 _(代表任何一个字符)	
*/
SELECT password FROM `user` WHERE `password` LIKE '%5%';

/*NOT ,AND ,OR
	AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
	如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
	如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
*/
SELECT userName FROM `user` WHERE userId>5 AND userId<=7;

SELECT * FROM `user` WHERE userId>5 OR userName LIKE '秦博';

DELETE FROM `user` WHERE userId>3;/*删除ID>3的每条信息*/