MySQL 视频教程

  1. 了解MySQL
  • rpm安装

rpm -ivh mysql.rpm

 

  • tar安装

 tar -xzvf mysql.tar.gz      解压

./configure                       生存makefile

make                               编译

make install                     安装

mysql_install_db

 

  •  启动/关闭

 service mysqld start/stop

 /etc/rc.d/init.d/mysqld start/stop

 mysqld_safe &  / mysqladmin shutdown

 

测试: mysqladmin  ping

版本:  mysqladmin  version

显示数据库:   mysqlshow

 

  • 连接mysql

mysql -h hostip -u username -p password  数据库名称

 

脚本里面的注释

select * from user;    /*xxxxxxxxxxx*/

 

-- xxxxxxxxxxxxxxxxxx

select * from user;

 

# xxxxxxxxxxxxxxxxxx

select * from user;

 

  • DCL 语句

 create database xxx

 drop database xxx

 

数据库目录:/var/lib/mysql

 

每个表三个文件: frm, MYD, MYI

 

  • PHPMyAdmin

 (1) Copy "phpMyAdmin-2.5.7-pl1.tar.gz" to server and unzip

 (2) 修改Apache的配置文件“/etc/httpd/conf/httpd.conf"

Alias /icons/ "/var/www/icons/"
Alias /phpmyadmin/ "/var/www/phpmyadmin/"

<Directory "/var/www/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
(3) service httpd restart

(4) 修改"config.inc.php"   in phpmyadmin 目录

$cfg['Servers'][$i]['auth_type']     = 'http';    // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user']          = 'root';      // MySQL user
$cfg['Servers'][$i]['password']      = 'als123';          // MySQL password (only needed
(5) 错误处理: cannot load MySQL extension,please check PHP Configuration.

 安装软件包:php-mysql-5.1.6-5.el5.i386.rpm

修改/etc/php.ini, 把前面的分号去掉

 

 ; extension=msql.so

Windows环境下:

 复制libmysql.dll到System32目录,修改php.ini,去掉;extension=php_mysql.dll前面的分号,重启Apache或者IIS

 

 

2. MySQL的语言结构

 

 字符串ANSI标准只允许使用单引号,MySQL可以支持单,双引号

 

数值型可以用科学计数法表示:11e+10,

 整数可以存成浮点数,转变成浮点数

 浮点数可以存整数,截断变成整数

 

可以表示十六进制 select 0xa + 100;

 

 select 0xa 不加数字表示字符

 select x'49' 也表示字符串

select hex('cat');      =      select x'636174';

布尔值

select TRUE,true,FALSE,false;  (1,0)

 

null 值:不同于数值0 或者字符串""

 

标识符:长度不能超过64, 如果有空格要用单引号括起来

 

 

MySQL大小写敏感: 数据库名字和表名

 

用户变量: set @var_name=value;

系统变量:

(1)全局

                 set global.sort_buffer_size=value;

                 set @@global.sort_buffer_size=value;

                 select @@global.sort_buffer_size;

                 show global variables like 'sort_buffer_size';

(2)局部

      global换成session

 

注释:

#

--

/*  xxxxxxxxxxx    */

 

 

3.MySQL的数据类型

日期类型不检查范围

 

 

 4.MySQL的函数

 (1)比较运算符

 =, !=(<>) , >, >=, <, <=  可以用于数值和字符串

 

is null, is not null, isnull(exp)

exp between min and max

exp in (v1,v2,...)

 

(2)逻辑运算符(返回值true(1),false(0),null)

not(!), and(&&), or(|),xor

 

(3)条件运算符

ifnull(expr1,value) 

nullif (expr1,expr2)  如果expr1为真返回null,否则返回expr2

 

case value when condition1 then result1 when condition2 then result2 else result3 end

case when condition1 then result1 when condition2 then result2 else result3 end

没有else返回null

 

if(expr1,expr2,expr3)   expr1为真返回expr2,否则返回expr3

 

(4)字符串函数

ASCII(str):   返回第一个字符的ascii值

bin(12):      十进制转成二进制

oct(12):      十进制转成八进制

hex(12):     十进制转成十六进制

 

