数据库基本命令
#创建数据库
create database book(数据库名);
#删除数据库
drop database book(数据库名);
#查看数据库
show databases ;
#查看某个数据库信息
show create database book(数据库名);
#修改数据库
alter database book(数据库名) default character set gdk(编码方式) collate gbk(编码方式)_bin;
表单基本命令
===创建表单====
create table teacher(表单名)
(
id int(5),
name varchar(10),
email varchar(10)
);
#删除表单
drop table teacher(表单名);
#查看所有表单
show tables;
#查看某个表单信息
show create table teacher(表单名);
或 show create table teacher \G
#使用describe查看数据表
describe teacher(表单名);
或 desc teacher(表单名);
#修改表名
alter table teacher(旧名) rename my_teacher(新名) ;
#修改字段和数据类型
alter table teacher(表名) CHANGE 旧字段名 新字段名 新数据类型 ;
#修改字段数据类型
alter table tercher(表名) modify 字段名 新数据类型 ;
#添加字段
alter table teacher(表名) add 新字段名 数据类型 ;
#删除字段
alter table teacher(表名) drop email ;
#修改字段位置
alter table teacher(表名) modify name(字段名) varchar(10)(数据类型) first(位置) ;
PRIMARY KEY CONSTRAINT (主键约束)
===单字段主建===
#创建表单时指定主建
create table company(表名)
(
id int(11) primary key, #peimary key 就是设置主键的命令,同下
name varchar(50),
address varchar(50)
);
#为已存在表单添加主键约束
alter table company(表名) modify 字段名 数据类型 primary key;
#删除主键约束
alter table company(表名) drop primary key;
💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖
===复合主键===
复合主键指主键由多个字段组成
#创建表单时指定复合主键
primary key (字段名1,字段名2,字段名3) ;
create table company(表名)
(
id int(10),
name varchar(10),
address varchar(10),
primary key(id,name) #此处所选为上面定义的字段
);
#为以存在表单添加复合主键
alter table company(表名) add primary key (字段名1,字段名2) ;
#删除复合主键
alter table company(表名) drop primary key ; #此处删除后这个表单中复合主键都会被删除
FOPEIGN KEY CONSTRAINT(外键约束)
===外键约束===
一个表可以有一个或多个外键,一个表可以为空值,诺不为空值则这个表的外键值必须等于另一个表中主键某个值。
主表:对于两个有相关联的表而言,相关联字段中主键所在的那个表即是主表
从表:对于两个有相关联的表而言,相关联字段中外键所在的那个表即是从表
===添加表示添加外键约束===
语法格式如下:
constraint 外键名 foreign key (从表的外键字段名) references 主表名 (主表主键字段名) ;
例:先建主表
create table student(表名) #主表
(
id int(11),
name varchar(10),
school varchar(10),
age int(10)
) ;
再建从表
create table teacher(表名) #从表
(
id int(11),
name varchar(10),
school varchar(10),
domain varchar(10),
#在从表写入如下内容
constraint fk_teacher_student(外键名)0 foreign key (domain)(从表外键字段名) references student(主表名) (school)(主表主键字段名)
) ;
==================================================================================================================================
===为已存在表添加外键约束===
语法如下:
alter table 从表名 add constraint 外键名 foreign key (从表的外键字段名) references 主表名 (主表的主键字段名) ;
#先建主表再建从表
create table student(表名) #主表
(
id int(11) primary key,
name varchar(10),
school varchar(10),
age int(10)
) ;
create table teacher(表名) #从表
(
id int(11) primary key,
name varchar(10),
school varchar(10),
domain varchar(10)
) ;
接下来使用alter table 语句为teacher从表创建外键
alter table teacher add constraint fk_teacher_student foreign key (school) references student (name);
===删除外键约束===
语法如下:
alter table 从表名 drop foreign key 外键名 ;
删除teacher表school字段外键约束
alter table teacher drop foreugn key fk_teacher_student ;
NOT NULL CONSTRALNT(非空约束)
===创建表时添加非空约束===
字段名 数据类型 not null ;
create table 表名
( id int(11) primary key,
name varchar(50),
num int(20) not null
);
===为已存在的表添加非空约束===
alter table 表名 modify 字段名 新数据类型 not null ;
#删除非空约束
alter table 表名 modify 字段名 数据类型 ;
UNIQUE CONSTRAINT (唯一约束)
语法格式如下:
字段名 数据类型 unique ;
===创建表单时添加唯一约束===
create table comany(表名)
(
comany_id int(11) primary key,
comany_name varchar(15) unique, #添加唯一约束
comany_address varchar(15) not null
) ;
===为已存在表添加唯一约束===
语法格式如下:
alter table 表名 modify 字段名 新数据类型 unique ;
喏comany 表中comany_name没有设置唯一约束,呢么下面将设置
alter table comany modify comany_name varchar(15) unique ;
删除唯一约束
语法格式如下:
alter table 表名 drop index 字段名 ;
#删除company 中comany_name的唯一约束
alter table comany drop index comany_name ;
DEFAULT CONSTRAINT(默认约束)
将数据中某列设置为默认约束,如果用户没有指定数据呢么系统自动将默认赋值给该列。
===创建表单时添加默认值===
语法如下:
字段名 数据类型 default 默认值 ;
create table comany(表名)
(
comany_id int(10) primary key , #设置为主键
comany_name varchar(50) unique, #设置为唯一约束
comany_address varchar(200) not null, #设置为非空约束
comany_tel varchar(20) default '0371-' #设置默认值
) ;
===为已存在表添加默认约束===
语法格式如下:
alter table 表名 modify 字段名 新数据类型 default ' 默认值 ' ;
删除默认值
语法如下:
alter table 表名 modify 字段名 数据类型 ;
#删除comany表中comany_tel 字段默认约束
alter table comany modify comany_tel varchar(20) ;
设置表的字段值自动增加
===创建表示指定字段自动增加===
语法如下:
字段名 数据类型 primary key auto_increment ;
create table comany(表名)
(
comany_id int(11) primary key auto_increment, #设置为主键并将其设置为值自动增加
comany_name varchar(50) unique, #设置为唯一约束
comany_address varchar(200) not null, #设置为非空约束
comany_tel varchar(20) default '0371-' #设置为默认约束
) ;
===为已存在表单设置字段自动增加===
语法格式如下:
alter table 表单 modify 字段名 新字段类型 auto_increment ;
诺上表comnay中comany_id没有设置自动增加,下面将其添加自动增加功能
alter table comany modify comany_id int(11) auto_increment ;
删除字段值得自动添加
语法格式如下:
alter table 表名 modify 字段名 数据类型 ;
数据表记录插入
===向数据表中插入单行数据===
语法格式如下:
insert 表名 (列表1,列表2,列表3) values ('值1','值2','值'3) ;
例:
#创建一个love表单
create table love(表名)
(
name varchar(20) primary key,
id int(10) unique,
age int(120),
tel varchar(120) default '0371-'
) ;
#插入一条数据:
insert love (name,id,age,tel) values ('messi','10','35','17238355593') ;
===向数据表中插入多条记录===
向一个表单中插入多个数据是可以无需写出列表values后面可直接写值,但是要与表单山字符顺序对应。
语法格式:
insert 表名 values ('值1','值2','值3','值4'),('值1','值2','值3','值4') ; #按照格式加多少个都行
借用上面love表单我们插入多条数据格式如下:
insert love values ('CR7','7','38','17538355593'),('bogeba','9','28','17538355593') ;
数据表记录的修改
创建一个表单:
ariaDB [jing]> create table love (表名)
-> (
-> id int(10) unique,
-> name varchar(40) primary key,
-> age int(120),
-> tel varchar(150)
-> );
===修改整个数据记录===
语法格式如下:
MariaDB [mysql]>update 表名
-> set 字段名='新值'
-> [ where 条件表达式 ]
例:将 love表 tel 改为保密
MariaDB [jing]> update love
-> set tel='保密';
===修改其中一个数据记录===
MariaDB [jing]> update love
-> set tel='17538355593'
-> where name='cr7';
使用DELETE删除数据
创建一个love表单
MariaDB [mysql]>create table love(表名)
(
->name varchar(20) primary key,
->id int(10) unique,
->age int(120),
->tel varchar(120) default '0371-'
) ;
语法格式如下:
MariaDB [mysql]>delete from 表名
[ where 条件表达式 ]
===删除某一个数据===
MariaDB [jing]> delete from love
-> where name='Messi'; #只删除了Messi这行数据
===删除整个数据表记录===
MariaDB [mysql]>delete from love(表名);
数据库备份与恢复
备份单个数据库
mysqldump -u username -h host -ppassword dbname[dbname2,dbname3...]>filename.sql
username 登陆用户名
host 登陆主机名
password 登陆者密码
dbname 要备份的数据库名
备份多个数据库
mysqldump -u username -h host -ppassword --databases dbname[dbname1,dbname2...] >filename.sql
备份多个时要添加 --databases ,后面写数据库名字,名字与名字之间以空格区分。
备份所有数据库
mysqldump -u username -h host -ppassword --databases --all-databases > filename.sql
--all-databases参数备份所有数据库
数据库恢复
mysql -u username -ppassword [dbname]<filename.sql
dbname表示要恢复的数据库名称filename.sql 表示
如果使用mysqlname备份的filename.sql 里面包含创建数据库的语句则不需要指定数据库。
方法二:
先登录MySQL服务器,再使用source语句导入已经备份好的文件
语法如下:
source filename.sql (filename.sql必须是全路径)
用户管理—创建用户,删除用户,修改用户
创建用户有很多方法下面展示我喜欢的方式
使用GRANT privileges ON database.table TO 'username'@'host' identified by 'password' ;
privileges :赋予用户权限类型
database.table:用户权限范围(填表名或数据库名)
例:创建一个新用户,名为jzy,密码为abc,并授予该用户对teacher表有查询权限
MariaDB [mysql]>GRANT table on teacher to ‘jzy’@‘loaclhost’ identified by ‘abc’ ;
查看用户信息
MariaDB [mysql]>SELECT host,user,password FROM user ;
===删除用户===
使用DROP USER 语句删除用户
语法格式如下:
DROP USER ‘username’@‘hostname’ ;
username: 表示用户名
hostname: 表示主机名
例如:
MariaDB [mysql]>DROP USER ‘jzy’@‘localhost’ ;
===修改用户名称===
语法如下:
RENAME USER old_username TO new_username ;
#old_username: 表示旧用户名
#new-username: 表示新用户名
例如:
MariaDB [mysql]> RENAME USER ‘cr7’@‘localhost’ to ‘CR7’@‘localhost’ ;
===修改用户密码===
使用SET语句修改
语法格式如下:
SET PASSWORD [for username]=PASSWORD(‘newpassword’) ;
#username表示用户如果不写表示当前用户,如果写必须写成‘username’@‘localhost’
下面登录到root用户将其密码修改为 123abc
MariaDB [mysql]> set password=password(‘123abc’);
MYSQL权限管理
===权限查询===
SHOW GRANTS 基本语法如下:
SHOW GRANTS FOR ‘username’@‘hostname’ ;
例如查询root用户信息:
MariaDB [mysql]> show grants for 'root'@'localhost';
==权限授予===
使用GRANT 语句为用户赋予权限
语法格式如下:
GRANT 删除线格式 所给权限 ON 范围 TO 用户 IDENTIFIED BY ‘密码’ (WITH GRANT OPTION 可选);
例:使用GRANT创建一个新用户mubapei密码为123,赋予mubapei用户对所有数据库和表单有查询,插入功能,并使用WITH GRANT OPTION可以将其权限
赋予给其他权限
MariaDB [mysql]> GRANT insert,select ON *.* TO ‘mubapei’@‘localhost’ IDENTIFIED BY ‘123’ WITH GRANT OPTION;
# insert,select 表示给的权限
# *.*表示所有,也可填某一个表单或数据库名
# WITH GRANT OPTION 表示该用户可以将其权限赋予给其他权限
使用select查询user用户权限
MariaDB [mysql]> select
-> host,user,password,insert_priv,select_priv,grant_priv
-> from user
-> where user=‘mubapei’
-> \G;
===权限回收===
REVOKE语法格式如下:
REVOKE 要收回的权限 ON *.* FROM ‘mubapei’@‘localhost’ ;
例:收回mubapei对所有对象插入权限
REVOKE insert ON *.* FROM ‘mubapei’@‘localhost’ ;
===收回用户所有权限===
语法如下:
REVOKE ALL PRIVILEGES , GRANT OPTION FROM ‘username’@‘hostname’[用户1,用户2..]
例如收回mubapei所有权限:
REVOKE ALL PRIVILEGES , GRANT OPTION FROM ‘mubaopei’@‘localhost’ ;