数据(data)
表
数据库
(1)关系型数据库
存储的往往是字符、字符串、数值、布尔值等
代表有:Mysql (Oracle公司) 、SQL server (微软) 、access (微软公司office产品)"oracle、DB2 (IBM公司) 、 sybase (sybase)等等
(2)非关系型数据库(NoSQL (Not Only SQL))
存储的往往是图片、视频、语音等
代表有:MongoDB 、 Redis (内存数据库/缓存数据库) K-V键值对、与之类似的Mcmcache K-V键值对
1、第一代数据库
2、第二代数据库
3、第三代数据库
4、当前主流使用
类型 | 特点 |
---|---|
SQL Server (微软公司产品) | 面向Windows操作系统 |
简单、易用 | |
Oracle (甲骨文公司产品) | 面向所有主流平台 |
安全、完善、操作复杂 | |
DB2 (IBM公司产品) | 面向所有主流平台 |
大型、安全、完善 | |
MySQL (甲骨文公司收购) | 免费、开源、体积小 |
1、介绍
2、实体
3、关系
4、属性
5.存储结构
类型 | 说明 |
---|---|
int | 整型(定义整数类型数据) |
float | 单精度浮点,4字节32位,准确到小数点后六位 |
double | 双精度浮点,8字节64位 |
char | 固定长度的字符类型,定义字符类数据 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal (5,2) | 5个有效长度数字,小数点后面有2位,指定长度数组 |
(1)、进入数据库
mysql -u root -p
-u 连接数据库的用户名
-p 后面跟的是连接数据库的密码(不能有空格)
(2)、查看数据库的信息
SHOW DATABASES; #大小写不区分,分号“;”表示结束
(3)、查看数据库中包含的表
USE 数据库名;
SHOW TABLES;
(4)、查看表的结构(字段)
USE 数据库名;
DESCRIBE [数据库名.]表名;
可缩写成:DESC 表名;
这里执行就像我们在Linux中使用绝对路径和相对路径一样,当你在所在表的库中时,可省略前面的数据库名(相对路径)。
当你需要对其他库中的表进行操作时,就需要加上库名(绝对路径)进行操作。
(1)、SQL语言
(2)、SQL分类
DDL | 数据定义语言,用于创建数据库对象,如库、表、索引等 |
---|---|
DML | 数据操纵语言,用于对表中的数据进行管理 |
DQL | 数据查询语言,用于从数据表中查找符合条件的数据记录 |
DCL | 数据控制语言,用于设置或者更改数据库用户或角色权限 |
CREATE DATABASE 数据库名;
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
create table class1(id int, name char(4), age int, sex char(4));
desc class1;
show tables;
field | 字段 |
---|---|
type | 类型 |
null | 允许为空 |
not null | 不允许为空 |
default | 默认为空 |
primary key | 主键(一般选择没有重复且不为空的字段) |
use 数据库名;
drop table 表名;
或
drop table [数据库名.]表名;
DROP DATABASE 数据库名;
例:show databases;
drop table internet.class2
show tables;
- 向数据表中插入新的数据记录:insert
insert into 表名(字段1,字段2[,...]) values(字段1的值,字段2的值,...);;
insert into class1(id,name,age,sex) values(1, 'xc', 24, '男');
desc class1
select * from class1
- 查询数据记录
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
select * from class1
select name,sex from class1 where id=2;
select name,age from class1 where id=1;
- 修改、更新数据表中的数据记录:update
update 表名 set 字段名1=字段值1[,字段名2=字段值2] [where 条件表达式];
insert into class1 values(4,'gw',26,'男');
insert into class1 values(6,'yxy',23,'女');
insert into class1 values(6,'yxy',23,'女');
select * from class1;
select * from class2
update class2 set address='江苏南京鼓楼' where id =1;
select * from class2;
- 在数据表中删除指定的数据记录:delete
delete from 表名 [where 条件表达式];
delete class1 id=3 where name='ywy';
select * from class1;
select 字段名1,字段名2[,...] from 表名 [where 条件表达式];
小技巧:
select * from 表名; #显示全部
select 字段1,字段2 from 表名; #显示字段1和字段2
select 字段1 from 表名\G; #以列表形式竖向显示
select * from 表名 info limit 2; #只显示头2行
select * from 表名 info limit 2,3; #显示第2行后的前3行
- 修改表名
ALTER TABLE 旧表名 RENAME 新表名;
例:alter table class1 rename class2;
show tables;
select * from class1;
select * from class2;
- 扩展表结构(增加字段)
alter table class2 add address varchar(30) default '地址不详';
#default ‘地址不详’:表示此字段设置默认值 地址不详;可与 NOT NULL 配合使用
- 修改字段(列)名,添加唯一键
alter table 表名 change 旧列名 新列名 数据类型 [unique key];
#change 可修改字段名、数据类型、约束等所有项
唯一键:唯一,但可以为空(空值只能出现一次)
#每张表往往有多个字段具有唯一性,但是只能指定一个主键,所以唯一键就是用来解决表中多个字段需要具有唯一性的问题
主键包含唯一键的部分属性
唯一键不能完全作为主键
select * from class2;
insert into class2(id,personal_name,age,sex) values(7,'nwt',22,'女'); #因为personal_name中已经存在nwt,所以不能在创建相同的数据
insert into class2(id,personal_name,age,sex) values(7,'aklnjl',22,'女'); #因为设置的字数不超过5个,很明显违反了规则
insert into class2(id,personal_name,age,sex) values(7,'opp',22,'女');
select * from class2;
4、删除字段、主键
alter table 表名 drop 字段名;
alter table class2 drop age;
select * from class2;
alter table class2 drop sex;
select * from class2;