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 <columnList> 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:  统计计算平均值


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容