一、关系型数据库
当前主要使用两种类型的数据库:【关系型数据库】和【非关系型数据库】
所谓的关系型数据库RDBMS是建立在关系模型基础之上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
1、关系型数据库核心元素
数据行(记录)
数据列(字段)
数据表(数据行的集合)
数据库(数据表的集合)
2、关系型数据库的主要产品:
Oracle:在以前的大型项目中使用,银行、电信等项目
Mysql:web时代使用最广泛的关系型数据库
Ms sql server:在微软的项目中使用
Sqlite:轻量级数据库,主要应用在移动平台
二、数据库与数据库表的相关操作
(1)windows上远程连接虚拟机的数据库
1、打开电脑上的Wampserve 软件;
2、如果在本机windows平台上使用数据库,直接黑窗口上输入命令:
mysql -u root -p
3、如果要远程连接服务器(虚拟机)
打开虚拟机—在windows黑窗口上输入命令:虚拟机的IP地址
mysql -h 192.168.163.129 -u root -p
(2)数据库的相关操作(以; 或\G 结尾)
1、显示数据库:show databases;
2、show create database 库名; — 查看库的详细信息
3、创建数据库:create database 数据库名 charset=utf8;
4、删除数据库:drop database 库名;
5、注意:数据库名中有中横线的,会当成特殊意义,需要使用` `进行包含住。
` `符号在Tab键上方,与 ~ 一起
6、选择数据库: use 数据库名; (切换)
此时你已经进入你刚才所建立的数据库
7、显示你所选择数据库中所有的表:show tables;
8、查看当前使用的数据库:select database( );
9、查看默认存储引擎: show variables like '%storage_engine%';
10、查看mysql数据库系统支持的存储引擎的类型:show engines;
也可以
(3)数据库表相关操作:— 可选择相应的库,进行表的操作
1、查看当前数据库中数据表:show tables;
2、注意:表名不能为sql语言的关键字,一个表中可以有一个或多个字段。定义时,字母大小写均可,
各字段之间用逗号隔开,最后一个字段后不需要加逗号。
3、约束条件: 创建表时从约束条件找相应属性
完整性约束条件是对字段进行限制。要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,
数据库系统将不执行用户的操作。其目的是为了保证数据库中数据的完整性。
① MYSQL中基本的完整性约束条件如下表:
主键primary key:物理上存储的顺序(唯一性,可不写unique)
非空not null:此字段不允许填写空值
惟一unique:此字段的值不允许重复
默认default:当不填写此值时会使用默认值,如果填写时以填写为准
外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常。
② 常用数据类型如下:
整数:int,bit
小数:decimal
字符串:varchar,char
日期时间: date, time, datetime
枚举类型(enum) (有选择的选项)必须写默认值,不然报错。
③ 特别说明的类型如下:
decimal 表示浮点数,如decimal(5,2)表示共存5位数,小数占2位
char 表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab '
varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab'
字符串text表示存储大文本,当字符大于4000时推荐使用
④ 也可从下表中选择:
⑤ 使用数据类型的原则是:
够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。
4、创建数据库表 (表必须要有定义的名字和类型,其余的条件自己增加)
可在notepad++ 或 Sublime Test 软件写完程序,复制粘贴到窗口,文件保存后缀名.sql 结尾
可添加约束条件,无顺序
可以用Navicat软件查看
字符串一般不设置自增长
代码如下:
# id :#整型、无符号数值在0-255、不能为空、自动增加、唯一性,可不写unique
# name:字符串(30长度)、默认值为空
# age :数值类型、无符号范围0-255、默认值为0
# high:浮点数,如decimal(5,2)表示共存5位数,小数占2位
# gender:枚举类型(enum) (有选择的)必须写默认值
# cls_id:整型、无符号范围0-255、
# birthday:日期时间类型 date,格式 "1992-08-01"
create table students(
id int unsigned not null auto_increment primary key,
name varchar(30) default "",
age tinyint unsigned default 0,
high decimal(5,2),
gender enum("男","女","保密") default "保密",
cls_id int unsigned,
birthday date
);
5、显示表的结构
① desc 表名;
② 查看表详细结构语句:show create table 表名 \G;
6、修改表名:二选一
① alter table 旧表名 rename 新表名;
② alter table 旧表名 rename to 新表名;
7、修改字段名和字段的数据类型
alter table语句也可以修改字段的数据类型。主键的字段数据类型不能修改。
三条指令:
特别值得注意的是,字符类型的字段最好不要改成整数类型、浮点数类型。
注意:Modify和change都可以改变字段的数据类型。不同的是,change可以在改变字段数据类型的同时,改变字段名。
如果要使用change修改字段数据类型,那么change后面必需跟两个同样的字段名。
8、添加字段
① 在表的末尾添加字段: alter table 表名 add stu_age int not null;
② 在表的第一个位置增加字段: alter table 表名 add stu_num int first;
③ 在表的指定位置之后增加字段: alter table 表名 add stu_add varchar(20) after stu_phone; #在...之后添加字段
④ 一次性添加多个字段: alter table 表名 add (wuli int , huaxue int );
9、删除字段: alter table 表名 drop stu_age;
10、修改字段的排列位置
① 字段修改到第一个位置: alter table 表名 modify stu_id int first;
②字段修改到指定位置:alter table 表名 modify stu_num int after stu_phone;
11、(了解,一般不改)更改表的存储引擎
①先查看一下表的结构:show create table 表名 \G;
② 修改:alter table 表名 engine=myisam;
12、(后会细讲)删除表的外键约束
Alter table 表名 drop foreign key c_de;
13、(后会细讲)删除自增长的主键
先删除自增长再删除主键
Alter table 表名 change id id int(10); //删除自增长
Alter table 表名 drop primary key; //删除主建
14、删除表:删除没有被关联的普通表: drop table 表名;