rpm -ivh mysql.rpm
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 -h hostip -u username -p password 数据库名称
脚本里面的注释
select * from user; /*xxxxxxxxxxx*/
-- xxxxxxxxxxxxxxxxxx
select * from user;
# xxxxxxxxxxxxxxxxxx
select * from user;
create database xxx
drop database xxx
数据库目录:/var/lib/mysql
每个表三个文件: frm, MYD, MYI
(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