MySQL--基础

一、相关资源

mysql基础介绍:mysql学习

数据库终端快速补全工具:mycli

1.mysql对表的操作

1.创建表

步骤:

1. 先进入某一个数据库

2. 输入建表的命令

CREATE TABLE 表名(

  列名1    列的类型  [约束],

  列名2    列的类型  [约束],

  ....

  列名N    列的类型  [约束] 

);

注意:最后一行没有逗号

使用使用标识符时不要用SQL的关键字,如果用到的话怎么办呢?比如新建一张订单表(order),但是order是数据库中的关键字(排序使用).

解决方案一:使用反引号`把自定义的标识符引起来.

解决方案二:使用表名的前缀,一般的,习惯t_order.

2.查看表结构和删除表

查看表目录:SHOW TABLES;

查看表结构: DESC table_name;

查看DDL语句:SHOW CREATE TABLE table_name;

删除表:DROP TABLE table_name;

3.表的约束:表的约束(针对于某一列):

非空约束:NOT NULL(NK),不允许某列的内容为空。

设置列的默认值:DEFAULT。

唯一约束:UNIQUE(UK),在该表中,该列的内容必须唯一。

主键约束:PRIMARY KEY(PK), 非空且唯一。

主键自增长:AUTO_INCREMENT,从1开始,步长为1。(MySQL特有)

外键约束:FOREIGN KEY(FK),A表中的外键列的值必须参照于B表中的某一列(B表主键)。

主键设计:

1:单列主键,单列作为主键,建议使用。

    复合主键,使用多列充当主键,不建议。

2:主键分为两种:

  1)自然主键:使用有业务含义的列作为主键(不推荐使用);

  2)代理主键:使用没有业务含义的列作为主键(推荐使用);

2.修改数据库表的信息:

1.修改表的字段(纵列)选项

修改表选项("[]"中括号里的内容表示可有可无的选项):

alter table 表名 表选项 [=] 新值

        eg:alter table student charset utf8

新增字段(默认加到表的最后面):

alter table 表名 add [column纵列] 新字段名字 列类型 [列属性]  [位置first/after字段名]

修改字段名:

alter table 表名 change 旧字段名   新字段名字 列类型 [列属性]  [位置first/after字段名]

修改字段类型(属性):

alter table 表名 change 旧字段名   新字段名字 列类型 [列属性]  [位置first/after字段名]

删除字段:

alter table 表名 drop 字段名

2.修改表

修改表名字(将student改为my_student):

rename table 旧名字 to 新名字

        eg:rename table student to my_student

删除表:

drop table 表名[,表名]

单表查询(DQL上)

一、简单查询

1.简单数据查询

语法:

SELECT  {*, column [alias],...}

FROM  table_name;

说明:

SELECT  选择查询列表

FROM  提供数据源(表、视图或其他的数据源)

如果为 * 和创建表时的顺序一致。

可以自己调整顺序,在select后边加上要查询的列名。

2.避免重复数据-DISTINCT

消除结果中重复的数据。

需求:查询商品的分类编号。

语法:

SELECT DISTINCT 列名,...

FROM  table_name;

3.实现数学运算查询

对NUMBER型数据可以使用算数操作符创建表达式(+  -  *  /)

对DATE型数据可以使用部分算数操作符创建表达式 (+  -)

运算符优先级:

1、乘法和除法的优先级高于加法和减法

2、同级运算的顺序是从左到右

3、表达式中使用"括号"可强行改变优先级的运算顺序

4.设置列的别名

设置列名的别名。

1、改变列的标题头;

2、用于表示计算结果的含义;

3、作为列的别名;

4、如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加双引号;

二、过滤查询

1.比较运算符

比较运算符      含义

=              等于

>              大于

>=              大于或等于

<              小于

<=              小于或等于

!=(<>)      不等于

注意:字符串和日期要用单引号扩起来.

要让MySQL查询区分大小写,可以:

SELECT * FROM table_name WHERE BINARY productName='g9x'

SELECT * FROM table_name WHERE BINARY productName='G9X'

2.逻辑运算符

逻辑运算符        含义

AND(&&)          如果组合的条件都是TRUE,返回TRUE

OR(||)          如果组合的条件之一是TRUE,返回TRUE

NOT(!)          如果下面的条件是FALSE,返回TRUE

3.优先级规则

运算优先级      运算符

1              所有比较运算符

2              NOT

3              AND

4              OR

注意:括号将跨越所有优先级规则

分析SQL:SELECT * FROM product WHERE (NOT productName LIKE '%M%'  AND salePrice > 100) OR (dir_id = 2)

4.范围查询 -BTEWEEN AND

使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用。

格式:

SELECT FROM table_name

WHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。

5.集合查询 -IN

使用IN运算符,判断列的值是否在指定的集合中。

格式: WHERE 列名 IN (值1,值2....);

6.空值查询 -IS NULL

IS NULL:判断列的值是否为空。

格式:WHERE  列名 IS NULL;

7.模糊查询

使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:

%通配符:可表示零或多个字符。

_通配符:可表示一个字符。

通配符:用来实现匹配部分值得特殊字符。

三、结果排序

排序通过ORDER BY 实现 ASC升序 DESC降序 默认是升序

1.排序语法和规则

2.按单列排序

3.按多列排序

4.列的别名排序

四、MySQL分页查询

分页设计:

假分页(内存分页):所有数据已经存在内容中,只是显示部分而已,

    优点:每次翻页时都从内存中取数据,翻页速度极快,简单

    缺点:消耗内存大,容易内存溢出

真分页(数据库分页):每次翻页都去数据库查询数据

    优点:不会造成内存溢出

    缺点:翻页比较慢,复杂

此时,我们讲解MySQL特有的分页方式(LIMIT,在Oracle12C中也提供类似的语法).

设置每页最多3条记录:

语法: LIMIT ?, ?

演示下公式的分页查询效果 LIMIT (currentPage-1) * pageSize, pageSize

LIMIT是MySQL内置函数,其作用是用于限制查询结果的条数

1)其语法格式如下:

LIMIT[位置偏移量,]行数

其中,中括号里面的参数是可选参数,位置偏移量是指MySQL查询分析器要从哪一行开始显示,索引值从0开始,即第一条记录位置偏移量是0,第二条记录的位置偏移量是1,依此类推...,第二个参数为“行数”即指示返回的记录条数。

位置偏移量可以理解为跳过前xx条记录(元组).

2)基本用法

/*当没有指定位置偏移量时,只取4条时,可以这样写*/

SELECT* FROMYourTableName LIMIT 4;


/*当指定了位置偏移量时,从第3条起取4条时,可以这样写*/

/*因为索引是从0开始计数的,所以第3条对应的索引就是2*/

SELECT* FROMYourTableName LIMIT 2,4;

3)应用场合:分页

 // 后台计算出页码、页数(页大小)

 intcurPage = 2;

 intpageSize = 10;

 intstartRow = (curPage - 1) * pageSize;

1SELECT* FROMYourTableName LIMIT startRow,pageSize;


五、聚合函数

什么是聚合函数/统计函数:

聚合函数作用于一组数据,并对一组数据返回一条记录。

COUNT:统计结果记录数 

MAX:  统计计算最大值

MIN:  统计计算最小值

SUM:  统计计算求和

AVG:  统计计算平均值


你可能感兴趣的:(MySQL--基础)