数据库建库建表
数据库内部:1、通过SQL解析器解析2、存储引擎
systemctl stop firewalld 关闭防火墙
1)启动数据库mysql
#启动
systemctl start mariadb
#检查进程
ps -ef|grep mysql|grep -v mysql
#检查端口
netstat -lnt
#登录测试(后输入密码)
mysql -u用户名 -p
mysql -uroot -p
mariadb数据库用户管理
1)查询有哪些用户
MariaDB> select user,host from mysql.user;
#查询 mysql里用户组成:用户@主机域 2)删除用户语法 drop user 'user'@'主机域';
drop user 'root'@'::1';
3)查看当前登录用户
MariaDB [(none)]>select user();
#其中root@localhost为管理员用户,使用这个用户只允许在本机连接。
查库
MariaDB [(none)]> show databases;
#列出所有已经创建的数据库名称
MariaDB [mysql]> show databases like '%te%';
#所有数据库名称中包含 "te" 字符串的数据库
切换数据库
语法:use 库名;
MariaDB [(none)]>use test;
查看当前数据库
方法1:直接看提示符
MariaDB [test]>
方法2:
select database();
##()里不需要填内容
删库
语法:drop database 库名;
drop database test;
##库名用小写,命令不分大小写,推荐小写。
建库
create database oldboy;
##默认建库
show databases;
#查看
查看建库SQL语句(别人建的库)
语法:show create database 库名;
MariaDB [mysql]> show create database oldboy;
+----------+--------------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------------+
| oldboy | CREATE DATABASE `oldboy` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+--------------------------------------------------------------------+
说明:可以看到库的字符集已经被默认指定latin1。 ##字符集介绍:简单说就是一个[密码本]: 企业工作字符集: utf8,gbk,当下最主流就是utf8mb4(8.0默认的字符集)
查看数据库字符集
指定字符集建库
语法:CREATE DATABASE 数据库名字 CHARACTER SET 字符集 COLLATE 校准规则; ##高版本数据库,直接CREATE DATABASE 数据库名字;即可。
create database oldgirl character set utf8 collate utf8_general_ci;
改库
#查看oldboy建库语句
show create database oldboy;
##将oldboy库的字符集改为utf8
alter database oldboy character set utf8;
#方法二collate utf8_general_ci校准规则可省略
alter database oldboy character set utf8 collate utf8_general_ci;
#再查看oldboy建库语句
show create database oldboy;
用户管理
管理要点:一个库对应一个管理员
查询用户
root@localhost管理员用户,使用这个用户只允许在本机连接
select user,host from mysql.user;
删除用户
drop user '用户'@'主机域';
drop user 'root'@'::1';
查看当前登录用户
select user();
创建用户
create user 用户@主机域 identified by '密码';
create user blog@'10.0.0.%' identified by 'oldboy123';
#create user创建新用户、blog新创的用户名、'10.0.0.%'主机域、identified by 'oldboy123'指定了用户的密码为oldboy。
授权主机范围
##单机服务器 localhost #只能从本机访问,场景单机应用服务和数据库在一台机器推荐 127.0.0.1 #只能从本机访问,场景单机应用服务和数据库在一台机器推荐 10.0.0.166 #授权某个IP访问 ==================================== ##工作场景:是集群服务器,一堆应用服务器都会连接后端的数据库mysql. 10.0.0.0/24 #授权一个网段,推荐10.0.0.1--10.0.0.254 10.0.0.0/255.255.255.0 #授权一个网段,推荐10.0.0.1--10.0.0.254 10.0.0.% #授权一个网段,推荐10.0.0.1--10.0.0.254 ##禁止使用的授权 192.168.% #更大网段授权 192.168.0.1---192.168.255.254 % #任意主机都可以连接root@%。坚决杜绝,打死都要杜绝。 #工作场景 企业里创建用户一般是授权一个【内网网段服务器登录】。 10.0.0.%(%为通配符,匹配所有内容)。 10.0.0.0/24 一个网段
用户授权
创建用户并且授权
#创建用户 create user 用户@主机域 identified by '密码'; #授权 grant 权限 on 库.表 to 用户@主机域; #授权所有权限给blog
grant all on *.* to blog@'10.0.0.%';
#检查
show grants for blog@'10.0.0.%';
##GRANT 【ALL PRIVILEGES】 ON *.* TO 'blog'@'10.0.0.%'
数据库核心权限
#1.查看数据库有哪些权限可以授权 show privileges; #2.核心授权权限 ###管理表的内容,开发人员需要### SELECT 查询(数据) INSERT 插入(数据) UPDETE 修改(数据) DELETE 删除(数据) ###表、库、索引,DBA管理员需要 CREATE 创建(数据库、表等对象) DROP 删除(数据库、表等对象) INDEX 索引 ALTER 修改(数据库、表等对象)
在数据库里建表
建表的基本命令语法为:
create table <表名> ( <字段名1> <类型1> , … <字段名n> <类型n>); #说明:create table是关键字,不能更改,但是大小写可以变化。表名只能为数字、字母、下划线,不用数字开头。
字段类型说明
整型:数字-整数
tinyint # #微小整型 1byte=8bit=2^8=256 #年龄
int # #大整型 4byte=2^32=(40亿+)
bigint #超大整型 8byte=2^64(40亿*40亿=1600亿亿)
字符:所有符号都是字符,含整数
varchar 变长字符类型。 varchar(3) abc存储abc,a存储a,abcd存储abc,丢了d。
char 定长字符类型。 char(3) abc存储abc,a存储a空格空格,abcd存储abc,丢了d。
4)建表语句
删除oldboy库
drop database oldboy;
创建oldboy库
create database oldboy;
切换到oldboy库
use oldboy;
查看所有表
show tables;
建表
create table stu1(
id int(10) not null,
name varchar(64) not null,
age tinyint(3) not NULL default '0',
dept varchar(16) default NULL
);
说明:
not null 是不能为空
default '0', 设置默认值为0.
建表语句详细说明
CREATE TABLE stu1 ( #<== CREATE TABLE是创建表的固定关键字,stu1为表名。
id int(4) NOT NULL, #<==学号列,数字类型,长度为4,不为空值。
name varchar(64) NOT NULL, #<==名字列,定长字符类型,长度20,不为空值。
age tinyint(3) NOT NULL DEFAULT '0', #<==年龄列,很小的数字类型,长度为2,不为空,默认为0值。
dept varchar(16) DEFAULT NULL #<==系别列,变长字符类型,长度16,默认为空。
) ENGINE=InnoDB DEFAULT CHARSET=utf8 #<==引擎和字符集,引擎默认为InnoDB,字符集,继承库的utf8。
修改表名
语法:rename table 原表名 to 新表名
#将stu1改为stu2。
rename table stu1 to stu2;
登录数据库; show databases查库; use [数据库]转入数据库; show tables查表; rename table [原表名] to [新表名]改表;
删除表
语法:drop table <表名>; #删除stu2表
drop table stu2;
#查表
show tables;
#删除oldboy库
drop database oldboy;
#查库
show databases;