char(77,78,79):返回字符串

char_length(str):字符数

length(str):字节数

 

concat(str1,str2,...........)

 

locate(substr,str)     不存在返回0

instr(str, substr)      

 

lpad(str,totallen,padstr)

rpad(str,totallen,padstr)

 

left(str,len)

right(str,len)

mid(str,from,len)

 

ltrim(str)

rtrim(str)

trim(str)

trim(both|leading|trailing substr from str)

 

replace(str, fromstr, tostr)

 

lcase(str)

lower(str)

ucase(str)

upper(str)

 

load_file(filepath)   存入blob

 

(5)数值函数

+,-,*,/,div,%,mod

floor(x) ceiling(x): 返回的都是整数

round(x,d)

exp(x)

ln(x)

log(x)

pi()

 

rand()

rand(n)

 

(6)日期函数

now()

sysdate()

current_timestamp()

currdate()

current_date()

currtime()

current_time()

 

(7)转换函数

cast(expr as type)

convert(expr, type)

 

(8)其他函数

database()

user()

system_user()

session_user()

password(str)

old_password(str)

 

 5. MySQL的DML语句

like _ ,%

 

 truncate table xxx;   DDL       

 

load data infile '/tmp/teacher.txt' into table teacher fields xxx,xxx;

 

select * from teacher into outfile '/tmp/teacher.txt'

 

 6. MySQL的DDL语句

 

 建库: create database (if not exists) xxx;

 删除库:drop database xxx;

 

表改名: alter table ta rename to tb;

 

alter table ta modify a type not null;

 

alter table emp change mgr mgr1 int(11);

 

Oracle 中的列改名:
ALTER TABLE refno RENAME COLUMN refcode1 TO refcode2;

 

alter table refno add loc varchar(200);

 

alter table refno add aaa;

alter table refno drop(column) aaa;

 

create view va as select * from tablea;

alter view va as select * from tableb;

drop view tablec;

 

create index INDEX_A on table(fa,fb);

drop index INDEX_A

 

创建存储过程及存储函数

 delimiter //

mysql> create procedure testproc(in bb int,out aa int)
    -> begin
    -> select count(*) into aa from emp where empno=bb;
    -> end//

delimiter ;

 

call testproc(1,@aa)

select @a;

 

mysql> create function testfunc(bb int) returns varchar(50)
    -> begin
    -> return 'Hello World!';
    -> end//
Query OK, 0 rows affected (0.00 sec)

mysql> select testfunc(10);

 

 

第一:存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。  
第二:存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。    
第三:存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。    
第四:存储过程主要是在服务器上运行,减少对客户机的压力。   
第五:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。  
第六:存储过程可以在单个存储过程中执行一系列   SQL   语句。  
第七:存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。   
    
 7. MySQL的事务与锁定

 start transaction/commit/rollback

 

 set autocommit = 0

 select @@autocommit;

 

 savepoint  identifier

 rollback to identifier

 

lock tables tn[read][write]

unlock tables

 

 8. MySQL的全文检索

fulltext(字段列表)  索引

 

select  * from table where match(字段列表) against('要查找的字符串')

select match(字段列表) against('要查找的字符串') from table   查看相似程度

 

逻辑全文检索,包含什么不包含什么

 

 9. MySQL的查询缓存

 

sql字符串必须相同, 大小写也要一样。

 

select @@query_cache_type;   on:总是缓存  demand

select sql_cache from ta;           --demand

select sql_no_cache from ta;

select @@have_query_cache;

select @@query_cache_size;   0表示没打开 set @@global.query_cache_size=1000000

select @@query_cache_limit;   默认是1M

 

mysql> flush query cache       整理cache碎片,提高效率
mysql> reset query cache      清楚cache

 

mysql> show status like 'qcache%'   可以查看cache的命中率

 

10. MySQL的管理

mysqladmin -u用户名  -p旧密码 password新密码

 

表优化

mysql> optimize  table 表1,表2,... ...

对含有varchar,blob或text列有效

 

备份与恢复

mysqldump

source

 

 

 

你可能感兴趣的:(sql,mysql,PHP,SQL Server,cache)