mysql数据库 详解 之 自学成才1
一、学习目录
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;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本文出处:http://www.cnblogs.com/suihui/p/3172049.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在此多谢原作者的分享。
mysql数据库 详解 之 自学成才1的更多相关文章
- SQLServer 远程链接MySql数据库详解
SQLServer 远程链接MySql数据库详解 by:授客 QQ:1033553122 测试环境: Microsoft Windows XP Professional 版本2000 Service ...
- intelliJ IDEA 配置MySQL数据库 详解
1> 在主界面中,点击右边侧栏的 Database ,在点击 + ,再Data Source 选择数据库 2> 填入 Database 数据库名,在输入 User 和 Password ...
- mysql数据库 详解
一.学习目录 1.认识数据库和mysql 2.mysql连接 3.入门语句 4.详解列类型 5.增删改查 INSERT INTO 表名(列1,…… 列n) VALUES(值 1,…… 值 n) ...
- Jmeter操作MySQL数据库详解
一.jmeter操作数据库的原理 jmeter不可直接操作数据库,必须通过驱动程序来间接操作,但如果数据库不是在本地而是云服务器上的话就需要通过网络来操作. jmeter通过驱动程序来完成对MySQL ...
- mysql数据库详解
001 数据库应用系统设计 1.规划 2.需求分析 3.概念模型设计 4.逻辑设计 5.物理设计 6.程序编制及调试 7.运行及维护. 002 创建数据库 CREATE DAT ...
- VS Code First使用Mysql数据库详解
最近电脑出毛病了,自己装显卡驱动给装死了开不了机,自己研究了两天也没解决,只有去修电脑的找专业人员,说起来惭愧,虽然自己是搞计算机的可电脑自己重装系统都还搞不定.重装系统又清理灰尘花了50大洋,现在用 ...
- 原生jdbc操作mysql数据库详解
首先给大家说一下使用JDBC链接数据库的步骤 1.加载链接数据库驱动 2.建立数据库链接 3.创建数据库操作对象 4.编写sql语句,执行sql语句 5.获取结果集 6.释放资源 我这边采用的是mav ...
- MySQL数据库详解之"双1设置"的数据安全的关键参数案例分享
mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性 ...
- docker中使用mysql数据库详解(在局域网访问)
开发过程中经常需要安装.调试mysql数据库,还需要在各种操作系上安装包依赖,实在是繁琐,因此就研究了一下如何在docker上运行一个mysql镜像,省却了我安装.找依赖的问题. 注:本文所有内容均在 ...
随机推荐
- Python assert作用
使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前, 我们不知道程序在哪里会出错.与其让它在运行最后崩溃,不如在出现错误 ...
- Jmeter测试报告生成
Jmeter测试报告生成 本文使用的 Jmeter 版本为 apache-jmeter-3.2 1. 命令行模式将 jtl 文件转成测试图表 注意: 这种方式只适用于jmeter3.0以后的版本 1. ...
- js中文编码到C#后台解码
escape() 方法: 采用ISO Latin字符集对指定的字符串进行编码.所有的空格符.标点符号.特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编 ...
- daemon_init函数:调用该函数把普通进程转变为守护进程
#include <unistd.h> #include <syslog.h> #include <fcntl.h> #include <signal.h&g ...
- EL 快速开始
技术选型上,推荐使用EL表达式,少用不用taglib. 大趋势 前后端分离 mvc+mvvm ,使用[thymeleaf]和前端更好结合,也是springboot官方推荐的做法. [viewTicke ...
- PHP面向对象的三大特征操作——封装、继承、多态(下)
<?php 继承(单继承)特点:一个子类只有一个父类,一个父类可以有多个子类.//父类(基类)class Ren{ public $name; public function say ...
- ue4 笔记
关卡场景内的模型在运行中,改变构建脚本后无法立即更新模型骨骼中心点碰到物理边缘 physcX会出问题 bug 纹理启用碰撞会与碰撞顶点冲突 造成效果不正确 IsInGameThread() 渲染时 会 ...
- 阿里云三台CentOS7.2配置安装CDH5.12
1 购买3台阿里云服务 2 配置好ssh连接客户端 根据自己情况连接 3 安装好MySQL5.7 跳过,见之前博客 安装在hadoop001上 4 设置好Hosts文件 3台机器同时操作 vim /e ...
- 03-13_static关键字
static主要作用 常见定义结构:public static void main(): static关键字可以用于定义属性及方法: static定义属性 在一个类之中,主要的组成就是属性和方法(分为 ...
- 读书笔记 Facebook在移动端都干了啥,居然让用户爱上广告
文章来源:http://news.cnblogs.com/n/513297/ Facebook武器: Facebook 的武器只有一个:让广告主基于目标用户群投放个性化的精准广告.基于高质量的广告内容 ...