MySQL基础知识

2017-02-19  本文已影响0人  FangHao

MySQL安装

sudo apt-get install mysql-server mysql-client

管理服务

sudo service mysql start/stop/restart

允许远程连接

修改配置文件

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
将bind-address=127.0.0.1注释

用户赋权

grant all privileges on *.* to 'root'@'%' identified by 'mysql' with grant option;
flush privileges;

重启数据库

数据库操作

创建数据库

create database DB_Name charset=utf8;

删除数据库

drop database DB_Name;

切换数据库

use DB_Name;

显示当前使用数据库

select database();

显示存在的数据库

show databases;

表操作

创建表

create table Table_Name(
  id int auto_increment primary key not null,
  name varchar(10),
  cls_id int,
  foreign key(cls_id) references class(id),
  index index_id(id(11)),
  .........
);

修改表

alter table Table_Name add|change|motify|drop column
alter table students add stu_name varchar(10) not null;
alter table students motify stu_name char(10);
alter table students change stu_name students_name varchar(10);
alter table students drop stu_name;
alter table students add constraint stu_cls foreign key(cls_id) references class(id);
alter table students drop foreign key stu_cls;

表的约束

索引

创建索引

普通索引
create index Index_Name on Table_Name(column【(length)】【desc|asc】);
唯一索引
create unique index Index_Name on Table_Name(column【(length)】【desc|asc】);
全文索引
create fulltext index Index_Name on Table_Name(column【(length)】【desc|asc】); --MySQL5.6之后InnnoDB也可以创建全文索引,全文索引主要是对char、varchar、text做的查询优化
多列索引
create index Index_Name on Table_Name(
column1【(length)】【desc|asc】,
column2【(length)】【desc|asc】
column3【(length)】【desc|asc】
......);

删除索引

drop index Index_Name on Table_Name;

视图

创建视图

create view View_Name as 查询语句;

查看视图

select * from View_Name;
show create view View_Name;

删除视图

drop view View_Name 【,View_Name2,.....】;

修改视图

create or replace view View_Name as 查询语句;

触发器

创建触发器

create trigger trigger_Name
  BEFORE|AFTER trigger_Event
    on TABLE_NAME FOR EACH ROW trigger_STMT;
trigger_Event:
- INSERT
- DELETE
- UPDATE
trigger_STMT:
满足触发条件后执行的语句

删除触发器

drop trigger Trigger_Name;

数据维护

插入

insert into Table_Name(name,gender) values ('张三',1),('李四',1),('王五',1);
insert into Table_Name values (0,'张三',1),(0,'李四',1),(0,'王五',1);--不选择插入的列需要全部的列都要写,默认的列的值如果写上会被替换,如果不写可以用default代表默认

删除

delete from Table_Name where id=1;
truncate table Tabel_Name;--注意截断表的数据无法恢复,但是删除速度快

更新

update Table_Name
  set field1 = value1,
      field2 = value2
  where CONDITION;

查询

查询语句

select distinct *
from 表名
where ....
group by ... having ...
order by ...
limit star,count;

执行顺序

from 表名
where ....
group by ...
select distinct *
having ...
order by ...
limit star,count

聚合

count()
sum()
avg()
max()
min()

关系

join
inner join
left join
right join
select * from sutdents inner join class on students.cls_id = class.id;

自关联

create table areas(
aid int primary key,
atitle varchar(20),
pid int,
foreign key(pid) references areas(id)
);

事务

begin;
commit;
rollback;

数据库备份

备份

mysqldump -uroot p DatabaseName > ~/Desktop/back.sql

恢复

mysql -uroot –p DatabaseName < ~/Desktop/back.sql

用户

创建用户

CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';

删除用户

DROP USER 'username'@'host';

赋权

GRANT privileges ON databasename.tablename TO 'username'@'host'
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;--赋权给用户可以给他们赋权的权限

撤销赋权

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

密码安全

修改密码

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是当前用户

SET PASSWORD = PASSWORD("newpassword");
上一篇 下一篇

猜你喜欢

热点阅读