数据库的操作:
1.用 SHOW 显示已有的数据库
show databases
2.创建数据库:create database 创建数据库
create database db_name
3.删除数据库:
drop databse db_name
4.use 选定数据库.
use db_name
数据表的操作:
1.show/describe 语句显示数据表的信息:
show tables
2.create table 创建表:
create table 表名
(
列名 类型,
列名 类型
)
2.1 利用select的结果创建表.
MySQL 将为在 select
2.1.1 create table 表名
(
select * from 表名
)
2.1.2 create table user_testC select * from user_t
2.2 利用alter table修改表
2.2.1 增加列: alter table 表名 add col_name 类型.
2.2.2 删除列: alter table 表名 drop col_name
2.2.3 改变列: alter table 表名 modify col_name 类型
alter table 表名 change old_col_name (新的列名)col_name 类型
2.3.4 给表更名: alter table 表名 rename 新表名.
3.drop table 删除表: drop table if exists 表名.
drop table if exists 数据库.表名

4.插入语句:insert
insert into 表(列名,列名,列名....) values(,,....)
4.1 插入其他表选择的行:
insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;
5.查询语句:select
SELECT 语句的语法如下:
SELECT selection_list 选择哪些列
FROM table_list 从何处选择行
WHERE primary_constraint 行必须满足什么条件
GROUP BY grouping_columns 怎样对结果分组
HAVING secondary_constraint 行必须满足的第二条件
ORDER BY sorting_columns 怎样对结果排序
LIMIT count 结果限定
5.1 普通查询: select * from t_user
5.1.1 查询特定的行: select * from t_user where nickname like '%朱晓明%'
5.2 条件查询: select * from t_user where nickname like '%朱晓明%'
5.2.1 算术运算符:+,-,*,/,<,<=,=,!=或者<>,>=,>
5.2.2 逻辑运算符:NOT或!,OR或||,AND或&&
5.3 查询排序: order by 子句的语法 order by column_name [ASC(升序)|DESC(降序)][,....]
5.4 查询分组与行计数: select age,count(2) from person group by age
5.4.1 COUNT()函数计数非NULL结果的数目.MAX(),MIN(),AVG(),SUM()
5.4.2 表连接,1.inner join,2.select * from tableA A,tableB B where A.bid = b.id
5.5 修改,删除数据记录. update 表名 set 列名 = xx where 列名 运算符 值
5.6 删除记录: delete from 表名 where 要删除的记录.
*********************************MySQL函数字符串,索引*********************************
1.集合函数:
1.1 行列计数:COUNT(*),计算查询语句返回记录数.
1.2 计算平均值:AVG().对数字使用,忽略空值.
1.3 计算字段值的总和:SUM()
1.4 计算字段的极值MAX()和MIN()
2.操作日期和时间.
2.1 返回当前的日期和时间CURDATE(),CURTIME()返回当前时间,以HH:MM:SS或HHMMSS格式返回当前的时间值,NOW()
返回当前时期和时间以 YYYY-MM-DD HH:MM:SS 的格式或者 YYYYMMDDHHMMSS 的格式.
2.2 使用关系运算符和逻辑运算符来限制时间范围:
select * from table where end_date >= '2001-02-08' and end_date < '2001-02-08'
2.3 另一种方法,你可以使用LIKE来返回正确的记录.通配符'%'
2.4 比较日期和时间:TO_DAYS(date) TO_DAYS函数 返回一个天数 (从年份0开始的天数 )
3.字符串模式的匹配.
3.1:"_"匹配任意单个字符,"%"匹配任意数字字符。
3.2:扩展正则表达式模式匹配 REGEXP,NOT REGEXP
3.2.1 .匹配任何单字符
3.2.2 [...]匹配方括号内的任何字符.例如"[abc]",如果是范围的话-,[a-z]匹配任何小写字母,[0-9]匹配任何数字.
3.2.3 * 匹配零个或者多个在它前面的东西.比如[0-9]*匹配任何数量的数字,".*"匹配任何数量的任何东西.
"[aA]"匹配小写或大写的"a"而"[a-zA-Z]"匹配两种写法的任何字母。
3.2.4 为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用"^"
或在模式的结尾用"$"。
4.深入select的查询功能.
4.1. 别名 select name as 别名 from table
在子句中使用列的别名:select count(1) total from table having total > 1

