一、数据库基本概念
- DB : Database(数据库)
- DBMS : 数据库管理系统
- DBS :数据库系统
- 计算机硬件、软件
- DB
- DBMS
- DBA(数据库管理员)
数据库的优点:开源、免费、跨平台、性能好、用户多,在许多软件公司中使用
二、数据库的基本操作
修改密码:mysqladmin -u root -p password 123456<新密码>--->在bin目录下修改
mysql启动和关闭:net start(stop) mysql
查看数据库:show databases;
使用(切换)数据库:use hero1<数据库名>
创建数据库:create database hero1<数据库名>
创建数据库并指定字符集:create database (if not exists) hero1<数据库名>default charset utf8 collate utf8_general_ci;
删除数据库:drop database hero1<数据库名>;
查看存储引擎(mysql存储数据的方式):show engines;--->1.innodb(默认常用) 2.myisam 3.memory
引擎类别 |
优缺点 |
适用场合 |
INNODB |
支持事务 支持外键 读写速度一般 数据可持久保存 |
对数据完整性有严格要求的系统 默认使用该引擎 |
MYISAM |
不支持事务 不支持外键 数据读写速度快 数据可持久保存 |
对数据完整性没有要求的系统 要求数据读写速度快并能长久保存 |
MEMORY |
不支持事务 不支持外键 读写速度快 数据不能持久保存 |
数据量不大但读写频繁且不需要长久保存的系统 |
三.表的操作
创建表 Create table <表名>(<字段名> <字段类型> 约束)[表选项]
create table table1(id int,name varchar(10)not null);default null;
展示表 show tables;
查看表的字段 desc table1<表名>;
复制表 Create table <表名A> like <表名B> create table table1 like table2
复制表结构 create table table1 as select * from table2
修改表
- 添加字段 alter table table1<表名> add column birth date null<表的字段名的类型>
- 添加索引 alter table table1<表名> add index idx_table1_name(name)
- 添加主键 alter table table1<表名> add primary key(id)
- 创建分类表 create table table_class
- 添加分类id alter table table1<表名> add column classid int
- 添加外键约束 alter table table1 add foreign key fk_table_id(classid) teferences table_class(id)-->外界表
- 修改字段类型的字段名 alter table table1<表名> change column name tablename varchar(20)
- 只修改字段类型 alter table table1<表名> modify column tablename varchar(30)
- 设置 / 修改字段约束 alter table table1<表名> alter column tablename set /drop default 'name'
关键字 |
说明 |
ADD COLUMN |
添加字段 |
ADD INDEX |
添加索引 ALTER TABLE 10_04 ADD INDEX idx_10_04_f_001 (A) |
ADD PRIMARY KEY |
添加主键 ALTER TABLE 10_02 ADD PRIMARY KEY (t) |
ADD FOREIGN KEY |
添加外键 ALTER TABLE 10_02 ADD FOREIGN KEY fk_f_04 (f) REFERENCES 10_04 (t) |
CHANGE COLUMN |
修改字段名及字段类型 ALTER TABLE 10_04 CHANGE A b CHAR(1) |
MODIFY COLUMN |
修改字段定义 ALTER TABLE 10_02 MODIFY f SMALLINT |
ALTER COLUMN |
设置或删除default ALTER TABLE 10_02 ALTER t DROP DEFAULT ALTER TABLE 10_02 ALTER t SET DEFAULT 0 |
ADD FOREIGN KEY |
添加外键 ALTER TABLE 10_02 ADD FOREIGN KEY fk_f_04 (f) REFERENCES 10_04 (t) |
CHANGE COLUMN |
修改字段名及字段类型 ALTER TABLE 10_04 CHANGE A b CHAR(1) |
MODIFY COLUMN |
修改字段定义 ALTER TABLE 10_02 MODIFY f SMALLINT |
ALTER COLUMN |
设置或删除default ALTER TABLE 10_02 ALTER t DROP DEFAULT ALTER TABLE 10_02 ALTER t SET DEFAULT 0 |
ADD FOREIGN KEY |
添加外键 ALTER TABLE 10_02 ADD FOREIGN KEY fk_f_04 (f) REFERENCES 10_04 (t) |
DISABLE KEYS |
禁用约束 ALTER TABLE 10_04 DISABLE KEYS |
ENABLE KEYS |
启用 ALTER TABLE 10_04 ENABLE KEYS |
RENAME |
修改表名 ALTER TABLE 10_04 RENAME 10_05 |
RENAME INDEX |
修改索引名 ALTER TABLE 10_02 RENAME INDEX <索引名> to <新索引名> |
删除表 drop table
- 创建索引 Create index <索引名> on <表名1、表名2>(多列字段名) CREATE INDEX idx_1006_f_001 ON 10_06(f)
- 创建唯一索引 Create unique index <索引名> on <表名>(字段名) CREATE unique INDEX idx_1006_f_001 ON 10_06(f)
- 删除表字段 alter table table<表名> drop column id <字段>
- 删除主键 alter table table1<表名>drop primary key
- 删除索引 alter table table1<表名>drop index table_name
- 删除外界约束 alter table table1<表名>drop foreign key fk_table_id
关键字 |
说明 |
DROP COLUMN |
删除字段 ALTER TABLE 10_04 DROP b |
DROP PRIMARY KEY |
删除主键约束 ALTER TABLE 10_02 DROP PRIMARY KEY |
DROP index |
删除索引 ALTER TABLE 10_04 DROP INDEX idx_10_04_f_001 |
DROP FOREIGN KEY |
删除外键 ALTER TABLE 10_02 DROP FOREIGN KEY 10_02_ibfk_1 |
设置表的约束
- 禁用 / 启用约束 alter table table1 disable /enable keys
- 修改表名 alter table table1 rename table2<新表名>
- 删除表 drop table table1
视图操作---->视图是存储在数据库中的查询的SQL语句
安全原因 ; 简化操作
- 创建视图 Create view <视图名> as <查询>
- 查看视图 Show Create view <视图名>
- 查看视图详细信息 Show table status
- 查看视图字段 Desc <视图名>
- 修改视图 ALTER VIEW <视图名> AS <查询>
- 创建或修改视图 Create or replace view <视图名> as <查询>
使用数据库命令备份(在bin目录下备份)
- 数据库备份 :Mysqldump –uroot –p123456 -- database hero1 >e:\hero.sql
- 数据库恢复 :Mysql –uroot –p123456<e:\hero1.sql
实体联系图(E-R图):
ER图:也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
矩形:表示实体
菱形:表示实体之间的联系
椭圆形:表示实体或联系的属性
第一范式:第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
第二范式:一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。注:这种情况存在于多主键时
第三范式:表中的所有字段都必须依赖于主键,而不依赖于其它字段。