MySQL数据库管理

#MySQL数据库管理

    • 一、数据库基础:
      • 1.查看数据库信息:
      • 2.设置数据库密码:
      • 3.查看数据库中的表信息:
      • 4.显示数据表的结构(字段):
      • 5.数据文件类型:
    • 二、数据库管理:
      • 1.SQL语句:
      • 2.SQL语言分类:
      • 3.DDL:
      • 4.DML :
      • 5.DQL:
      • 6.DCL:
      • 7.清空表,删除表内的所有数据:
      • 8.创建临时表:
    • 三、总结:

一、数据库基础:

1.查看数据库信息:

show database

2.设置数据库密码:

mysql -u root -p密码

3.查看数据库中的表信息:

use 数据库名   #切换到数据库中
show tables
show tables in mysql

4.显示数据表的结构(字段):

(1)显示:

describe user;

MySQL数据库管理_第1张图片

选项 含义
field 字段名称
type 数据类型
null 是否允许为空
key 主键
default 默认值
extra 扩展属性。例:标志符列(标识了种子,增量/步长)
id 1 3 5 7

(2)常见的数据类型:

选项 含义
int 整型(用于定义整数类型的数据)
float 单精度浮点4字节32位,准确表示到小数点后六位
double 双精度浮点8字节64位
char 固定长度的字符类型,用于定义字符类型数据。 20字节 4 16 空格
varchar 可变长度的字符类型
decimal(5,2) 5个有效长度数字,小数点后面有2位

#Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错

主键是唯一的,但主键可以由多个字段构成

5.数据文件类型:

(1)MySQL数据库的数据文件存放在/usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为“.frm”、“.MYD”和“.MYI”。

(2)MYD”文件是MyISAM存储引擎专用,存放MyISAM表的数据。每一个MyISAM表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。

(3)“.MYI”文件也是专属于 MyISAM 存储引擎的,主要存放 MyISAM 表的索引相关信息。对于 MyISAM 存储来说,可以被 cache 的内容主要就是来源于“.MYI”文件中。每一个MyISAM 表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。

(4)MyISAM 存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件(frm,myd,myi)。 每个表都有且仅有这样三个文件做为 MyISAM 存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI 文件中。

(5)另外还有“.ibd”和 ibdata 文件,这两种文件都是用来存放 Innodb 数据的,之所以有两种文件来存放 Innodb 的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储 方式使用“.ibd”文件来存放数据,且每个表一个“.ibd”文件,文件存放在和 MyISAM 数据相同的位置。如果选用共享存储表空间来存放数据,则会使用 ibdata 文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata 文件。

二、数据库管理:

1.SQL语句:

用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。

2.SQL语言分类:

分类 作用
DDL 数据定义语言,用于创建数据库对象,如库、表、索引等
DML 数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
DQL 数据查询语言,用于从数据表中查找符合条件的数据记录
DCL 数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE)

3.DDL:

数据定义语言,用于创建数据库对象,如库、表、索引等。

create #创建
drop   #删除
alter  #修改

(1)创建新的数据库:

CREATE DATABASE 数据库名;
创建新的表
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,…][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。

CREATE DATABASE exo;
USE exo;
CREATE TABLE phuket (id int NOT NULL,name char(10) NOT NULL,score decimal(5,2),passwd char(48) DEFAULT'', PRIMARY KEY (id));
DESC phuket;
#NOT NULL   不允许为空值
#DEFAULT''  默认值为空

PRIMARY KEY :主键一般选择没有重复并且不为空值的字段

MySQL数据库管理_第2张图片

(2)删除指定数据表:

use 数据库名
DROP TABLE 表名
DROP TABLE [数据库名.] 表名;
#如不用USE进入库中,则需加上数据库名
删除指定的数据库
DROP DATABASE 数据库名;

(3)小结:
MySQL数据库管理_第3张图片

4.DML :

管理表中的数据记录,数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据。

insert   #插入
update   #修改
delete   #删除

格式:
INSERT INTO 表名(字段1,字段2[,…]) VALUES (字段1的值,字段2的值,…);

示例:
INSERT INTO phuket (id,name,score,passwd) values(1,‘billkin’,182.5,PASSWORD(‘123456’));
#PASSWORD(‘123456’):查询数据记录时,密码字串以加密形式显示:若不使用PASSWORD(),查询时以明文显示。

INSERT INTO phuket VALUES(2,‘pp’,178.5,654321) ;

SELECT * FROM phuket ; #查询表的数据记录

#修改、更新数据表中的数据记录
格式:
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];