select * from table as tb
4.2. 取出互不相同的记录,一般的办法是使用DISTINCT关键字:
4.3. NULL,使用IS NULL和IS NOT NULL.
4.4. 大小写敏感性
4.5. 检索语句与多个表想连接.inner join,left join(左表为主,右表匹配,匹配不到的为NULL,显示)
*******************************************索引属性*******************************************
1.提示:(一个索引可以由最多 15 个列组成)
2.索引有如下的几种情况:
INDEX 索引:通常意义的索引,某些情况下 KEY 是它的一个同义词。索引的列
可以包括重复的值。
 UNIQUE 索引:唯一索引,保证了列不包含重复的值,对于多列唯一索引,它保
证值的组合不重复。
 PRIMARY KEY 索引:也 UNIQUE 索引非常类似。事实上,PRIMARY KEY 索
引仅是一个具有PRIMARY 名称的 UNIQUE 索引。这表示一个表只能包含一个
PRIMARY KEY。
3.用 Alter Table 语句创建与删除索引:(CREATE INDEX 可对表增加普通索引或 UNIQUE 索引,
不能用)
create index index_name on table_name (column_list)
create unique index index_name on table_name (column_list)

3.1 创建表的时候创建索引:
create table person
(
id float,
name varchar(200),
age float,
remark varchar(200),
email varchar(200),
PRIMARY key index_name (id),
index index_nameA(name),
unique index_nameunique (email)
)
4.删除索引:drop index index_name on table_name
**************************************数据的备份和恢复*********************************************
1.使用Navicat Premium 图形界面操作:
1.1 备份与还原.
1.1.1 选中数据库有个备份,新建,可以选择(视图,函数,事件),也可以将备份文件另存为到桌面.(点击备份的文件,右击菜单,
还原备份.)
1.1.2 直接保存sql文件,点击数据库,出现菜单,然后转储sql文件.(导入的话,需要新建一个和数据库名字和原来一样.)
2.使用Navicat Premium 查看日志,他的目录是 logs.
2.1 HttpDump.log:保存 HTTP 服务器答复的数据。
LogHistory.txt:记录在 Navicat 数据库及数据库对象上全部已运行的作业上的全部 SQL 语句。从主菜单选择工具->历史日志,或使用快捷键 CTRL+H,在历史日志查看器打开 LogHistory.txt 文件。
注意:当 Navicat 重新启动时,这个记录将会被覆盖。
2.2 LogImport.txt:记录在导入进程期间发生的每个错误的详细数据,显示成功或失败。
注意:这个记录将会在每次导入时被覆盖。
LogExport.txt:记录在导出进程期间发生的每个错误的详细数据,显示成功或失败。
注意:这个记录将会在每次导出时被覆盖。
2.3 LogSynchronize.txt:记录数据同步进程期间发生的每个错误的详细数据,显示成功或失败。
注意:这个记录将会在每次同步时被覆盖。
LogCmd.txt:保存 Navicat 命令列进程和运行计划时全部操作的信息。

3. MySQL内建复制.这个配置可以去百度查询.
首先,要确定得到了一个完整的数据快照。如果忘记拷贝一个表或数据库将导致从
机线程序停止。生成快照的时刻是很关健的。你应该确保在拷贝数据文件之前二进制日志
功能是无效的。如果在得到快照之前就允许了二进制日志功能,从机的线程可能会停止,
原因就是当线程试图导入重要的记录时,可能会由于主键重复而停止。最好就是接照第二
部分所讨论的处理办法来做:关闭-拷贝-允许二进制日志功能重启。
你可能想要按照最初的一种方式来配制复制处理,并且在合适的时间关注从机,确
保从机与主机保持同步。
****************************************数据库的维护与修复**********************************************
表的故障检测和修正的一般过程如下:
 检查出错的表。如果该表检查通过,则完成任务,否则必须修复出错的数据库
表。
 在开始修复之前对表文件进行拷贝,以保证数据的安全。
 开始修复数据库表。
 如果修复失败,从数据库的备份或更新日志中恢复数据。
在使用 myisamchk 或 isamchk 检查或修复表之前,应该首先注意:
 建立数据库备份和使用更新日志,以防修复失败,丢失数据。
 仔细阅读本章内容以后再进行操作,尤其是不应该在阅读“避免与 MySQL 服务
