您的位置:首页 > 运维架构 > Linux

菜鸟的Linux历程-MySQL知识摘要

2015-10-13 12:34 387 查看

mysql知识摘要:

基本认识:

数据库(database)仅仅是存放用户数据的地方。当用户访问、操作数据库中的数据时,就需要数据库管理系统。数据库管理系统的全称是database management system,简称DBMS,习惯上常常把数据库管理系统笼统称为数据库。DBMS中存在一个数据字典,用于存储数据的信息,这种关于数据的数据称为元数据。

数据表:对于数据库而言,最基本的数据存储单元是数据表。数据表是存储数据的逻辑单元,可以把表想象成由行和列组成的表格。每一行称为一条记录,每一列称为一个字段。为数据库创建表时,需要指定该表包含多少列,每列的数据类型。其中能用来唯一标识每一条记录的一列或者多列,则称为主键。

MySQL基本命令:

show databases;     //查看数据库
create database [IF NO EXISTS] 数据库名;    //创建新的数据库
drop database 数据库名;     //删除指定的数据库
use 数据库名;       //进入指定的数据库
show tables;        //进入数据库后可以查看数据库中存在的数据表
describ 表名;     //查看指定数据表的表结构


SQL语句基础:

SQL的全程:Structured Query Language(结果化查询语言),通常可以分为以下几种类型:

查询语句:主要有select关键字完成,查询语句是SQL中最复杂、功能最全的语句。

DML(data manipulation language,数据操作语言)语句:主要由insert、update和delete三个关键字完成。

DDL(data definition language,数据定义语言)语句:主要由create、 - - alter、drop和truncate四个关键字完成。

DCL(data control language,数据控制语言)语句:主要由grant和revoke两个关键字完成。

数据库的命名规则:

标识符通常以字母开头。