示例:
UPDATE phuket SET passwd=PASSWORD(‘’) WHERE name=‘billkin’;
UPDATE phuket SET name=‘billkin’,passwd=‘’ WHERE id=3;

在数据表中删除指定的数据记录
格式:
DELETE FROM 表名 [WHERE 条件表达式];

示例:
DELETE FROM phuket WHERE id=4;

MySQL数据库管理_第4张图片

5.DQL:

(1)查询数据记录:

select

格式:
SELECT 字段名1,字段名2[,…] FROM 表名[WHERE 条件表达式];

示例:
SELECT * FROM phuket;
select id,name,score from phuket where id=2;
select name from phuket\G #以列表方式竖向显示
select * from info limit 2; #只显示头2行
select * from info limit 2,3; #显示第2行后的前3行

#修改、更新数据表中的数据记录
格式:
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];

示例:
UPDATE phuket SET passwd=PASSWORD(‘’) WHERE name=‘billkin’;
UPDATE phuket SET name=‘pp’,passwd=‘’ WHERE id=3;
MySQL数据库管理_第5张图片
MySQL数据库管理_第6张图片

(2)数据表高级操作:

扩展
在数据表中删除指定的数据记录
格式:
DELETE FROM 表名 [WHERE 条件表达式];

示例:
DELETE FROM phuket WHERE id=5;
在这里插入图片描述
MySQL数据库管理_第7张图片

6.DCL:

修改表名和表结构
ALTER TABLE 旧表名 RENAME 新表名;

例:
ALTER TABLE phuket RENAME timo;
ALTER TABLE timo RENAME phuket;

扩展表结构(增加字段)
alter TABLE 表名 ADD address varchar(50) default ‘地址不详’;
#default ‘地址不详’:表示此字段设置默认值为地址不详,可与NOT NULL配合使用
alter table phuket add address varchar(50) not null DEFAULT’地址不详’;

修改字段(列)名,添加唯一键
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];
unique key:唯一键(特性:唯一,但可以为空,空值只允许出现一次)
Primary key:唯一且非空(主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。)

alter table phuket change name user_name varchar(10) unique key;
#CHANGE可修改字段名、数据类型、约束等所有项。

ALTER TABLE 表名 modify column 字段名 类型。
数据库中表 字段是varchar(30),修改类型可以用(谨慎修改类型,可能会导致原有数据出错)

删除字段
格式:
ALTER TABLE 表名 DROP 字段名;

示例:
alter table phuket drop passwd;
在这里插入图片描述
MySQL数据库管理_第8张图片

MySQL数据库管理_第9张图片
MySQL数据库管理_第10张图片

  • 扩展:
use exo;
create table if not exists info (
id int(4) zerofill primary key auto_increment,     #指定主键的第二种方式
name varchar(10) not null,
idcard int(18) not null unique key,
hobby varchar(50));

#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
#int(4) zerofill:表示若数值不满4位数,则前面用"0"填充,例0001
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;
自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且
添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键
#not null:表示此字段不允许为NULL

  • 高级操作:
use exo;
create table if not exists info (
id int(4) zerofill primary key auto_increment,     #指定主键的第二种方式
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));
  • 数据表高级操作:
create table evan like evak;    #复制格式,通过LIKE方法,复制evak表结构生成evan表
insert into evan select * from evak;      #备份内容
  • 克隆表,将数据表的数据记录生成到新的表中:
create table test02 (select * from test);   #复制test 表数据到test02中
show create table test02\G    #获取数据表的表结构、索引等信息
select * from test02;

7.清空表,删除表内的所有数据:

(1)方法一:

delete from phuket;
#DELETE清空表后,返回的结果内有删除的记录条目; 

DELETE 工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除
所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。

(2)方法二:

truncate table test01;
#TRUNCATE清空表后,没有返回被删除的条目: TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE 清空表内数据后,ID会从1开始重新记录
  • 删除速度:drop> truncate > delete
    安全性:delete 最好

8.创建临时表:

(1)临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。

(2)如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除临时表。
PS:无法创建外键
CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[, …]
[, PRIMARY KEY (主键名)]);

示例:

