一、学习目录

1.认识数据库和mysql

2.mysql连接

3.入门语句

4.详解列类型

5.增删改查

INSERT INTO  表名(列1,……  列n)  VALUES(值 1,……  值 n);

*(列1,……  列n)允许不写,如果不写,则默认插入所有列

INSERT INTO  表名  VALUES(值 1,……  值 n);

*VALUES 对应的值的输入顺序与表中字段顺序一致

改:

update 表名 set 列1 = 新值1, 列2 = 新值2, where expr

*改哪张表? 你需要给改哪几列的值? 分别改为什么值? 在哪些行生效?

删:

delete from 表名 where expr

*你要删哪张表的数据? 你要删掉哪些行?

查:

select 列1,列2,..列n from 表名 where expr

*查哪张表的数据? 你要选择哪些列来查询? 要选择哪些行?

6.查的5种子语句详解

7.连接查询

8.子查询

9.表引擎与字符集

10.索引与索引优化

11.触发器

12.事务

13.备份与恢复

二、入门语句

查看所有库

创建库

删除库

选择数据库

查看表

创建表

create table 表名 (
列1 [列属性 默认值],
列2 [列属性 默认值],
.....
列n [列属性 默认值]
)
engine = 存储引擎
charset = 字符集

删除表

改表名

三、详解列类型 之3大列类型

数值型(整型列,浮点型列)

字符型列

日期/时间类型

a.整型列存储范围与所占空间

b.整型列的可选属性

tinyint(M) unsigned zerofill

M: 宽度(在0填充的时候才有意义)

unsigned: 无符号类型(非负)

zerofill: 0填充,(默认无符号)

c.浮点型与定点型

float:浮点型    decimal:定点型    decimal更精确

float(M,D)

decimal(M,D) 6,2

M: 精度 (总位数,不包含点)

D: 标度 (小数位)

d.字符串类型

e.时期时间类型

f.特殊的NULL类型

NULL 不是假,也不是真,而是"空"

任何运算符,判断符碰到NULL,都得NULL

NULL的判断只能用is null,is not null

NULL 影响查询速度,一般避免使值为NULL

四、select 5种子句介绍

Where 条件查询

group by 分组

having 筛选

order by排序

limit 限制结果条数

五、连接查询

左连接 右连接 内连接

作用: 从2张或多张表中, 取出有关联的数据

①连接查询 之连接查询语法

左连接的语法. Select Ltable.* ,Rtable.* from Ltable left join Rltable on Ltable.colName = Rtable.colName

内连接的语法. Select Ltable.* ,Rtable.* from Ltable inner join Rltable on Ltable.colName = Rtable.colName

②连接查询 之左右连接与内连接的区别

:左右连接可互换

:A left join B 等价于B right join A

内连接是左右连接的交集

:mysql没有外连接

六、子查询

子查询就是在原有的查询语句中,

嵌入新的查询,来得到我们想要的结果集。

一般根据子查询的嵌入位置分为, where型子查询,from型子查询

①where型子查询

where型子查询即是:把内层sql语句查询的结果作为外层sql查询的条件.

典型语法:

select * from tableName where colName = (select colName from tbName where ....) {where colName in (select colName from tbName where ..)}

典型案例:

1:查询最新的一条商品

2:查询出某大栏目下的所有商品

②exists型子查询

exists即:外层sql查询所查到的行代入内层sql查询,要使内层查询能够成立

查询可以与in型子查询互换,但效率要高.

典型语法:

select * from tablename where exists(select * from tableName where ...)

典型案例:

1:查询出某大栏目下的所有商品

③from型子查询

from型子查询即:把内层sql语句查询的结果作为临时表供外层sql语句再次查询.

典型语法: select * from (select * from tableName where ...) where....

典型案例:

1:查询出每个栏目下的最新商品

2:BBS中查询每个栏目下的最新帖子

七、存储引擎与字符集

学习目的:

出于速度和安全性的要求,选取合理的存储引擎.

考虑多语言与移植的问题,选取合理的字符集.

八、存储引擎是什么概念?

数据库对同样的数据,有着不同的存储方式和管理方式 在mysql中,称为存储引擎

①存储引擎与其特点

②存储引擎的选择

文章,新闻等安全性要求不高的,选myisam

订单,资金,账单,火车票等对安全性要求高的, 可以选用innodb

对于临时中转表,可以用memory型 ,速度最快

九、字符集 (charset)

一句话说字符集

字符集就是一个字符<->二进制字节的映射表

字符集是一套符号和编码的规则,不论是在 oracle 数据库还是在 mysql 数据库,都 存在字符集的选择问题,而且如果在数据库创建阶段没有正确选择字符集,那么可能在后期 需要更换字符集,而字符集的更换是代价比较高的操作,也存在一定的风险,所以,我们推 荐在应用开始阶段,就按照需求正确的选择合适的字符集,避免后期不必要的调整。

①字符集的选择

