学习总结
MySQL安装好以后,首先需要创建数据库,这是使用MySQL各种功能的前提。
1、下面将详细介绍数据库的基本操作。
启动服务:net start MySQL
停止服务:net stop MySQL
登录数据库:mysql -h localhost -u root -p
创建数据库:CREATE DATABASE dataase_name(数据库名);
使用数据库:USE database_name;
查看当前所有存在的数据库:SHOW DATABASES;
删除数据库;DROP DATABASE database_name;
查看数据库存储引擎: SHOW ENGINES;
查看默认的存储引擎:SHOW VARIABLES LIKE 'storage_engine'
数据库存储引擎有:InnoDB MyISAM MEMORY
2、下面将详细介绍数据表的基本操作
2.1创建数据表:
在创建数据表之前,应该使用 " USE database_name"
创建数据表:CREATE TABLE <table_name>
(
字段名1,数据类型 [列级别约束条件] [默认值],
字段名2,数据类型 [列级别约束条件] [默认值],
..............
)
查看创建的数据表:SHOW TABLES;
2.1.1使用主键约束:主键列数据唯一,并且不允许为空主键能够唯一标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。
一、单字段主键
1、 在定义列的同时指定主键: 字段名 数据类型 PRIMARY KEY ; eg: id int(11) PRIMARY KEY;
2、在定义完所有列之后指定主键:[CONSTRAINT<约束名>] PRIMARY KEY [字段名] primary key (id);
二、多字段联合主键
PRIMARY KEY (字段1,字段2,...字段n); PRIMARY KEY (id ,name);
2.1.2 使用外键约束:外键用来在两个表的数据之间建立连接,它可以日一列或多列。作用:保持数据的一致性、完整性。
外键:首先它是表中的一个字段,它可以不是本表的的主键,但对应另外一个表的主键。外键的作用保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。
外键创建规则如下:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 (字段名1,字段名2.........)
REFERENCES <主表名> 主键列1 [主键1,主键2,.........]
例如:CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) FEFERENCES to_dept1(id);
2.1.3使用非空约束:设置字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。
非空约束的语法规则如下:
字段名 数据类型 not null;
2.1.4使用唯一性约束:要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者多列不出现重复值。
唯一性约束的语法规则如下:
(1) 在定义完列之后直接指定唯一约束, 字段名 数据类型 UNIQUE;
(2)在定义完所有列之后指定唯一约束, [CONSTRAINT <约束名>] UNIQUE(<字段名>)
UNIQUE与PRIMARY KEY区别: 一个表中可以有多个字段声明为 UNIQUE,但只能有一个PRIMARY KEY声明;声明为PRIMARY KEY的列不允许有空值,但是声明为UNIQUE的字段允许空值(NULL)的存在.
2.1.5使用默认约束:用来指定某列的默认值
默认值的语法规则如下:
字段名 数据类型 DEFAULT 默认值 ;
2.1.6设置表的属性值自动增加:一个表只能有一个字段使用AUTO_INCREMENT,且该字段必须为主键的一部分.
设置表的属性值自动增加的语法规则如下;
字段名 数据类型 AUTO_INCREMENT
例如 : id int(10) PRIMARY KEY auto_increment,
2.1.7查看数据表结构:可以查看表结构的定义,以确认表的定义是否正确。
(1) DESCRIBE 表名; 或者简写: DESC 表名;
(2) SHOW CREATE TABLE <表名\G>
使用SHOW CREATE TABLE 语句,不仅可以查看表创建时候的详细语句,而且还可以查看存储引擎和字符编码。
如果不加“\G”参数,显示的结果可能非常混乱,加上参数“\G”之后,可使显示结果更加直观,易于查看。
2.2修改数据表
修改表指的是修改数据库中已经存在的数据表的结构。使用ALTER TABLE 语句修改表。
2.2.1修改表名:ALTER TABLE <旧表名> RENAME [TO] <新表名>;
2.2.2修改字段的数据类型:ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
注意:在数据库表中有数据的时候,不要轻易修改数据类型
2.2.3修改字段名:ALTER TABLE <旧表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
2.2.4添加字段:ALTER TABLE <表名> ADD <新字段名> <数据类型>
[约束条件] [FIRST | AFTER 已存在字段名];
1、添加无完整性约束条件的字段:ALTER TABLES tb_dept1 ADD managerId int(11);
2、添加有完整性约束条件的字段:ALTER TABLES tb_dept1 ADD manageId int(11) not null;
3、在表的第一列添加一个字段:ALTER TABLE tb_dept1 add manageId int(11) FIRST;
4、在表的指定列之后添加一个字段:ALTER TABLE tb_dept1 ADD mannageId int(11) AFTER name;
2.2.5删除字段:ALTER TABLE <表名> drop <字段名>;
2.2.6修改字段的排列位置:ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST | AFTER <字段2>;
1、修改字段为表的第一个字段:ALTER TABLE tb_dept1 MODIFY column1 varchar(12) FIRST;
2、修改字段到表的指定列之后:ALTER TABLE tb_dept1 MODIFY column1 varchar(12) AFTER location;
2.2.7更改表的存储引擎:ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
2.2.8删除表的外键约束:对于数据库中定义的外键,如果不再需要,可以将其删除。外键一旦删除,就会解除主表和从表间的关联关系,MySQL中删除外键的语法格式如下:
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
外键约束名:指在定义表时CONSTRAINT 关键字后面的参数;
2.2.9删除数据表:将数据库中已经存在的表从数据中删除。注意,在删除表的同时,表的定义和表中所有的数据均会被删除。
1、删除没有被关联的表:使用DROP TABLE 可以一次删除一个或多个没有被其他关联的数据表。
DROP TABLE [IF EXISTS] 表1,表2,......;
参数“IF EXISTS”用于在删除前判断删除的表是否存在,加上该参数后,再删除表的时候,如果表不存在,SQL 语句可以顺利执行,但是会发出警告(warning)。
2、删除被其他表关联的主表:数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败。原因日直接删除,将破坏的参照完整性。如果必须要删除,可以先删除与它关联的子表,再删除父表,只是这样同时删除了两个表中的数据。但有的情况下可能保留子表,这时如要单独删除父表,只需将关联的表的外键约束条件取消,然后就可以删除父表。
解除关联子表 tb_dept2的外键约束:ALTER TABLE tb_emp DROP FOREIGN KEY fk_emp_dept ;
语句成功执行后,将取消表 tb_emp和表 tb_dept2之间的关联关系,此时,可以输入删除语句,将原来父表tb_dept2删除,
DROP TABLE tb_dept2;
注意:
1、表删除操作将把表的定义和表中的数据一起删除,并且MySQL在执行删除操作时,不会有任何的确认信息提示,因此执行删除操作时,应当慎重。
2、并不是每个表都可以任意选择存储引擎:外键约束是用来保证数据的参照完整性,如果表之间需要关联外键,却指定了不同的存储引擎,这些表之间是不能创建外键约束的。所以说,存储引擎的选择也不完全是随意的。
以上部分主要是数据库的创建与表的创建,当创建完成之后,需要往表里面插入数据,而后对数据进行操作。将在下一篇总结;