昨天看了一句话,学东西不要想着该不该学,直接上手做就好,放国庆七天,我决定把MYSQL这本书给啃了,然后平均一天70面的看,先大致过一遍总结所有的命令操作,希望能够实现自己的目标!

知识概念:

主键:

又称为主码,是表中一列或多咧的组合。主键约束要求主键列的数据唯一,并且不允许为空。主键能够唯一的标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。

主键和记录之间的关系就相当于我们人的身份证和人的关系,他们之间一一对应。

主键类型:

单字段主键

多字段联合主键(对应命令8)

//

外键:

作用:外键用于在两个表之间建立链接,它可以是一列或多列,一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。


定义:首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。外键的作用是保持数据的一致性,完整性。

例如::

CONSTRAINT fk_emp_dept FOREIGN KEY(deptld)REFERENCES tb_dept(id);

部门表tb_dept的主键是id,在员工表tb_emp5中有一个键deptld与这个id关联。

主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。

从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。(对应命令11)

//

非空约束:

指字段的值不能为空,对于使用了非空约束的字段,如果用户在添加数据是没有指点值,数据库系统会报错。

(对应命令12)


唯一性约束:

要求该列唯一,允许为空但是只能出现一个空值。

唯一约束条件可以确保一列或几列不出现重复值。

(对应命令13)

与PRIMARY的区别

一个表中可以多个字段声明为UNIQUE,但只能有一个PRIMARY KEY声明,声明为PRIMARY KEY的列不允许有空值,但是声明为UNIQUE的字段允许空值的存在。



//



使用默认约束

默认约束指定某列的默认值,如果男性同学较多,性别就可以默认为‘男’。如果插入一条新的纪录时没有为这个字段赋值,那么系统会自动为这个字段赋值为‘男’。

(对应命令14)



//


1.SHOW DATABASES;显示当前所有存在的数据库(大小写都可以)


2.CREATE DATABASE test_db;

创建名称为test_db的数据库


3.SHOW CREATE DATABASE test_db;

查看创建好的数据库test_db的定义


4.删除数据库

DROP DATABASE test_db;

删除test_db(声明删除数据库后,数据库中存储的所有数据表和数据也一同被删除而且不能够被恢复)


5.查看系统所支持的引擎类型

SHOW ENGINES\G;


6.在数据库中创建一个表

CREATE TABLE tb_empl
(
  id INT(11);
  name VARCHAR(25)
);


7.查看数据表是否成功

SHOW TABLES;


8.在定义列的同时指定主键

字段名 数据类型 PRIMARY KEY [默认值]

CREATE TABLE tb_emp2
(
id INT(11) PRIMARY KEY,
name VARCHAR(25)
);


9.在定义所有列之后指定主键

CREATE TABLE tb_emp3
(
id INT(11),
PRIMARY KEY(id)
);


10.多字段联合主键

PRIMARY KEY [字段1,字段2,...,字段n]

定义数据表tb_emp4,可以把name和deptld联合起来作为主键

CREATE TABLE tb_emp4
(
name VARCHAR(25),
depld INT(11),
PRIMARY KEY(name,deptld)
);


11.创建外键的语法规则如下

[CONSTRAINT<外键名>] FOREIGN KEY 字段名1 [,字段名 2,...]

REFERENCES<主表名> 主键列1 [,主键列2,...]

外键名:定义的外键约束的名称,一个表中不能有相同名称的外键

字段名:表示子表需要添加外键约束的字段列

主表名:即被子表外键所依赖的表的名称

主表列:表示主表中定义的主键列或列组合

CONSTRAINT fk_emp_dept FORGEIGN KEY(deptld) REFERENCES tb_deptl(id)(语句执行在tb_emp5中)

在表tb_emp5上添加了名称为fk_emp_deptl的外键约束,需要添加外键约束的字段名称为deptld,其依赖于表tb_deptl的主键id。


12.非空约束语法规则如下

字段名 数据类型 not null

name VARCHAR(25) not null;(在表中定义字段的时候使用,定义了一个Name字段,他的插入值不能为空)


