数据库类型
1、关系型数据库:以2维表的形式来存储数据
mysql oracle sqlserver db2
2、非关系型数据库:
NoSQL redis MongoDB
类似于key键-value值对存储
特点:查询数据非常快==大数据
- sqlyog连接数据库
SQLyog连接数据库报错plugin caching_sha2_password could not be loaded
链接:https://pan.baidu.com/s/1qlgUHSEgQp2Ey3K55r9GMA
提取码:iiq6
sqlyog提取下载 及激活码
数据库的构成
基本构成:数据库、数据库表、数据
SQL语言和分类
SQL (Structured Query Language)结构化查询语言,操作数据库语句,非常方便。
SQL语言是专门操作数据库的语言,所有数据库都支持SQL语言
但是SQL语言针对不同的数据库是有不同的特点的。
SQL要求:
SQL语句可以单行或多行书写,以分号结尾;
可以用空格和缩进来来增强语句的可读性;
关键字不区别大小写,建议关键字用大写
/*多行注释/*/–单行注释(单行注释需要再一后面打个空格)#也是单行注释
- SQL语言分类
DDL(重点):数据定义语言
创建数据库,创建表
DML(次重点):数据操作语言
数据插入/更新/删除
DCL(了解)︰数据控制语言
用户权限,表权限…
DQL(重点):数据查询语言
数据查询
DDL:数据定义语言
- 数据库基本操作
创建数据库 并且设置字符集
注意:使用cmd窗口登录数据库操作的时候,必须以;号结束输入
create database 数据库名 character set 字符集
create database student_test2 character set utf8;
显示数据库
show databases
使用数据库
use 数据库名
use student_test2;
删除数据库
drop database 数据库名;
drop database student_test2;
-
常用的数据类型
1、数值类型
tinyint:小整数类型(-128~127之间)
int:大整数类型
float:单精度浮点型:float(5,2):表示最多5位,小数位保留2位(999.99)
double:双精度浮点型:double(5,2):表示最多5位,小数位保留2位
decimal:浮点型:一般用在需要精确的计算方面,比如:钱;不去失去精度
unsigned:表示无符号:去除掉了负数,从0开始,范围扩大了1倍
2、字符类型
char:固定长度的字符串类型:char(5):表示能存储5个长度的数据,如果存了2个,剩下的3个长度用空格代替。
varchar:可变长度的字符串类型:varchar(5):表示能够存储5个长度的数据,如果存了2个,剩下的3个长度释放。
nchar:n表示unicode数据。它的其他规则跟char一样,nchar比char同样长度的
blob:存储2进制数据:图片视频
text:长文本数据:大的文本
3、日期和时间类型
date:yyyy-MM-dd:表示年月日
time:HH:mm:ss:表示时分秒
datetime:yyyy-MM-dd HH:mm:ss:表示年月日时分秒:必须手动输入日期
timestamp:yyyy-MM-dd HH:mm:ss:表示年月日时分秒的时间戳:可以按照服务器时间自动插入
注:字符串类型和日期类型插入时需要加单引号 -
表的约束
在创建表的时候,需要对表中的数据进行约束,也就是说,表的数据不能乱写。。。
1、主键约束:primary key
表示唯一确定表中一条记录,就叫做逐渐约束。
约束的字段就叫做主键字段。
主键自动增长:auto_increment :表示主键不需要我们维护,数据库自动维护增加
特点:主键不能重复,主键不能为空,一个表中只能有一个主键约束(包括了联合主键的情况)
2、非空约束:not null
表示该字段必须要有值,不能是空的
3、检查约束
mysql不支持检查约束,Oracle和SQL server支持
4、唯一性约束:unique
表示该字段不能重复,但是可以有一个null值
特点:字段不能重复、可以有一个null值、多个字段都可以是唯一性约束
5、默认值:default
表示给字段一个默认值
6、主外键约束:foreign key
把主键表叫做主表
把外键表叫做从表
从表的外键字段的数据必须来源于主表的主键字段 -
创建表
USE student_test;
CREATE TABLE course(
cid INT PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(50)
)AUTO_INCREMENT=2001;#自动增长
CREATE TABLE score(
sid INT PRIMARY KEY AUTO_INCREMENT,
stu INT,
cid INT,
score INT,
FOREIGN KEY(stu) REFERENCES student(stu),#外键名称
FOREIGN KEY(cid) REFERENCES course(cid)
);
- 查看表
1、查看当前数据库中所有表名称
show tables;
2、查看表的结构
desc 表名;
3、查看表的创建语句
show create table 表名;
- 修改表
- 删除表
drop table 表名;
DML:数据操纵语言
- 插入数据
INSERT INTO student (snae,sex,age,birth,email,class) VALUES
('Jim','男',16,'1997-7-7','222@qq.com','1班'),('Rose','女',14,'1999-7-7','333@qq.com','1班');
- 更新数据
update 表名 set 列=新值,列2=新值2 ...[where 条件]
UPDATE student SET sex='女' WHERE stu=1002;
- 删除数据
delete from 表名 [where 条件];--可以删除部分数据,数据可以回滚
truncate table 表名; --永久删除全部数据,无法回滚
DELETE FROM student WHERE stu=1002;
创建学生表、课程表、成绩表
USE student_test;
CREATE TABLE course(
cid INT PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(50)
)AUTO_INCREMENT=2001;
CREATE TABLE score(
sid INT PRIMARY KEY AUTO_INCREMENT,
stu INT,
cid INT,
score INT,
FOREIGN KEY(stu) REFERENCES student(stu),
FOREIGN KEY(cid) REFERENCES course(cid)
);
DROP TABLE score;
CREATE TABLE score(
sid INT PRIMARY KEY AUTO_INCREMENT,
stu INT,
cid INT,
score INT,
FOREIGN KEY(stu) REFERENCES student(stu),
FOREIGN KEY(cid) REFERENCES course(cid)
)AUTO_INCREMENT=3001;
DESC student;
INSERT INTO student (snae,sex,age,birth,email,class) VALUES('tom','0',16,'1997-7-7','111@qq.com','1班');
INSERT INTO student (snae,sex,age,birth,email,class) VALUES
('Jim','男',16,'1997-7-7','222@qq.com','1班'),('Rose','女',14,'1999-7-7','333@qq.com','1班');
UPDATE student SET sex='女' WHERE stu=1002;
DELETE FROM student WHERE stu=1002;
DESC course;
INSERT INTO course (cname)VALUES ('数学');
DESC score;
INSERT INTO score (stu,cid,score) VALUES(1001,2001,90),
(1003,2001,92);