昨天看了一句话,学东西不要想着该不该学,直接上手做就好,放国庆七天,我决定把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 表名
其中意义如下
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的外键约束条