美文网首页
MySQL基础知识

MySQL基础知识

作者: FangHao | 来源:发表于2017-02-19 21:56 被阅读0次

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;

表的约束

  • 主键primary key
  • 非空not null
  • 惟一unique
  • 默认default
  • 外键foreign key

索引

创建索引

普通索引
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'@'%';
  • username:你将创建的用户名
  • host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
  • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

删除用户

DROP USER 'username'@'host';

赋权

GRANT privileges ON databasename.tablename TO 'username'@'host'
  • privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
  • databasename:数据库名
  • tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
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';
  • privilege, databasename, tablename:同授权部分

密码安全

修改密码

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

如果是当前用户

SET PASSWORD = PASSWORD("newpassword");

相关文章

  • mysql索引,锁机制,主从同步,日志分析

    mysql架构 mysql学习 MySQL系列(一)---基础知识大总结 --- 棒棒的!MySQL系列(三)--...

  • PHP全栈学习笔记18

    php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与...

  • PHP全栈学习笔记18

    php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与...

  • PHP面试知识脉络(更新中)

    PHP基础知识Javascript、jQuery、ajax基础知识Linux基础知识MySQL数据库的基础与优化程...

  • MySQL基础

    MySQL基础知识一 MySQL基础知识二 DQL 1. `` : 着重号,用来区分关键字和字段名 2. 查询过程...

  • MYSQL基础

    MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...

  • Mysql基础操作扫盲

    Mysql基础知识点整理:思维发散 未完,待续

  • SQL基础知识整理

    SQL基础知识整理 0. 查看当前数据库的配置 mysql> \s -------------- mysql Ve...

  • 找工作必备技能

    基础知识Java和JQuery SpringMVC 源码学习-入门 Mysql存储过程,Mysql高级查询相关SQ...

  • mysql学习大纲

    一、基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 MySQL存储引擎类型 In...

网友评论

      本文标题:MySQL基础知识

      本文链接:https://www.haomeiwen.com/subject/bywjwttx.html