文章目录
MySQL数据库的连接
-
在mysql shell中链接到本地mysql数据库:
\c root@localhost:3306
-
在cmd/shell中链接到本地mysql数据库:
mysql -u root -p
基础术语
- database: 保存有组织的数据的容器(通常是一个文件或一组文件)
- table:某种特定类型数据的结构化清单,注意,存储在表中的数据是一种类型的数据或一个清单,对于不同的数据应该创建不同的表。数据库中的每个表都有一个名字,用来标识自己,这个名字是唯一的。但是不同的数据库中可以使用相同的。
- schema:关于数据库和表的布局及特性的信息,如可以存储什么样的数据,数据如何分解,各部分信息如何命名,etc.
- column:表中的一个字段,所有表都是由一个或多个列组成的,列中存储着表中某部分的信息,数据库中的每个列都有相应的数据类型。
- datatype:所容许的数据的类型,每个表列都有相应的数据类型,它限制该列中存储的数据。
- row:表中的一个记录,例如,顾客表可以每行存储一个顾客,存在某列存储所有顾客的姓名。
- primary key:一列(或者一组列),其值能够唯一区分表中的每个行。要注意,没有主键,更新和删除表中的特定行很困难,并且任意两行都不具有相同的主键值,主键列不允许NULL值,当然也可以让特定列的组合是唯一的来确定主键。好习惯:不更新主键列中的值,不重用主键列中的值,不在主键列中使用可能会更改的值。
- auto_increment:自动增量,在每个行添加到表中时,mysql可以自动的为每个行分配下一个可用编号,而不用在添加一行时手动分配唯一值。
表的选择和信息展示
-
USE(关键字):当最初链接到mysql时,没有任何数据库打开让我们使用,USE (数据库名)能让我们选择一个数据库进行操作,必须先用USE打开数据库,才能读取其中的数据。
-
SHOW DATABASES:返回可用数据库的一个列表。
-
SHOW TABLES:获得当前选择的数据库内可用表的列表(得先用USE选中数据库)。
-
SHOW COLUMNS FROM (表名):显示选中表的表列信息,他对每个字段返回一行,行中包含字段名,数据类型,是否允许NULL,键信息,默认值以及其他信息。
-
DESCRIBE(表名):是SHOW COLUMNS FROM (表名)的一种快捷方式。
-
SHOW STATUS:用于显示广泛的服务器状态信息。
-
SHOW CREATE DATABASE和SHOW CREATE TABLE:分别用来显示创建特定数据库或表的mysql语句。
-
SHOW GRANTS:用来显示授予用户(所有用户或特定用户)的安全权限。
-
SHOW ERRORS和SHOW WARNINGS:用来显示服务器错误或警告信息。
-
HELP SHOW:显示允许的SHOW语句。
DDL(Data Definition Language,数据定义语言)
数据库和表的创建
-
创建数据库:
CREATE DATABASE IF NOT EXISTS <数据库名>; # 例如 CREATE DATABASE IF NOT EXISTS shop;
-
创建新表(table):
CREATE TABLE <表名> ( <表名1> <数据类型> <该列所需约束>, <表名2> <数据类型> <该列所需约束>, ... <该表的约束1>,<该表的约束2> ...... ); # 例如 CREATE TABLE Addressbook ( regist_no INTEGER NOT NULL COMMENT '注册编号', name VARCHAR(128) NOT NULL COMMENT '姓名', address VARCHAR(256) NOT NULL COMMENT '住址', tel_no CHAR(10) NOT NULL COMMENT '电话号码', mail_address CHAR(20) NOT NULL COMMENT '邮箱地址', PRIMARY KEY (regist_no) );
-
其中,该表的约束可以是以下这些:
-
primary key(属性名…):表明该属性构成关系的主码,主码属性必须非空且唯一
-
foreign key(属性名…) references 对应的关系名(属性名…):表明这个表上的外码约束
-
not null:加在特定的属性域后,表明在该属性上不允许空值,换句话说,此约束把空值排除在该属性域外
-
unique(属性名…):表明在关系中没有两个元组能在所有列出的属性上取值相同
-
check(某种条件…):例如check(budget>0);check(semeter in (‘summer’,‘spring’,‘fall’,‘winter’))
-
-
而数据类型简单的可以是以下这些:
-
INTEGER型:用来指定存储整数的列的数据类型,不能存储小数
-
CHAR型:用来指定存储字符串的列的数据类型,可以像CHAR(10)这样指定存储的字符串的最大长度,字符串超过最大长度的部分无法输入到该列中,具体的说,字符串以定长字符串的形式存储在指定为CHAR型的列中,当列中存储的字符串长度达不到最大长度时,使用半角空格进行补足,例如在CHAR(8)的列中存储串’abc’时,实际会以’abc '的形式保存起来
-
VARCHAR型:用来指定存储字符串的列的数据类型,但数据以可变长字符串的形式来保存字符串,即,即使存储的字符串未达到最大长度,也不会用半角空格补足
-
DATE型:用来指定存储日期(年月日)的列的数据类型
-
-
表的删除和更新
-
删除一个表:
DROP TABLE <表名>; #例如 DROP TABLE Addressbook;
-
表定义的更新:
-
添加列:
ALTER TABLE <表名> ADD COLUMN <列的定义>; # 例如 ALTER TABLE Product ADD COLUMN product_name VARCHAR(100); ALTER TABLE Addressbook ADD COLUMN postal_code CHAR(8) NOT NULL COMMENT '邮政编码';
-
删除列:
ALTER TABLE <表名> DROP COLUMN <列名>; # 例如 ALTER TABLE Product DROP COLUMN product_name;
-
表名的更改:
# MySQL RENAME TABLE Poduct to Product; # Oracle PostgreSQL ALTER TABLE Poduct RENAME TO Product; # SQL Server sp_rename 'Poduct', 'Product';
-
DML(Data Manipulation Language,数据操纵语言)
表的查询
-
SELECT语句基础
-
列的查询
SELECT <列名>, ... FROM <表名> # 例如
-
-
基本运算符
-
聚合和排序
-
视图
-
子查询
-
关联子查询
数据更新
- 数据的插入
- 数据的删除
- 数据的更新
- 事务