SQL分类: 

DDL—数据定义语言(CREATEALTERDROPDECLARE) 
DML—数据操纵语言(SELECTDELETEUPDATEINSERT) 
DCL—数据控制语言(GRANTREVOKECOMMITROLLBACK)

首先,简要介绍基础语句: 

1、 连接数据库

Mysql h服务器地址 u用户名 p密码

注:-h一般不用

2、 增加用户

Grant select on 数据库.* to 用户名@登陆主机地址 identified by 密码;

例如:GRANT Select,Insert,Delete,Update ON samp.* TO bill@snake.net INDETIFIED BY "rock"

建立远程用户

GRANT ALL PRIVILEGES ON *.* TO 'andy'@'%'  IDENTIFIED  by 'password';

删除用户

Delete from user where user=test2 and host=localhost;

3、 更改密码

Mysqladmin 用户名 旧密码 password 新密码

进入数据库使用:

Mysql> Update  mysql.user  set  password=password(新密码)  where  user=root;

Mysql> flush   privileges; (刷新数据库)

4、忘记mysql密码

关闭当前运行的mysqld服务程序:service  mysqld  stop(要先将mysqld添加为系统服务)

使用mysqld_saft脚本以安全模式(不加载授权表)启动mysqld 服务

/usr/local/mysql/bin/mysqld_saft  --skip-grant-table  &

使用空密码的root用户登录数据库,重新设置ROOT用户的密码

mysql  -u   root

Mysql> Update  mysql.user  set  password=password(新密码)  where  user=root;

Mysql> flush   privileges;

5显示数据库

Show databases

6、显示库中数据表

Use 数据库名;

Show tables;

7、显示表结构

Use 数据库;

Desc 表名;

8、创建库 
  create database database-name

9、创建表

Use 数据库;

Create table 表名 (字段设定列表);

(具体字段设置再查阅)也可默认不加字段设定列表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 
根据已有的表创建新表: 
Acreate table tab_new like tab_old (使用旧表创建新表
Bcreate table tab_new as select col1,col2… from tab_old definition only


10、删除数据库或删除表 
  drop database dbname

drop table tablename;

delete from table1 where 范围

11、插入数据

Insert  into user(字段名称1、字段名称2value(字段值1,字段值2);

insert into table1(field1,field2) values(value1,value2);

12、查询数据

Select * from 表名where 条件

例如:select pwd,username from tableName where Login_name='123';

select * from user where id=2;

查找:select * from table1 where field1 like ’%value1%’ ---like;的语法很精妙,查资料

选择:select * from table1 where 范围;
排序:select * from table1 order by field1,field2 [desc] ;
总数:select count(*) as totalcount from table1 ;
求和:select sum(field1) as sumvalue from table1 ;
平均:select avg(field1) as avgvalue from table1 ;
最大:select max(field1) as maxvalue from table1 ;
最小:select min(field1) as minvalue from table1;

13、更新数据

Update 表名 set 字段名称=值 where 条件;

例如:update tableName set Login_name = '456',pwd=123 where Username='1';

Update user set username=china where id=2;

14、清空表中记录

Delete from 表名 条件;

例如:delete from user where id=2;

15、增加字段

alter table 表名 add column 字段名 字体类型 default;

例如:alter table user add column tel varchar(12) default;

16、更改字段名称

Alter table 表名 change 原字段名称  改后字段名称 字体类型 default;

例如:alter table user change tel intro varchar(33) default null;

17、更改字段默认值

Alter table 表名 alter 字段名称 set default;

例如:alter table user alter tel set default null;

18、更改字段数据类型

Alter table 表名 change column 原字段名称 改后字段名称 类型;

例如:alter table user change column username username varchar(20);

19、 更改表名

Alter table 旧表名 rename [to] 新表名;

例:Alter table aa rename to stuinfo

20、 给列改名

alter table pet change weight wei int;

增加列

alter table tbl_name add col_name type

例如,给表增加一列weight

mysql>alter table pet add weight int;

删除列

alter table tbl_name drop col_name 

例如,删除列weight

mysql>alter table pet drop weight;

改变列

alter table tbl_name modify col_name type

例如,改变weight的类型:

mysql> alter table pet modify weight samllint;

另一种方法是:

alter table tbl_name change old_col_name col_name type

例如:

mysql> alter table pet change weight weight samllint;

21、 增加主键

Alter table 表名 add column 字段名 字体类型 auto_increment PRIMARY KEY;

22、备份mysql

Mysqldump u root 数据库名 存储位置 备份名字

格式:mysqldump -u 用户名 -p 密码 数据库名 表名 >备份的路径

  备份mysql库结构

mysqldump  --d -B -h 192.168.10.1  -ubackup -pbackup test > test.sql

1MySQL数据库备份命令 备份MySQL数据库的命令

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

-p后面如果紧贴着密码那么无需再次输入。

2)备份MySQL数据库并删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

3)直接将MySQL数据库压缩备份

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

4)备份MySQL数据库某个()

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

mysqldump --add-drop-table [database_name] [table_name] >; file_name.datetime.sql
例如
SHELL>;mysqldump --add-drop-table bbs bbsuser >; bbs.user.2004-07-21.sql

5)同时备份多个MySQL数据库

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

6)仅仅备份数据库结构

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

一、导出数据库结构,包括所有表、存储过程、视图及触发器

mysqldump -uroot -p123456  --default-character-set=gbk --opt --extended-insert=false --triggers -R --hex-blob -x  -d db_name > /root/zhu.sql

二、导出结构及数据

在上面去掉-d参数

mysqldump -uroot -p123456 --default-character-set=gbk --opt --extended-insert=false --triggers -R --hex-blob -x db_name >/root/zhu.sql

 

三、还原

1、create database

2、

mysql -uroot -p123 db_name < e:/db_name.sql

mysql_upgrade

是一个binary命令,用来检查mysql在upgrade后所有数据库表(包括mysql库)是否与升级后的mysql版本兼容,同时也会升级mysql库下的系统表,它是用来代替mysql_fix_privilege_tables。它会check所有表并尝试对发现问题的表进行repair,执行完后会在datadir目录下生成mysql_upgrade_info文件记录mysql的版本号,以便再执行mysql_upgrade时判断是否还需检查所有表。

mysql_upgrade会等价执行以下命令:

mysqlcheck --all-databases --check-upgrade --auto-repair

mysql < fix_priv_tables

mysqlcheck --all-databases --check-upgrade --fix-db-names --fix-table-names

备份服务器上所有数据库

mysqldump –all-databases > allbackupfile.sql

还原MySQL数据库的命令

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

还原压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

将数据库转移到新服务器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

23导出数据

Select * from user into outfile 路径

查看所有权限类型

select privilege_type from information_schema.user_privileges;  

授予部分权限

grant select,update on mysql.* to hbhcen@localhost identified by