create temporary table timo (id int(4) zerofill primary key auto_ increment,name varchar(10) not null,
cardid int(18) not null unique key,hobby varchar(50));
insert into timo values (1,'billkin','music');
select * from timo;
show tables;
quit
select * from timo;
  • 场景:可做测试环境使用 ,比如删除大量数据的时候,可以创建临时表做一个复杂删除。

  • MySQL中6种常见的约束:
    主键约束(primary key)
    外键约束(foreign key)
    非空约束(not null)
    唯一性约束(unique [key|index])
    默认值约束(default)
    自增约束(auto_increment)

  • 外键的定义:如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x称为表二的外键。

  • 创建外键约束作用(误删,修改),保证数据的完整性和一致性。
    主键表和外键表的理解:
    (1)以公共关键字作主键的表为主键表(父表、主表)
    (2)以公共关键字作外键的表为外键表(从表、外表)

  • 注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主表外键字段和从表的字段具备相同的数据类型、字符长度和约束。

#创建主表test04
create table test04 (hobid int(4),hobname varchar(50));

#创建从表test05
create table test05 (id int(4) primary key auto_increment,name varchar(10),age int(3),hobid int(4)) ;

#为主表test04添加一个主键约束。主键名建议以"PK_”开头。
alter table test04 add constraint PK_hobid primary key (hobid);

#为从表test05表添加外键,并将test05表的hobid字段和test04表的hobid字段建立外键关联。
外键名建议以"FK_”开头。
alter table test05 add constraint FK_hob foreign key (hobid) references test04 (hobid);

#可以使用查询表语句结构命令查看外键关联
show create table test05;

desc test04;
desc test05;

#插入新的数据记录时,要先主表再从表
insert into test04 values(1,‘running’);
insert into test05 values(1,‘puyixing’,18,1);

#删数数据记录时,要先从表再主表,也就是说删除主键表时必须先删除其他与之关联的表。
drop tables test05;
drop tables test04;

#查看和删除外键约束
#如果要删除外键约束字段先删除外键约束,再删除外键名
show create table test05;
alter table test05 drop foreign key FK_hob;
alter table test05 drop key FK_hob;
desc test05;

三、总结:

数据库语句是用于操作数据库存储和管理数据的命令,它可以插入、更新、删除和查询数据等。数据库语句的作用可以分为以下几个方面:

  1. 创建数据库和表:可以使用 CREATE DATABASE 和 CREATE TABLE 语句来创建数据库和表,以及定义表的列、数据类型和约束等属性。
  2. 插入数据:可以使用 INSERT INTO 语句将数据插入表中,以保存新的数据记录,INSERT INTO 后面跟随着要插入的列和值。
  3. 更新数据:可以使用 UPDATE 语句修改表中已有的数据记录,从而更新数据库中的数据。
  4. 删除数据:可以使用 DELETE 语句删除表中的记录或整个表,以删除数据库中的数据。
  5. 查询数据:可以使用 SELECT 语句从表中检索数据记录,以实现数据的查找和提取,还可以使用 WHERE 子句对数据进行筛选,根据指定条件过滤出需要的结果。
  6. 操作表的结构和属性:可以使用 ALTER TABLE 语句修改表的结构和属性,如添加、修改或删除列,更改数据类型和约束条件等。
  7. 管理用户和权限:可以使用 CREATE USER、GRANT 和 REVOKE 等语句管理用户和权限,以授权不同用户的访问权限和管理权限。

的记录或整个表,以删除数据库中的数据。
5. 查询数据:可以使用 SELECT 语句从表中检索数据记录,以实现数据的查找和提取,还可以使用 WHERE 子句对数据进行筛选,根据指定条件过滤出需要的结果。
6. 操作表的结构和属性:可以使用 ALTER TABLE 语句修改表的结构和属性,如添加、修改或删除列,更改数据类型和约束条件等。
7. 管理用户和权限:可以使用 CREATE USER、GRANT 和 REVOKE 等语句管理用户和权限,以授权不同用户的访问权限和管理权限。

综上所述,数据库语句是对数据库进行操作和管理的基本工具,开发人员和数据库管理员应熟悉各种数据库语句的特性和用法,以便更好地管理和维护数据库,确保数据的安全和完整性,并支持业务的正常运营。

你可能感兴趣的:(数据库,mysql,adb,云计算,运维)