标识符包括字母、数字和三个特殊字符(# _ $)。

不允许使用当前数据库系统的关键字、保留字,通常建议使用多个单词连缀,单词之间以_分割。

DDL语句:

数据表是存储数据的逻辑单元,但数据库中还包含几种常见的数据库对象:

对象名称对应关键字描述
table存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录。
数据字典系统表,存放数据库的相关信息的表。
约束constraint执行数据校验的规则,用于保证数据库完整性的规则。
视图view一个或多个数据表里的数据的逻辑显示,视图并不存在数据。
索引index用于提高查询性能,相当于书的目录
函数function用于完成一次特定的计算,具有返回值。
存储过程procedure用于完成一次完整的业务处理,没有返回值。
触发器trigger相当于一个事件监听器。

创建表的语法:

//创建一张新的空表
create table [模式名.]表名
(
mysql_test_id int,
mysql_test_name varchar(30),
mysql_test_img blob
);

//根据已经存在的表创建一张表
create table [模式名.]表名 [colum[,colum...]]
as
subquery;


修改表结构的语法:

alter table tablename
add
(
colum_name datatype [default expt],
...
);

//为test表增加一个字段para
alter table test
add para int;

//为test表增加多个字段,并指定字段类型
alter table test
add
(
para1 varchar(255) default 'para1',
para2 varchar(255)
);

//为test表的字段para1修改类型,mofify后每次只允许修改一个字段
alter table test
modify para1 int;

//删除表中的字段
alter table table_name
drop column_name;

//重命名表
alter table table_name
rename to new_table_name;

//修改字段名
alter table table_name
change old_colum_name new_colum_name type [default expr];


删除表的语法:

//删除表和表结构
drop table table_name;
//删除表数据,但是保留表结构
truncate table_name;


数据库的约束:

大部分数据库支持一下5种完整性约束。

NOT NULL:非空约束,指定某列不能为空。

//创建一张新的空表,并指定mysql_test_id字段不能为空
//该约束同时还可以用于修改表结构的时候
create table [模式名.]表名
(
mysql_test_id int not null,
mysql_test_name varchar(30),
mysql_test_img blob
);


UNIQUE:唯一约束,指定某列或者几列组合不能重复值。注意:虽然唯一约束的列不可以出现重复的值,但是可以出现多个null值。

//创建一张新的空表,并指定mysql_test_id字段为唯一约束
//该约束同时还可以用于修改表结构的时候
create table [模式名.]表名
(
mysql_test_id int unique,
mysql_test_name varchar(30),
mysql_test_img blob
);

//如果需要为多列组合建立唯一约束,则需要使用表级约束语法。
//通用格式
[constraint 约束名] 约束定义;

//为table1指定两列唯一约束
create table table1
(
mysql_test_id int,
mysql_test_name varchar(30),
mysql_test_img blob,
//使用表级约束语法建立唯一约束
unique(mysql_test_name),
//使用表级约束语法建立唯一约束并指定约束名
constraint table1_uk unique(mysql_test_id)
);

//为table2指定两列的组合为唯一约束
create table table2
(
mysql_test_id int,
mysql_test_name varchar(30),
mysql_test_img blob,
constraint table2_uk unique(mysql_test_id,mysql_test_name)
);


PRIMARY KEY:主键,指定该列的值可以唯一标识该记录。相当于非空约束和唯一约束做”&&”运算,即主键列既不能存在非空值也不可以出现重复值。

//使用行级约束语法创建主键约束
create table table_name
(
mysql_test_id int primary key,
mysql_test_name varchar(30),
mysql_test_img blob
);

//使用表级约束语法创建单列主键约束
create table table_name
(
mysql_test_id int,
mysql_test_name varchar(30),
mysql_test_img blob,
constraint table_pk primary key(mysql_test_id)
);

//使用表级约束创建多列组合的主键约束
create table table_name
(
mysql_test_id int primary key,
mysql_test_name varchar(30),
mysql_test_img blob,
primary key(mysql_test_id,mysql_test_name)
);

//删除主键约束语法
alter table table_name
drop primary key;

//使用表级约束语法增加主键约束
alter table table_name
add primary key(mysql_test_img);

//修改主键约束语法
alter table table_name
modify mysql_test_id varchar(255) primary key;


FOREIGN KEY:外键,该表中的某列或几列的组合可以唯一标识另一个表中的每一条记录。

注:由于外键在理解上存在一定难度,笔者将抽出外键这部分,做深入讨论。

CHECK:检查,指定一个布尔表达式,检查是否满足表达式。

语法格式:

create table table_name
(
mysql_test_id int,
mysql_test_name varchar(30),
mysql_test_img blob,
primary key(mysql_test_id,mysql_test_name),
check(mysql_test_id>0)
);


索引:

索引作为数据库对象,在数据字典中独立存放,但是不能独立存在,必须属于某个表。

索引的创建有两种方式:

自动:当在表上指定主键约束,唯一约束和外键约束时,系统将会为该数据列自动创建对应的索引。

手动:通过create index…语句手动创建索引。

create index mysql_test_id_and_name_idx
on table_name(mysql_test_id,mysql_test_name);


索引的删除有两种方式:

自动:数据表被删除,对应的索引也将删除。

手动:通过drop index…语句手动删除索引。

drop index mysql_test_id_and_name_idx
on table_name;


视图:

视图的本质就是一条被命名的SQL查询语句。注意:由于视图并不是真正存在的数据,因而在视图中对数据的修改并不会保存到数据库中。

//创建一个简单的视图
create or replace view table_name_viw
as
select mysql_test_img blob from table_name

//指定不允许修改视图的数据
with check option;

//删除视图则用drop
drop view 视图名


DML语句(操作的对象主要为数据表中的数据):

//插入新数据,语法格式为:
insert into table_name [(column [,(column...)])]
values(value [,value...]);

//修改已有数据,语法格式为:
update table_name
set column1=value1 [,column2=value2] ...
//添加修改范围限制
[where condition];

//删除不用数据,语法格式为:
delete from table_name
[where condition];


到此为止,数据库常用的知识已经总结了大部分,关于外键约束,单表查询,数据库函数的内容将在”菜鸟的Linux历程-mysql知识摘要(中)”和大家进行深入探讨。关于分组和分组函数,多表连接查询,子查询,集合运算的内容将在”菜鸟的Linux历程-mysql知识摘要(下)”和大家进行深入探讨。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息