13.唯一性约束

字段名 数据类型 UNIQUE

name VARCHAR(22) UNIQUE

在顶一万所有数据以后指定唯一约束

CONSTRAINT STU UNIQUE(name)


14.默认约束

deptld INT(11) DEFAULT 1111

这样的话该表上的字段deptld就拥有了一个默认值1111,新插入的记录如果没有指定部门编号,则默认都为1111


15.设置表属性的自动增加

语法规则

字段名 数据类型 AUTO_INCREMENT

id INT(11) PRINARY KEY AUTO_INCREMENT

设置id为这个表的主码和自动递增


16.插入数据的语句(只能在MYSQL中使用,不是SAL的标准用法)

INSERT INTO tb_emp(name,salary)

VALUES('Lucy',1000),('Lura',1200),('Kevin',1500);


17.使用SELECT命令来查看记录

SELECT* FROM tb_emp;(查看所有字段的记录)

SELECT id FROM tb_emp;(查看字段id的记录)


18.查看数据表结构

DESCRIBR(简写是DESC)语句可以查看表的字段信息,其中包括:字段名,字段数据类型,是否为主键,是否有默认值等。

DESCRIBE 表名

DESC 表名

Mysql组合主键的写法 mysql里主键什么意思_数据库


其中意义如下

NULL:表示该列是否可以存储NULL值

Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。

Default:表示该列是否有默认值,如果有的话值是多少

Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。


19.查看表详细结构语句SHOW CREATE TABLE

SHOW CREATE TABLE<表名\G>;

加/G的目的是使显示的结果更加的直观易于查看。


20.修改表名

ALTER TABLE<旧表名> RENAME [TO] <新表名>l

//TO是可选参数,使用与否均不影响结果

ALTER TABLE tb_dept3 RENAME tb_deptment3;


21.修改字段的数据类型

ALTER TABLE <表名> MODIFY <字段名> <数据类型>

表名:要修改的数据类型的字段所在表的名称

字段名:指需要修改的字段

数据类型:指修改后字段的新数据类型

ALTER TABLE tb_dept1 MODIFY name VARCHAR(30);

把tb_dept1表中的name字段的数据类型更改成VARCHAR(30);


22.修改字段名

ALTER TABLE <表名> CHANGE<旧字段名> <新字段名> <新数据类型>

 ALTER TABLE tb_dept1 CHANGE loc location VARCHAR(50);

修改tb_dept1中的loc字段把他改为location同时数据类型更改成VARCHAR(50)

当然你也可以只更改数据类型就是名字不变只变数据类型


23.添加字段

ALTER TABLE <表名>ADD<新字段名><数据类型>[约束条件][FIRST|AFTER 已存在的字段名];

新字段名为需要添加的字段的名称

FIRST为可选参数,其作用是将新添加的字段设置为表的第一个字段

ALTER为可选参数,其作用是将新添加的字段添加到指定的"已存在字段名"的后面

ALTER TABLE tb_deptl ADD managerld INT(10);

给tb_deptl添加一个名为managerld的INT(10)类型的字段 

ALTER TABLE tb_deptl ADD managerld INT(10) not null;

添加字段约束非空

ALTER TABLE tb_deptl ADD managerld INT(10) after name;

添加一个managerld字段,而且放在name的后面


24.删除字段

ALTER TABLE<表名>DROP<字段名>;

字段名表示要从表中删除的字段名称

ALTER TABLE tb_dept1 DROP column2;

删除column2字段


25.修改字段的排列位置

ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;

字段1指要修改位置的字段,

数据类型指字段1的数据类型

FIRST为可选参数,指将"字段1"修改为表的第一个字段。


"AFTER字段2"指将"字段1"插入到"字段2"后面

ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) FIRST;


ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) AFTER location;

把字段column1放到location的后面去了


26.修改表的存储引擎

ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>
ALTER TABLE tb_deptment3 ENGINE=MyISAM;
修改tb_deptments的引擎为MyISAM


27.删除表的外键约束

ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>

ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp_dept;

删除名为fk_emp_dept的外键约束条