目录
一. 数据库结构
二、查看数据库结构
1、查看当前服务器中的数据库
2、查看数据库中包含的表
3、查看表的结构(字段)
2.数据库的存储方式
三、SQL语句
4 删除指定的数据表
5. 删除指定的数据库
四.管理表中的数据记录(表数据的增删改查)
1 向数据表中插入新的数据记录(增)
4.1. 查询表数据记录(查)
4.2.修改/更新数据表中的数据记录(改)
4.3. 在数据表中删除指定的数据记录(删)
五.修改表名和表结构
5.1 修改表名 rename
5.2扩展表结构(增加字段) add
5.3 修改字段名,添加唯一健 change
5.4 删除字段
总
数据库基本操作
1.数据库管理语句
(1)SQL 语句管理
(2)DDL 数据库定义操作 创建比如 表 库 索引
(3)DML 数据操纵 用来插入 删除修改 数据库中的数据
(4)DQL 数据查询 查找符合条件数据记录
(5) DCL 数据控制 设置或者更改数据库用户和角色权限
mysql中的命令默认不区分大小写。表名和库名区分大小写。
在linux系统中的客户端,命令后一定要加分号。
登录数据库
mysql -u root -p123456 #-u指定用户 -p123456 是密码
SHOW DATABASES; #大小写不区分,分号“;"表示结束
#切换到书库中
use 数据库名;
#展示库中的表
show tables;
show tables in mysql;
describe user;
字段的各个部分含义:
Field:字段名称
type:数据类型
Null :是否允许为空
Key :主键
Type:数据类型
Null :是否允许为空
key :主键
Default :默认值a :扩展属性,例如:标志符列(标Extr识了种子,增量/步长)1 2
id:1 3 5 7
类型 | 含义 | 表示 |
int | 整型 | 用于定义整数类型的数据 |
float | 单精度浮点4字节32位 | 准确表示到小数点后六位 |
double | 双精度浮点8字节64位 | |
char | 固定长度的字符类型 | 用于定义字符类型数据。 20字节 4 16 空格 |
varchar | 可变长度的字符类型 | |
text | 文本 | |
image | 图片 | |
decimal(5,2) | 5个有效长度数字,小数点后面有2位 | 定长度数组 55555.00 |
注:Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错
主键是唯一的,但主键可以由多个字段构成
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 文件。
方法一:
USE 数据库名; #切换库
DESCRIBE 表名; #查看指定表的结构
方法二:
DESCRIBE [数据库名.]表名;
可缩写成:DESC 数据库名.表名;
#例如:desc mysql.user;
(1).SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
SQL语言分类:
DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE)
(2).DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
create ——创建
drop——删除
alter——常用于对现有数据库元素进行修改
(3).创建新的数据库
CREATE DATABASE 数据库名;
创建新的数据库
mysql> CREATE DATABASE school;
mysql> show databases;
USE school; #切换school库
CREATE TABLE class01 (id int NOT NULL,name char(10) NOT NULL,score decimal (5,2),passwd char(48) DEFAULT '',PRIMARY KEY (id)); #新建表class01
#第一个字段名id,数据类型是int整数型,NOT NULL不许为空值。
#第二个字段名name,数据类型是char固定长度的字符,长度是10个字节。
#第三个字段名score,数据类型是decimal (5,2),表示5个有效数字、其中小数点后2位。
#第四个字段名passwd,DEFAULT '' 表示默认值是无值(不是空值null)。
#PRIMARY KEY (id),表示id字段是主键。
DESC class01; #查看class01表的结构
mysql> use school; ##切换到school
mysql> drop table class01; ##删除表class01
mysql> desc class01; ##现在就看不到了
DROP DATABASE 数据库名;
#例:DROP DATABASE school;
mysql> desc class01;
mysql> INSERT INTO class01 VALUES(2,'张三',95.5,654321);
#为指定字段插入值
mysql> INSERT INTO class01 (id,name,passwd) values (1,'李四',PASSWORD('12346'));
#下面这条命令不生效,因为name字段设置了not null,不允许为空值。
INSERT INTO class01 (id, score, passwd) values (3, 88, 123123);
SELECT * FROM class01; #查询表的数据记录
mysql> SELECT * FROM class01; #查询表中所有记录
#查询id字段值为2的数据记录只显示id、name、score三个字段
mysql> SELECT id, name, score FROM class01 WHERE id=2;
#查询id为1或id为2的数据记录
mysql> SELECT id, name, score FROM class01 WHERE id=1 or id=2;
#查询name为“王五”且分数为92.5的数据记录。
mysql> SELECT id, name, score FROM class01 WHERE name='王二' and score=92.5;
select * from 表名\G
#只显示前2行
mysql> SELECT * FROM class01 limit 2;
#显示第2行之后的前3行(即显示第3~5行)
select * from class01 limit 2,3;
修改字段一般要加上条件,不然会把所有行都修改了。
#修改name为“张三”的数据记录,将其密码修改为以密文显示。
mysql> UPDATE class01 SET passwd= PASSWORD(' ') WHERE name='张三';
#修改id为1的数据记录,将score字段值改为77,passwd字段改为无值。
UPDATE class01 SET score=77,passwd=' ' WHERE id=1;
删除数据记录时,一定要加条件,否则会将整个表都删除!
mysql> DELETE FROM class01 WHERE id=2; #删除id字段值为2的数据记录
修改表名和表结构时,都要使用ALTER
语句!
ALTER TABLE 旧表名 RENAME 新表名
ALTER TABLE class01 RENAME tt01; #将class01的表名修改为tt01
ALTER TABLE tt01 RENAME class01; #将tt01的表名修改回class01
ALTER TABLE 表名 ADD 字段名 数据类型;
例:
ALTER TABLE class01 ADD address varchar(50) not null default '地址不详';
#增加“address"字段,不允许为空值,默认值为“地址不详”。
#default '地址不详':表示此字段设置默认值为"地址不详",可与NOT NULL配合使用。
CHANGE可修改字段名、数据类型、约束等所有项。
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 [数据类型] [约束];
#将score字段名修改为phone,数据类型修改为int整数型,并添加唯一键约束
ALTER TABLE class01 CHANGE score phone int unique key;
删除字段
格式:
ALTER TABLE 表名 DROP 字段名;
示例:mysql> select * from class01;
drop删除和delete删除的区别
delete 和 drop 都是常用于删除数据的 SQL 关键字,它们的主要区别在于:
delete 用于从表中删除行或数据,其中可以根据特定条件删除选定的行或数据。delete 会将数据装入事务日志,并且能够回退操作。删除后还可以进行 rollback 操作,将删除的数据重新插入到表中。
drop 用于删除整张表,也可以删除其他数据库对象,例如视图或索引。drop 操作是不可恢复的,也就是说,删除了对象就无法再恢复,因此在使用 drop 命令时应谨慎操作。