linux下关系型数据库解释及mysql基本命令详解
1.RDBMS:关系型数据库,如下功能:
数据库创建、删除、修改
创建表、删除表、修改表
索引的创建、删除
用户和权限创建、修改、删除
数据新增、删除、修改
查询
2.myslq属于关系型数据库,数据引擎命令如下:命令不区分大小写
DML:Data Manapulate Language: 数据操作语言
INSERT, REPLACE, UPDATE, DELETE
DDL:Data Defination Lanuage: 数据定义语言
CREATE, ALTER, DROP
DCL:Data Control Language: 数据控制语言
GRANT, REVOKE
SELECT:查询命令
3.mysql客户端登入命令:
选项: -u: 用户名,默认为root@localhost或[email protected]
用户名格式:USERNAME@HOST
-p:用户的密码,默认为空
-h:mysql服务器
例如:在mysql服务器中,本地登入服务器命令,以下两种命令功能一样:
3.1.mysql
3.2.mysql -u root -p -h localhost
mysql客户端分为交互式和批处理模式
交互式模式又分为客户端和服务器端命令类别
客户端命令如:quit(或\q),可输入help或\h查询客户端命令
服务器端命令:必须使用语句结束符,默认为分号;如SHOW DATABASES;
4.mysql名称解释;
4.1.mysqld服务侦听在3306/tcp端口,属主属组均为mysql,数据存放在/var/lib/mysql/
4.2.关系数据库对象:库,表,索引,视图,约束,存储过程,存储函数,触发器,游标,用户,权限,事务
4.3.表:由多个字段field或列column和多个行row组成
4.4.字段:由字段名称,数据类型和类型修饰(限制)组成
4.5.数据类型分为字符,数值,日期时间,内置等组成
字符:CHAR(n),VARCHAR(n),BINARY(n),VARBINARY(n),TEXT(n),BLOB(n)
CHAR(n): 字符 ,不区分大小写
VARCHAR(n): 可变化字符 ,不区分大小写
BINARY(n): 二进制字符 ,区分大小写
VARBINARY(n): 可变化二进制字符,区分大小写
TEXT(n):大对象数据,不区分大小写
BLOB(n):大对象二进制数据,区分大小写
注意:n代表字符长度
数值:精确数值和近似数值
精确数值:代表有×××和十进制
整型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
TINYINT:1个字节
SMALLINT:2个字节
MEDIUMINT:3个字节
INT:4个字节
BIGINT:8个字节
修饰符:UNSIGNED,无符号,只有0或正整数
不为空:NOT NULL
十进制:DECIMAL
近似数值:代表有浮点型,FLOAT和DOUBLE
日期时间:DATE,TIME,DATETIME,STAMP
内置: ENUM,SET
5.创建数据库
格式:
CREATE DATABASE 数据库名称;
CREATE DATABASE [IF NOT EXISTS] 数据库名称;
例如:创建数据库mydb
CREATE DATABASE mydb; #如果数据库存在,将会报错,可用下条语句
CREATE DATABASE IF NOT EXISTS mydb; #如果数据库存在,将不会报错
查看刚创建的数据库
SHOW DATABASES;
6.删除数据库
格式:DROP DATABASE [IF EXISTS] 数据库名称;
例如:删除数据库mydb
DROP DATABASE mydb;
7.创建表
格式:CREATE TABLE 表名(字段1,字段2,...); 需用USE 数据库名 #切换默认数据库
CREATE TABLE 数据库存.表名(字段1,字段2,...);
例如:创建表students
USE mydb; #切换数据库mydb为当前默认数据库
CREATE TABLE students(Name CHAR(15) NOT NULL,Age TINYINT UNSIGNED,Gender CHAR(1) NOT NULL); 查看库中的表:SHOW TABLES [FROM 数据库名称];默认显示当前数据
查看表的结构:DESC 表名;
DESC students;
8.删除表:DROP TABLE 表名;
9.修改表:ALTER TABLE 表名
MODIFY:保留字段名称,修改其他属性
CHANGE:连字段都修改
ADD:添加字段
DROP:删除字段
例如:对数据库mydb中表students添加course字段
ALTER TABLE mydb.students ADD course VARCHAR(100);
将course字段名称修改成Courses
ALTER TABLE students CHANGE course Courses VARCHAR(100) AFTER Name;
DESC studens;
10.DML:数据操作命令:
INSERT INTO 表名 (字段1,字段2,...) VALUES|VALUE ('字符串值', 数值,...);
INSERT INTO 表名 (字段1,字段2,...) VALUES|VALUE ('字符串1', 数值1,...),('字符串2',数值 2,...);
例如:插入Name字段为Willow和Amy及其Gender字段相关属性内容
INSERT INTO students (Name,Gender) VALUE ('Willow','M'),('Amy','F');
SELECT * FROM students;
如果不指定字段,将对所有字段赋值,如增加名字为Rob及其所有属性
INSERT INTO students VALUE ('Rob','CCNP',26,'M');
SELECT * FROM students;
UPDATE 表名 SET 字段=值 [WHERE 条件];
例如:修改Name为willow用户的Courses字段为RHCA;
update students SET Courses='RHCA' WHERE Name='Willow';
DELETE FROM 表名 WHERE 条件;
例如:删除名字为Amy的用户所有数据
DELETE FROM students WHERE Name='Amy';
SELECT * FROM students;
选择:SELECT 字段 FROM 表名 WHERE 条件;
*: 所有字段
WHERE:没有条件表示显示所有行;
例如:选择查看名字为Willow,并且只查看Name和Courses两个字段的内容
SELECT Name,Courses FROM students Where Name='Willow';
11.创建用户:
CREATE USER '用户名'@'HOST' [IDENTIFIED BY '密码'];
DROP USER '用户名'@'HOST';
HOST:表示有IP,HOSTNAME,NETWORK,通配符
_:匹配任意单个字符, 172.16.0._
%:匹配任意字符;
user1@'%'代表用户user1用户在所有主机上登入
12.DCL:数据控制命令
GRANT 权限1,权限2,... ON 数据库名.表名 TO '用户名'@'HOST' [IDENTIFIED BY '密码'];
REVOKE pri1,pri2,... ON 数据库名.表名 FROM '用户名'@'HOST';
查看用户的授权:SHOW GRANTS FOR '用户名'@'HOST';
ALL PRIVILEGES:代表所有权限的意思
例如:创建用户willow在所有主机可登入到mysql服务器中的mydb数据库
CREATE USER 'willow'@'%' IDENTIFIED BY 'redhat';
SHOW GRANTS FOR 'willow'@'%';
13.为用户设定密码:
13.1.mysql>SET PASSWORD FOR '用户名'@'HOST'=PASSWORD('密码');
mysql> FLUSH PRIVILEGES ; #刷新让mysql数据库重读授权表
例如:为root@localhost用户设定密码为redhat
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('redhat');
13.2.# mysqladmin -u用户名 -hHOST -p password '密码' #bash下命令设定密码
13.3.mysql> UPDATE user SET Password=PASSWORD('密码') WHERE USER='root' AND Host='127.0.0.1';
例如:为[email protected]用户设定密码为redhat
UPDATE user SET Password=PASSWORD('redhat') WHERE USER='root' AND Host='127.0.0.1';
13.4.建立一个root用户拥有所有权限并且仅允许在1.1.1.0/24子网内连接mysql服务器
GRANT ALL PRIVILEGES ON *.* TO 'root'@'1.1.1.%' IDENTIFIED BY 'redhat';
FLUSH PRIVILEGES;