器交互作用”之前进行操作。因为,在你没有足够的知识之前贸然操作,可能会
引起严重的后果。
 如果你在 Unix 平台上对表进行维护时,应该首先注册到专用的帐户 mysql,以
避免对表读写访问产生所有权的问题,以及破坏数据库目录的所有权限。
****************************************数据库优化**********************************************
1.建立索引,相对来说查询会快一些.
2.索引用于以下方面:
 快速找出匹配一个 WHERE 子句的行。
 在多个表的查询时,执行连接时加快了与其他表中的行匹配的行的搜索。
 对特定的索引列找出 MAX()或 MIN()值。
 如果排序或分组在一个可用索引的最左面前缀上进行(例如,ORDER BY
key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随 DESC,键
以倒序被读取。
 在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表
的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从
索引树被检索出来。
3.索引文件要占磁盘空间。如果有大量的索引,索引文件可能会比数据文件更
快地达到最大的文件尺寸。其次,索引文件加快了检索,但增加了插入和删除,以及更新
索引列中的值的时间(即,降低了大多数涉及写入的操作的时间),因为写操作不仅涉及
数据行,而且还常常涉及索引。一个表拥有的索引越多,则写操作的平均性能下降就越
大。
3.1 选择索引的准则
3.1.1 搜索的索引列,不一定是所要选择的列
3.1.2 使用惟一索引
3.1.3 使用短索引
3.1.4 利用最左前缀
3.1.5 不要过度索引
3.1.6 考虑在列上进行的比较类型

4.数据类型的一些问题:
4.1 使你的数据尽可能小
4.2 使用定长列,不使用可变长列
4.3 将列定义为 NOT NULL
4.4 考虑使用 ENUM 列
4.5 有关 BLOB 和 TEXT 类型
4.5.1 使用 BLOB 和 TEXT 类型的优点
4.5.2 使用 BLOB 和 TEXT 类型的可能弊端
4.6 必要的准则:1.对容易产生碎片的表使用 OPTIMIZE TABLE
2.使用多列索引
3.将 BLOB 值隔离在一个独立的表中
5.使用 ANALYSE 过程检查表列
6.查询的优化:
6.1 使用 EXPLAIN 语句检查 SQL 语句
例子:EXPLAIN select * from book
6.2 想使得查询变快,你可以加个索引.
6.2.1 优化where
6.2.1.1 删除不必要的括号:
6.2.1.2 常数调入:
6.2.1.3 删除常数条件(因常数调入所需):
6.2.1.4 索引使用的常数表达式仅计算一次.
6.2.1.5 在一个单个表上的没有一个 WHERE 的 COUNT(*)直接从表中检索信息。当仅使
用一个表时,对任何 NOT NULL 表达式也这样做。
6.2.1.6 无效常数表达式的早期检测。MySQL 快速检测某些 SELECT 语句是不可能的并
且不返回行。
6.2.1.7、如果你不使用 GROUP BY 或分组函数(COUNT()、MIN()……),HAVING 与
WHERE 合并。
6.2.1.8、为每个子联结(sub join),构造一个更简单的 WHERE 以得到一个更快的 WHERE
计算并且也尽快跳过记录
6.2.1.9、所有常数的表在查询中的任何其他表前被首先读出。一个常数的表是:
一个空表或一个有 1 行的表。
 与在一个 UNIQUE 索引、或一个 PRIMARY KEY 的 WHERE 子句一起使用的
表,这里所有的索引部分使用一个常数表达式并且索引部分被定义为 NOT
NULL。
6.2.1.10、对联结表的最好联结组合是通过尝试所有可能性来找到:(。如果所有在 ORDER
BY 和 GROUP BY 的列来自同一个表,那么当廉洁时,该表首先被选中。
6.2.1.11、如果有一个 ORDER BY 子句和一个不同的 GROUP BY 子句,或如果 ORDER
BY 或 GROUP BY 包含不是来自联结队列中的第一个表的其他表的列,创建一个临时
表。
6.2.1.12、如果你使用 SQL_SMALL_RESULT,MySQL 将使用一个在内存中的表。
6.2.1.13、因为 DISTINCT 被变换到在所有的列上的一个 GROUP BY,DISTINCT 与
ORDER BY 结合也将在许多情况下需要一张临时表。
6.2.1.14、每个表的索引被查询并且使用跨越少于 30% 的行的索引。如果这样的索引没能
找到,使用一个快速的表扫描。
6.2.1.15、在一些情况下,MySQL 能从索引中读出行,甚至不咨询数据文件。如果索引使
用的所有列是数字的,那么只有索引树被用来解答查询。
6.2.1.16、在每个记录被输出前,那些不匹配 HAVING 子句的行被跳过。
6.3 MySQL 怎样优化 LEFT JOIN
6.3.1 表 B 被设置为依赖于表 A。
6.3.2 表 A 被设置为依赖于所有用在 LEFT JOIN 条件的表(除 B 外)。
6.3.3 所有 LEFT JOIN 条件被移到 WHERE 子句中。
6.3.4 进行所有标准的联结优化,除了一个表总是在所有它依赖的表之后被读取。如果
有一个循环依赖,MySQL 将发出一个错误。
6.3.5 进行所有标准的 WHERE 优化。
6.3.6 如果在 A 中有一行匹配 WHERE 子句,但是在 B 中没有任何行匹配 LEFT JOIN
条件,那么在 B 中生成所有列设置为 NULL 的一行。
6.3.7 如果你使用 LEFT JOIN 来找出在某些表中不存在的行并且在 WHERE 部分你有下
列测试:column_name IS NULL,这里 column_name 被声明为 NOT NULL 的列,那么
MySQL 在它已经找到了匹配 LEFT JOIN 条件的一行后,将停止在更多的行后寻找(对一
特定的键组合)。
6.4 MySQL 怎样优化 LIMIT
6.4.1 如果你用 LIMIT 只选择一些行,当 MySQL 一般比较喜欢做完整的表扫描时,它
将在一些情况下使用索引。
6.4.2 如果你使用 LIMIT #与 ORDER BY,MySQL 一旦找到了第一个 # 行,将结束排
序而不是排序整个表。
6.4.3 当结合 LIMIT #和 DISTINCT 时,MySQL 一旦找到#个唯一的行,它将停止。
6.4.4 在一些情况下,一个 GROUP BY 能通过顺序读取键(或在键上做排序)来解决,并
然后计算摘要直到键值改变。在这种情况下,LIMIT #将不计算任何不必要的 GROUP。
6.4.5 只要 MySQL 已经发送了第一个#行到客户,它将放弃查询。
6.4.6 LIMIT 0 将总是快速返回一个空集合。这对检查查询并且得到结果列的列类型是
有用的。
6.4.7 临时表的大小使用 LIMIT #计算需要多少空间来解决查询。
以下是了解内容:
***************************************服务器级优化**************************************************

如何在服务器级优化数据库的性能,以及提高数据库性能涉及到的
硬件问题。选择一个尽量快的系统,使用 RAID 磁盘阵列是非常容易想到的方法。
对于数据库守护程序,既可以在编译时就提供合适的参数,也可以在选项文件中提供
需要优化的参数。
***************************************避免与 MySQL 服务器交互作用******************************************
1.锁定表的的方法:
1.1 内部锁定:
锁定表:LOCK TABLES tbl_name {READ | WRITE},[ tbl_name {READ | WRITE},…]
解锁表:UNLOCK TABLES
如果一个线程获得在一个表上的一个 READ 锁,该线程(和所有其他线程)只能从表中
读。如果一个线程获得一个表上的一个 WRITE 锁,那么只有持锁的线程 READ 或
WRITE 表,其他线程被阻止。
每个线程等待(没有超时)直到它获得它请求的所有锁。
WRITE 锁通常比 READ 锁有更高的优先级,以确保更改尽快被处理。这意味着,如
果一个线程获得 READ 锁,并且然后另外一个线程请求一个 WRITE 锁, 随后的 READ 锁
请求将等待直到 WRITE 线程得到了锁并且释放了它。
显然对于检查,你只需要获得读锁。再者钟情跨下,只能读取表,但不能修改它,
因此他也允许其它客户机读取表。对于修复,你必须获得些所以防止任何客户机在你对表
进行操作时修改它。
1.2 外部锁定
服务器还可以使用外部锁定(文件级锁)来防止其它程序在服务器使用表时修改文
件。通常,在表的检查操作中服务器将外部锁定与 myisamchk 或 isamchk 作合使用。但
是,外部锁定在某些系统中是禁用的,因为他不能可靠的进行工作。对运行 myisamchk
或 isamchk 所选择的过程取决于服务器是否能使用外部锁定。如果不使用,则必修使用内
部锁定协议。
****************************************************************************************************************

(办公)Mysql入门的更多相关文章

  1. 21分钟 MySQL 入门教程(转载!!!)

    21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...

  2. MySQL入门02-MySQL二进制版本快速部署

    在上篇文章 MySQL入门01-MySQL源码安装 中,我们介绍了MySQL源码安装的方法. 源码安装虽然有着更加灵活和更加优化等诸多优势.但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很 ...

  3. MYSQL入门全套(第三部)

    MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引简介 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构.如果想按特定职员的姓来查找 ...

  4. MySQL入门(三)

    写了两篇<MySQL入门>以后我发现,写书的人还是都挺有本事的,起码人家知道怎么编排自己想讲的知识点,我实在是不知道该先说那里后说哪里,那我就想到什么讲什么吧. 一 写SQL 其实我是不想 ...

  5. MySQL入门笔记

    MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: ·          rpm包形式 ·          通用二进制 ...

  6. MySQL入门转载

    21分钟 MySQL 入门教程 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html 目录 一.MySQL的相关概念介绍 二.Wi ...

  7. mysql 入门 基本命令

    MYSQL入门学习之一:基本操作  1.登录数据库    www.2cto.com     命令:mysql -u username –p (mysql -h主机地址 -u用户名 -p用户密码)   ...

  8. MySQL入门笔记(一)

    一.数据类型 1. 整型 2. 浮点型 3. 字符型 4. 日期时间型 二.数据库操作 1. 创建库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_nam ...

  9. MySQL入门(上)

    1 课程回顾 自定义标签&编码实战 1)自定义标签步骤: 1.1 编写标签处理器类,继承SimpleTagSupport类,覆盖doTag方法 1.2 在WEB-INF目录下建立tld文件,在 ...

随机推荐

  1. Java内存溢出异常(下)

    此篇是上一篇文章Java内存溢出异常(上)的续篇,没有看过的同学,可以先看一下上篇.本篇文章将介绍剩余的两个溢出异常:方法区和运行时常量池溢出. 方法区和运行时常量池溢出 这部分为什么会放在一起呢?在 ...

  2. 使用 SonarQube 来分析 .NET Core 项目代码问题

    0.介绍 Sonar 是一款开源的代码分析工具,可能有很多人已经用过,本篇文章主要是讲解如何在 Docker 里面安装 Sonar 并且用其来分析 .Net Core 项目. Sonar 是一个用于代 ...

  3. Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)

    1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...

  4. [转]迄今为止最优的Eclipse运行性能调优 ,含eclipse.ini

    最近,Eclipse(Eclipse-JEE3.5)运行十分缓慢(可能插件安装过多),因此,得到了个机会调优一下,以便提高工作效率 下图是未经任何调整eclipse的gc情况(使用jvisualvm命 ...

  5. 使用 trash 避免 rm -rf 悲剧

    昨晚做了一个令人痛心疾首的操作,rm -rf something,把我个人电脑里的重要文件夹给删掉了,懵逼了半天才缓过来.还好是个人文件,不对公司造成影响.这件事也让我意识到 rm -rf 确实是个高 ...

  6. Chapter 4 Invitations——7

    The next day, I was surprised that Jessica wasn't her usual gushing self in Trig and Spanish. 第二天,我很 ...

  7. Use Generic Replacements of 1.X Framework API Classes 用泛型替换Framework 1.X版本的API类

    第一章,第一节 用泛型替换Framework 1.X版本的API类. 说起来,我是没接触过Framework 1.X版本的程序,12年毕的业(算算时间也一年多了,依旧一事无成,汗),毕业之后到公司实习 ...

  8. SSM框架的sql中参数注入(#和$的区别)

    <select id="findUsersByUserName2" resultType="java.util.Map" parameterType=&q ...

  9. BurpSuite 各模块使用

    Proxy  代理 对浏览器进行代理 对浏览器增加代理服务器 可以对http 请求进行监视 intercept is on 进行监控  off 不监控 可以任意修改 对任意的网络请求 进行爬虫 在 s ...

  10. 使用Mybatis Generator插件自动生成映射文件(cmd无法进入文件,dns服务器对区域没有权威等问题)遇到问题

           使用Mybatis Genertor插件自动生MyBatis所需要的DAO接口,实体模型类,Mapping映射文件,将生成的代码赋值到项目工程中即可.     有命令行,Eclipse插 ...