1:节省空间 建议在能够完全满足应用的前提下,尽量使用小的字符集。 因为更小的字符集意味着能够节省空间、 减少网络传输字节数,同时由于存储空间的较小间接的提高了系统的性能。 有很多字符集可以保存汉字,比如 utf8、gb2312、gbk、gb18030 等等, 但是常用的是gb2312 和 gbk。 2:兼容性 因为 gb2312 字库比 gbk 字库小,有些偏僻字(例如:洺)不能保存,因此 在选择字符集的时候一定要权衡这些偏僻字在应用出现的几率以及造成的影响,

3:在互联网上,国际化的趋势不可避免,且存储空间已经越来海量化, 因此推荐用utf8,如果开发内网系统,如内部OA等,可以考虑GBK。

十、校对规则collate(了解即可)

一句话说校对规则 校对规则就是对字符集中的字符的"座次表"

请你给 A a B b C c D d 按升序排列

十一、字符集专题-彻底搞定乱码

客户端字符集 client

服务器存储,查询,比较时 用的字符集 (connection)

查询结果字符集 results

①字符集专题-新旧网站并存案例

十二、索引与优化 之索引是什么?

该字典前面的"目录"全部丢失 请找出'华'这个字来

如何快速找到某个字 可以给字典加目录 对数据库来说,索引的作用即是给 "数据"加目录

①索引与优化 之索引算法(了解)

设有N条随机记录,不用索引, 平均查找N/2次,那么用了索引之后呢

btree(二叉树)索引

hash(哈希)索引

②索引与优化 之索引的好处与坏处

好外:

加快了查询速度(select )

坏处:

降低了增,删,改的速度(update/delete/insert) 增大了表的文件大小(索引文件甚至可能比数据文件还大)

③索引与优化 之索引的使用原则

不过度索引

索引条件列(where后面最频繁的条件比较适宜索引)

索引散列值,过于集中的值不要索引 例如:给性别"男","女"加索引,意义不大

④索引与优化 之索引类型

普通索引 (index)

主键索引 (primary key)

唯一索引 (unique)

全文索引 (fulltext)

⑤索引与优化 之索引创建语法(1)

建表时直接声明索引:

create table tableName (

列1 列类型 列属性,

....

列N 列类型 列属性,

primary key(列名),

index (列名),

unique(列名),

fulltext(列名)

)engine xxxxx charset xxxx

⑥索引与优化 之索引创建语法(2)

通过修改表建立索引

alter table add index (列名);

alter table add unique (列名);

alter table add primary key(列名);

alter table add fulltext (列名);

⑦索引与优化 之索引删除语法

删除主键:

alter table drop primary key

删除其他索引:

alter table drop index索引名

注:索引名一般是列名,如果不是, 可通过show index from tableName查看索引

十三、触发器

学习目标:

触发器的定义

触发器的应用场合

掌握触发器的创建语法

会创建简单触发器

①触发器定义

进行数据库应用软件的开发时, 我们有时会碰到表中的某些数据改变, 希望同时引起其他相关数据改变的需求, 利用触发器就能满足这样的需求。 它能在表中的某些特定数据变化时自动完成某些查询。 运用触发器不仅可以简化程序, 而且可以增加程序的灵活性。

触发器是一类特殊的事务 ,

可以监视某种数据操作(insert/update/delete), 并触发相关操作(insert/update/delete)

②触发器应用场合

1.当向一张表中添加或删除记录时,需要在相关表中进行同步操作。 比如,当一个订单产生时,订单所购的商品的库存量相应减少。

2.当表上某列数据的值与其他表中的数据有联系时。 比如,当某客户进行欠款消费, 可以在生成订单时通过设计触发器判断该客户的累计欠款是否超出了最大限度。

3.当需要对某张表进行跟踪时。 比如,当有新订单产生时,需要及时通知相关人员进行处理, 此时可以在订单表上设计添加触发器加以实现

③触发器创建语法 之4要素

监视地点 (table)

监视事件 insert/update/delete

触发时间 after/before

触发事件 insert/update/delete

④触发器创建语法

创建触发器的语法

create trigger 触发器名称 after/befor (触发时间) insert/update/delete (监视事件) on 表名 (监视地址) for each row begin sql1; .. sqlN; end

⑤触发器引用行变量(1)

⑥触发器的删除

drop trigger triggerName

十四、事务 之事务的概念

思考: 我去银行给朋友汇款, 我卡上有1000元, 朋友卡上500元, 我给朋友转账50元(无手续费), 如果,我的钱刚扣,而朋友的钱又没加时, 网线断了,怎么办?

①事务 之事务的ACID特性

原子性(Atomicity):原子意为最小的粒子,或者说不能再分的事物。 数据库事务的不可再分的原则即为原子性。 组成事务的所有查询必须: 要么全部执行,要么全部取消(就像上面的银行例子)。

一致性(Consistency):指数据的规则,在事务前/后应保持一致

隔离性(Isolation):简单点说,某个事务的操作对其他事务不可见的.

持久性(Durability):当事务完成后,其影响应该保留下来,不能撤消

②事务 之事务的用法

开启事务(start transaction) 执行sql操作(普通sql操作) 提交/回滚(commit/rollback)

注意:建表的时候, 选择 innodb引擎

十五、备份与恢复

