奇特的MySql

MySQL是一个关系型数据库管理系统。

与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。

由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库

对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。

 

MYSQL的特性:

  1. 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性
  2. 支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统
  3. 为多种编程语言提供了API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
  4. 支持多线程,充分利用CPU资源
  5. 优化的SQL查询算法,有效地提高查询速度
  6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名
  7. 提供TCP/IP、ODBC和JDBC等多种数据库连接途径
  8. 提供用于管理、检查、优化数据库操作的管理工具
  9. 可以处理拥有上千万条记录的大型数据库

MYSQL编程:

MYSQL的常用命令:

•显示所有数据库:show databases;
•选定默认数据库:use dbname;
•显示默认数据库中所有表:show tables;
•放弃正在输入的命令:\c
•显示命令清单:\h
•退出mysql程序:\q
•查看mysql服务器状态信息:\s

 

使用PL/SQL编程的优缺点:

使用纯sql语句来操作数据库,有技术缺陷

  1. 不能模块化编程,为了完成下订单,可能要发出几条sql
  2. 执行速度低
  3. 安全性问题
  4. 浪费带宽
  5. 多语言支持:Mysql为C、C++、Python、Java、Perl、PHP、Ruby等多种编程语言提供了API,访问和使用方便。
  6. 可以移植性好:MySQL是跨平台的。
  7. 免费开源。
  8. 高效:MySql的核心程序采用完全的多线程编程。
  9. 支持大量数据查询和存储:Mysql可以承受大量的并发访问。

使用pl/sql来编写过程,可以提高效率

缺点:移植性不高

SQL编程规范:

  1. 当定义变量时,建议用v_作为前缀v_sal
  2. 当定义常量时,建议用c_作为前缀c_rate
  3. 当定义游标时,建议用_cursor作为后缀emp_cursor;
  4. 当定义例外时,建议用e_做为前缀e_error;

MYSQL数据库的备份:

使用mysqldump命令备份

mysqldump命令可以将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。
mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。这些CREATE语句和INSERT语句都是还原时使用的。还原数据时就可以使用其中的CREATE语句来创建表。使用其中的INSERT语句来还原数据

Mysqldump常用参数:
•–all-databases , -A 导出全部数据库
•–add-drop-database 每个数据库创建之前添加drop数据库语句
•–no-data, -d 不导出任何数据,只导出数据库表结构。
•–no-create-db, -n只导出数据,而不添加CREATE DATABASE 语句。
•–no-create-info, -t 只导出数据,而不添加CREATE TABLE 语句。

 

 

MYSQL的独特代码:

MySQL中没有check约束,可以用enum类型,或触发器实现。

 

MySQL不支持InnoDB,解决办法:

      /var/lib/mysql目录下,删除ibdata1、ib_logfile1、 ib_logfile0,然后重启MySql让其重建以上文件: 
      mysqladmin -uroot -p shutdown 
      sudo mysqld_safe &

 

MySQL中用正则表达式查询时不是匹配规则,而是包括。且规则有汉字时可能会出现问题。

 

MySQL触发器中不能用select语句。

 

MySQL存储过程中变量可以不用declare定义,变量不能带@。

 

MySQL查询页面中的变量不能用declare定义,直接使用即可,但是一定要有@。变量的生命周期到页面关闭,编译一次即可一直存在。

 

MySQL中没有top,可用limit 控制查询的行数。

 

MySQL在存储过程中对变量赋值,除set外可用 select  …  into 变量  ….   ,但一定要确保查询的结果只有一个,可以用limit 1 确保。(不同于sql,↓)

 

MYSQL不支持:
        Select * Into new_table_name from old_table_name;
替代方法:
        Create table new_table_name (Select * from old_table_name);

 

MySQL触发器中的两张表是new和old。

 

MYSQL的updata语句不能做查询,例如 update 表 set id = (select id from 表 where …)
替代方法:
        update 表 AS 表1 inner join 表 AS 表2 on 条件 set id = …
update 表 AS 表1 ,表 AS 表2 set id = …   WHERE 条件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值