17
10

Mysql笔记

查看和修改mysql默认编码

SHOW CHARACTER SET;查看支持的所有字符

show variables like 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';

让mysql重起也可以使用utf8
[mysqld]
default-character-set=utf8
[mysql]
default-character-set=utf8

Mysql备份

MySql的备份可用命令mysqldump ,使用方法很简单,

mysqldump -u 用户名 -p (密码) -h 主机名 数据库名 >路径/备份名.bak

同时也可以是用mysqldump备份数据结构(tablename.sql)和数据(tablename.txt)

mysqldump -u 用户名  -p (密码)  -h 主机名 数据库名 tablename1 tablename2 > back.sql

mysqldump -u 用户名 -p (密码) -h 主机名 数据库名 --tab 路径 --opt 数据库名.
EXA:
mysqldump -u pivot -p pivot news > ./news.sql

 


改变mysql管理员的密码

方法1:
在/usr/local/mysql/bin/下:
./mysqladmin -u root password 'new_password'
一般安装时用此方法设置。

方法2:
在mysql状态下:
mysql>UPDATE user SET password=PASSWORD('new_password') WHERE user='root';
mysql>FLUSH PRIVILEGES;

Method 3:
mysql>SET PASSWORD FOR root=PASSWORD('new_password');

常用数据操作语言DML笔记
select
select 列名1,列名2 ... from 表名1,表名2...
[where 条件] like
[group by...]
[having ...]
[order by...] 以特定的顺序显示 例:order by name asc;以名字显示,为降序排列
insert
insert into 表名(列名1,列名2,... )values(值1,值2,...)
update
update 表名 set 列名1=值1,列名2=值2 ... [where 条件]
delete
delete from 表名 [where 条件] 注:条件时会删除整个表名
truncate
truncate tables 表名 注相当删除整个表名,在重建。非常快
加载数据
load data infile '文件' into tables 表名 [fields terminated by '字符']
导出数据
select * from 表名 into outfile '文件'

什么情况下会导致mysql数据库损坏

  1. mysql正在运行的时候,服务器突然断电或者直接按reset键重启
  2. 硬盘空间不够,导致数据写不进去,也很有可能导致数据表损坏
  3. 物理硬盘有损坏

mysql修复方法

可以把mysql停掉,用mysql的命令myisamchk来修复,这种修复方法是最好的。

具体命令如下:

  1. myisamchk -r database/*.MYI
  2. myisamchk -o database/*.MYI
  3. myisamchk -f database/*.MYI

参数 -r, -o , -f 是递进关系,一般首先用-r修复,然后-o , -f

elpl
\c 放弃上面写入的sql语句
select

直接使用mysql
mysqladmin -uroot -p create pcti15
mysqladmin -uroot -p drop pcti15

mysql的导出导入
mysqldump -uroot -p mysql >pcti15.sql
mysql -uroot -p pcti >pcti15.sql

设置进入时的默认编码
mysql -uroot -p --default-character-set=utf8

DML数据操作语言
select insert update delete

DCL数据库控制语言
GRANT REVOKE

DDL数据定义语言
vreate tabe,drop table,altre table

数值类型
decimal

数值列的完整性约束
AUTO_

字符串列
CHAR VARCHAR TEXT 不分大小写,只能存字符 ,BLOB可以存二进制的内容,如果声音,文件.
CHAR主要是定长,VARCHAR是变长,所以VARCHAR更加节约空间.

desc 查表结构

添加
alter table test add name varchar(20);  添加一个name的字段
alter table test add f_name varchar(20) after id;  在id之后添加一个name的字段
alter table test add sid int first;           在最前面加入一个字段
alter table test add primary key(id);  添加一个primary主键

删除
alter table test drop name; 删除
alter table test add primary key; 删除主键

设置默认值
alter table test alter name set default '不知道';

修改字段名
alter table test change name l_anme varchar(10);  修改字段名,数据类型要写上

查找(相同内容比较)
select 'abc' like 'abc%';
%任意字符  _单个字符最少要出现一次

mysql中使用正规表达示
select 'abc' regexp '^a.*c$';

数据库插入
insert  表名 values
 insert into tmp values(default,'kate',0,20);可以使用default.
insert into tmp(name,sex,age) values('katess',0,20);

表的导入导出
insert tmp2 select name,sex from tmp where id<4;  可以给select 中得到的内容放到tmp2的新表中

更新表
UPDATE <表名> SET <列名 = 更新值> [WHERE <更新条件>]
update tmp set address='北京' where id between 4 and 5
删除表
DELETE FROM tmp WHERE id >5  删除id大于5的内容
DELETE FROM ss1,ss2 using ss1,ss2  where ss1.id=ss2.id and  ss1.name='alex' 二张表ss1和ss2相同的id中内容有alex的内容删除

查询

SELECT * FROM student ORDER BY sage DESC ; 降排序order by要放在最后
SELECT * FROM student ORDER BY  sdept in('信息系','美术系')  同时二个条件
SELECT sno AS '学号', sname AS '姓名' FROM student;
常用查询函数concat(字符连接) distinct(去掉重复数据) as(别名) limit 3,2 (控制显示数,如前现示从第三个起,拿二个数据)

集函数
count(统计) sun age

分组
select cid,avg(grad) from sc group by cid ;在分组中 group by要放在最后,要是要加条件的话,集函数要使用having来换where.放在group by后

多表查询

select s.sname,g.grade form sc as g,student as s where s.sname='洛%' and s.sno=g.sid
select s.sname,g.grade from sc as g inner join student as s on s.sno=g.sid :内连接,同连接显示相同的内容,要加inner给whereis 改成on
如果有的数据没有,可以换left,和right以第一个表为基础来排数据,inner join是二个表都有的内容.

子查询
select sname,sage from student where sno not in (select sid from sc) ;
select sname from student where sno in (select

, ,

引用地址:http://www.php-oa.com/2007/10/17/mysql-linux.html

要说点啥就在这吧