①备份命令

备份单独库下面的所有表的方法

mysqldump -uuname -ppasswd dbname > /dir/filename

备份某一库下面的几个表的方法

mysqldump -uuname -ppasswd dbname table1 table2.. tableN > /dir/filename

备份多个库的方法

mysqldump -uname -ppasswd -B db1 db2 > /dir/filename

备份所有库的方法

mysqldump -uname -ppasswd -A > /dir/filename

②恢复命令

1:在命令行操作

mysql -uuname -ppasswd [databaseName]< /dir/filename

2:登陆mysql后source操作

mysql> use dbname; mysql> source /dir/filename;

mysql数据库 详解的更多相关文章

  1. SQLServer 远程链接MySql数据库详解

    SQLServer 远程链接MySql数据库详解 by:授客 QQ:1033553122 测试环境: Microsoft Windows XP Professional 版本2000 Service ...

  2. intelliJ IDEA 配置MySQL数据库 详解

    1> 在主界面中,点击右边侧栏的 Database ,在点击 + ,再Data Source 选择数据库   2> 填入 Database 数据库名,在输入 User 和 Password ...

  3. mysql数据库 详解 之 自学成才1

    一.学习目录 1.认识数据库和mysql 2.mysql连接 3.入门语句 4.详解列类型 5.增删改查 INSERT INTO  表名(列1,……  列n)  VALUES(值 1,……  值 n) ...

  4. Jmeter操作MySQL数据库详解

    一.jmeter操作数据库的原理 jmeter不可直接操作数据库,必须通过驱动程序来间接操作,但如果数据库不是在本地而是云服务器上的话就需要通过网络来操作. jmeter通过驱动程序来完成对MySQL ...

  5. mysql数据库详解

    001 数据库应用系统设计 1.规划   2.需求分析   3.概念模型设计   4.逻辑设计   5.物理设计   6.程序编制及调试   7.运行及维护. 002 创建数据库 CREATE DAT ...

  6. VS Code First使用Mysql数据库详解

    最近电脑出毛病了,自己装显卡驱动给装死了开不了机,自己研究了两天也没解决,只有去修电脑的找专业人员,说起来惭愧,虽然自己是搞计算机的可电脑自己重装系统都还搞不定.重装系统又清理灰尘花了50大洋,现在用 ...

  7. 原生jdbc操作mysql数据库详解

    首先给大家说一下使用JDBC链接数据库的步骤 1.加载链接数据库驱动 2.建立数据库链接 3.创建数据库操作对象 4.编写sql语句,执行sql语句 5.获取结果集 6.释放资源 我这边采用的是mav ...

  8. MySQL数据库详解之"双1设置"的数据安全的关键参数案例分享

    mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性 ...

  9. docker中使用mysql数据库详解(在局域网访问)

    开发过程中经常需要安装.调试mysql数据库,还需要在各种操作系上安装包依赖,实在是繁琐,因此就研究了一下如何在docker上运行一个mysql镜像,省却了我安装.找依赖的问题. 注:本文所有内容均在 ...

随机推荐

  1. JAVA:连接池技术说明以及MVC设计模式理解

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjgzMDgwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  2. [Algorithm -- Dynamic programming] How Many Ways to Decode This Message?

    For example we have 'a' -> 1 'b' -> 2 .. 'z' -> 26 By given "12", we can decode t ...

  3. T-SQL 之 视图

    视图实际上就是一个存储查询,重点是可以筛选.组合和匹配来自基本表(或者其他视图)的数据,从而创建在很多方面像另一个基表那样起作用的对象.可以创建一个简单的查询,仅仅从一个表中选择几列,而忽略其他列:或 ...

  4. UNIX网络编程读书笔记:pselect函数

    函数原型 pselect函数是由POSIX发明的,其原型如下: #include <sys/select.h> #include <signal.h> #include < ...

  5. Cocos2d-x 3.2 Lua演示样例 AssetsManagerTest(资源管理器)

    Cocos2d-x 3.2 Lua演示样例 AssetsManagerTest(资源管理器) 本篇博客介绍Cocos2d-x 为我们提供的一个类--AssetsManager在Lua中的使用样例,效果 ...

  6. codechef The Ball And Cups题解

    The Ball And Cups At the end of a busy day, The Chef and his assistants play a game together. The ga ...

  7. 算法笔记_132:最大流量问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 何为最大流量问题? 给定一个有向图,并为每一个顶点设定编号为0~n,现在求取从顶点0(PS:也可以称为源点)到顶点n(PS:也可以称为汇点)后,顶点 ...

  8. Python 更新dict

    更新dict 对需要更新的key-value 直接赋值即可dict是可变的,也就是说,我们可以随时往dict中添加新的 key-value.比如已有dict:d = { 'Adam': 95, 'Li ...

  9. js 回调函数 精析

      UpdateTime--2018年9月13日16点51分 1.什么是回调函数? 在JavaScript中,回调函数具体的定义为: 函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行 ...

  10. 查询MYSQl数据表中的最后一条记录

    mysql: select * from table order by id DESC limit 1 oracle: select * from emp where id in (select ma ...