数据库系统
DataBaseSystem = 数据库管理系统(DBMS,DataBase MavagementSystem)+数据库(DataBase)+管理员
DBS =DBMS+DB
定义:对大量信息进行管理的高效解决方案,按照数据结构来组织、存储和管理数据的库。
关系型数据库系统
建立在关系模型上的数据库系统。
关系模型:
当将日常生活中的实体(学生),和实体的属性(学生的学号,姓名)保存到数据中时,应该如何处理该实体结构。
1.数据结构可以规定,同类数据,结构一致。就是一个二维的表格。
2.数据之间的关系可以设置
Nosql(Not only sql)非关系型数据库系统
关系型数据库的典型概念:
数据库DataBase:数据的仓库。
表table:数据是保存在表内,保存在一个表内的数据,应该具有相同的数据格式。
行&列:行用于记录数据,列用于规定数据格式。
记录:行内的数据。
字段:数据的某个列。
SQL:数据库管理系统,用来管理数据的语言,结构化查询语言(SQL,Structured Query Language)
MySQL
MySQL采用的是C/S(客户端/服务器端)架构。
服务器端(server):存储和管理数据库的。
客户端(client):发出操作请求的程序。
连接与端口服务器
mysql -h地址 -P端口 -u用户名 -p密码
1.mysql -hlocalhost -P3306 -uroot -p
2.mysql -uroot -p
发出请求命令
show databases; 列出当前的数据库
SQL(Structure Query Language)结构化查询语言
分类:针对操作对象不同,分成不同的语言:
1.数据操作(管理)语言。 DML
查询,获得数据 DQL
管理,增加,删除,修改数据 DML
2.数据定义语言(对保存数据的格式进行定义)DDL
3.数据库控制语言(针对数据库软件服务进行操作)DCL
库操作
创建数据库
create database 数据库名;
Tip:
语句要求使用语句结束符;来结束
标识符(数据库名)命名规则:
大小写取决于当前操作系统,见面知意,
推荐使用下划线。标识符的字符:使用任意字符,数字,符号,甚至中文。但是一些特殊的组合,包括mysql的内部关键字应该使用标识符限定符``来包裹。
create database java;
create database `1234`;
create database `create`;
set names gbk;
create database `测试`;
数据查询
查看当前存在的数据库:
show databases;
查看数据的创建语句:
show create database db_name;
数据库删除:
drop database db_name;
修改数据库信息:
alter database db_name [修改指令];
修改名字:
简单的可以直接修改目录名,将数据库内容全部导出,新建一个数据库,将内容导入,删除旧数据库。
创建一个新数据库,将旧数据库内的表,都移动(重命名)到新数据库内,删除就数据库。
表操作
数据库是表的容器,表,必须属于某个数据库。进行表操作时,都会指定当前的默认数据库:
use db_name;只是设定了默认数据库,不会影响操作其他数据库
创建表:
create table tbl_name(列结构)[表选项]
列定义:
列名 列的数据类型【列的属性(约束)】,
先分析,需要保存的实体数据,用于哪些属性。这些属性应该如何保存。
例如,班级信息
班级,班号,班级开班日期
可以通过.语法,指明数据表所属的数据库
库.表 database.table, 如果任何标识符,出现特殊字符,需要使用反引号``包裹。
use db_name;
查看:
有哪些表
show tables;
表名前缀
为了区分相同逻辑表名的不同应用,给逻辑表名,增加前缀,形成真实表名。
/*学生管理*/
create table info_student(
name varchar(20),
stu_num varchar(20)
);
/*在线考试*/
create table exam_student(
name varchar(20),
stu_num varchar(20),
score int
);
/*考试问题*/
create table exam_question(
content varchar(100),
answer varchar(20)
);
show tables [like 'pattern'];
其中like pattern部分,表示只获得那种规则的表名。
show tables like 'exam_%';
show tables like '%_student';
like适用于
show databases like 'pattern'];
show databases like 'java%';
show databases like '%';
其中%称之为通配符,表示任意字符的任意个数的组合。
某个表的创建信息:
show create table tbl_name;
当表比较乱时,可以使用\G作为语句结束符。
show create table tbl_name\G
查看表结构(描述表结构)
数据库对应的目录,显然,数据库内容对应的就应该是目录的内容,文件。
describe tbl_name;
其简写形式为:
desc tbl_name;
删除表:
drop table tbl_name;
drop table[if exists] tbl_name;
表不存在,不能删除,会报告错误。
同样适用于database:
drop database if exists db_name;
修改表:
修改表名
rename table old_tbl_name to new_tbl_name;
支持同时修改多个表名
rename table old1 to new1,old2 to new2;
支持,跨数据库重命名。
可以利用跨数据库重命名表,可以为数据库重命名。创建一个新的数据库,旧数据库内的表,都rename到新的
数据库内,删除旧的数据库。
修改列定义
增加一个新列
add
修改一个列的定义
modify
重命名一个列
change
删除一个列
drop
修改表结构,上面的是子命令,上级是alter,
alter table tbl_name [add|modify|change|dorp];
alter table exam_student add height int;
alter table exam_student drop height;
alter table exam_student modify stu_num varchar(40);
alter table exam_student change score fenshu int;
修改表选项:
alter table tbl_name 新的表选项;
数据操作
创建数据(插入数据) 获得数据(查询数据) 删除数据 修改数据
创建数据:
insert into 表名(字段列表) values(值列表);
如果需要在插入时,为所有的字段设置值,那么可以省略字段列表。要求是值的顺序,应该与表中的字段的顺序一致。
insert into exam_student valude('pp','110',98);
获得数据:
select 字段列表 from 表名 查询条件; 字段列表,可以使用*代替,表示所有的字段,查询条件可以省略,表示所有的记录都获得。相当于where 1
select name ,stu_num from exam_student;
带条件的
select * from exam_student where fenshu>=72;
删除数据
delete from 表格 条件;
删除需要在逻辑上严格给条件,否则容易造成数据误操作,导致损失。语法上可以没有where,
如果需要删除所有数据,使用where 1;
delete from exam_student where fenshu >72;
修改数据
update 表名 set 字段=新值,条件。
update exam_student set fenshu=100;
update exam_student set fenshu=88 where fenshu=100;