mysql 必备知识

一、MYSQL 连接

 命令格式:mysql -h 主机地址 -u 用户名 -p密码 [dbname]

这里的-p和密码是一起的不能分开写,如果确定使用某个数据库,可在其后加上数据库名

 如:连接远程主机111.111.111.111,mysql -h 111.111.111.111 -u root -p
 退出: exit(回车)
二、创建用户
命令:create user 用户名@‘%’ identified by 密码; #创建远程登入用户
create user 用户名@‘localhost’ identified by 密码; #创建本地登入用户
授予用户权限
完整命令格式:grant all privileges on 数据库名.* to 用户名@‘%’(或者@‘
localhost’); 授予某某数据库所有的权限给该用户
  grant all on *.* to 用户名@‘%’/'localhost' ;和上面一样


例如我只向授予ll用户在mydb数据库中的查询权限,(权限有很多了,如,select, insert, update, delete, create,drop )
grant select on mydb.* to ll@'localhost';
三、删除用户
命令:delete from user where user='用户名' and host='%';
删除用户权限
revoke all privileges on 数据库名.* to 用户名@‘%’;
revoke all privileges on 数据库名.* to 用户名@‘localhost’;
四、使用数据库
命令 use 数据库名;
五、数据库常用命令
show databases; 查看数据库
show tables; 查看表
show columns from 表; 查看表里的字段(列)
show grants,查看授予用户的权限
show create table ,显示创建数据库表的语句


create database 数据库名    创建数据库
drop database 数据库名      删除数据库
create table  表名
drop table   表名


在select中加上distinc 去除重复字段


六、备份和恢复数据库
备份数据库
  shell> mysqldump -h host -u root -p 数据库名 >dbname_backup.sql
  恢复数据库
  shell> mysqladmin -h myhost -u root -p create 数据库名  #先要创建数据库

  shell> mysqldump -h host -u root -p 数据库名 < dbname_backup.sql  恢复

 1.导出一个库结构(mysqldump和source是控制台命令不是sql)

mysqldump -d dbname -u root -p > xxx.sql

多个数据库

mysqldump -d -B dbname1 dbname2 -u root -p > xxx.sql

2.导出一个库数据

mysqldump -t dbname -u root -p > xxx.sql

多个库数据

mysqldump -t -B dbname1 dbname2 -u root -p > xxx.sql

3.导出一个库结构以及数据

mysqldump dbname1 -u root -p > xxx.sql

4.导出一个表数据

mysqldump -t dbname1 tablename1 -u root -p > xxx.sql

多个表数据

mysqldump -t -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql

5. 导入

mysql -u root -p

use daname;

source xxx.sql

-d 结构(--no-data:不导出任何数据,只导出数据库表结构)
-t 数据(--no-create-info:只导出数据,而不添加CREATE TABLE 语句)
-n (--no-create-db:只导出数据,而不添加CREATE DATABASE 语句)
-R (--routines:导出存储过程以及自定义函数)
-E (--events:导出事件)
--triggers (默认导出触发器,使用--skip-triggers屏蔽导出)
-B (--databases:导出数据库列表,单个库时可省略)

七、alter命令
    #表position增加列test
  alter table position add(test char(10));
  #表position修改列test
  alter table position modify test char(20) not null;
  #表position修改列test默认值
  alter table position alter test set default 'system';
  #表position去掉test默认值
  alter table position alter test drop default;
  #表position去掉列test
  alter table position drop column test;
八、增、删、改、查
    insert into 表名(列1,列2) values(值1,值2);
    delete from 表名; 清空表中数据
    delete from 表名 where...  删除满足条件的项
    #将财务部修改为财务一部
  update department set name='财务一部' where name='财务部';
    select 列1,列2 from 表名 where...      查询满足条件的列;
    重要的是联表查询
    #显示系统部的人员和职位
  select a.name,b.name department_name,c.name position_name
  from staffer a,department b,s_position c
  where a.department_id=b.id and a.position_id=c.id and b.name='系统部';
    联表查询尽可能用join on
    select * from A
    inner join B on B.name = A.name
    left join C on C.name = B.name
    left join D on D.id = C.id
    where C.status>1 and D.status=1;

你可能感兴趣的:(sql)