时间:2021-07-01 10:21:17 帮助过:27人阅读
文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.05.09 lutianfei none 数据库简介 什么是数据库 数据库就是一个文件系统,但是访问的时候需要使用标准SQL语句来访问数据。 关系型数据库 存储的都是 实体 与实体之间的 关系 。 ER模型图 常见
文档版本 | 开发工具 | 测试平台 | 工程名字 | 日期 | 作者 | 备注 |
---|---|---|---|---|---|---|
V1.0 | 2016.05.09 | lutianfei | none |
什么是数据库
关系型数据库
实体
与实体之间的关系
。ER模型图
常见的数据库
注:
访问:
1.停止mysql服务:
2.在cmd>输入一个命令:
3.新打开一个cmd窗口
4.输入命令 show databases;查看数据库,输入命令 use mysql;使用mysql数据库。
过程性语言
:当前的这条语句执行需要依赖于上一条或几条语句非过程性语言
:写一条语句,就会执行一个结果。DDL
(数据定义语言) 对象
,如数据表、视图、索引等DML
(数据操纵语言)(重点) DCL
(数据控制语言) DQL
(数据查询语言)(重点) CREATE TABLE table_name
(
field1 datatype,
field2 datatype,
field3 datatype,
)character set 字符集 collate 校对规则
datatype:指定列类型
练习
删除数据库 : drop database 数据库名称;
练习
语法:alter database 数据库 character set 编码 collate 校对规则;
练习:查看服务器中的数据库,并把其中某一个库的字符集修改为gbk
create table 表名(
字段1 类型(长度) 约束,
字段2 类型(长度) 约束,
字段3 类型(长度) 约束,
字段4 类型(长度) 约束
);
字符串型
大数据类型(一般不用)
数值型
逻辑性 对应boolean
日期型
练习,创建员工表的练习
create table employee(
id int,
name varchar(20),
gender varchar(10),
birthday date,
entry_date date,
job varchar(100),
salary double,
resume text
);
主键约束(重点)
primary key
: 信息记录某个字段可以唯一区分其他信息记录,这个字段就可以是主键 (唯一 非空)auto_increment
数据库维护主键。自动增长。alter table tablename drop primary key
;唯一约束
非空约束
创建新的标签employee2,把约束加上。
create table employee2(
id int primary key auto_increment,
name varchar(20) unique not null,
gender varchar(10) not null,
birthday date not null,
entry_date date not null,
job varchar(100) not null,
salary double not null,
resume text not null
);
alter table 表名 add 字段 类型(长度) 约束;
– 添加字段alter table 表名 drop 字段;
– 删除字段alter table 表名 modify 字段 类型(长度) 约束;
– 修改类型或者约束alter table 表名 change 旧字段 新字段 类型(长度) 约束
– 修改字段的名称 rename table 表名 to 新表名;
– 修改表名alter table 表名 character set utf8;
– 修改字符集
练习
语法:
insert into 表名 (字段1,字段2,字段3..) values(值1,值2,值3...);
有几列就插入多少的值。insert into 表名 values(值1,值2,值3...);
插入所有的列注意:
字符
和日期型
数据应包含在单引号''
中。练习:
insert into user values (1,'xiaofeng','1994-10-10','2011-1-1','HR',19000,'aaa','abc');
insert into user values (2,'美美','1994-10-10','2011-1-1','HR',19000,'aaa','abc');
insert into user values (3,'小风','1994-10-10','2011-1-1','WORKER',21000,'aaa','abc');
insert into user values (4,'芙蓉','1994-10-10','2011-1-1','HR',1000,'aaa','abc');
insert into user values (5,'班长','1994-10-10','2011-1-1','HR',100,'aaa','abc');
[client]
port=3306
[mysql]
default-character-set=gbk
语法: update 表名 set 字段=值,字段=值... [where ]
练习:在上面创建的employee表中修改表中的纪录。
语法:
delete from 表名 [where];
truncate 表名;
删除所有的数据truncate 和 delete的区别:
Delete语句练习
语法:
select * from 表名;
查询所有(字段)select 字段名1,字段名2,字段名3 from 表名;
显示查询字段名select DISTINCT 字段名 from 表名;
去除重复的数据。 select 指定查询哪些列的数据。
*
号代表查询所有列。create table stu(
id int primary key auto_increment,
name varchar(20),
math int,
english int,
chinese int
);
insert into stu values(null,'班长',18,11,62);
insert into stu values(null,'小风',98,91,92);
insert into stu values(null,'美美',68,81,52);
insert into stu values(null,'美女',98,90,65);
在select语句中可使用as语句(as 可以省略)
SELECT column as 别名 from 表名;
练习:
查询姓名为班长的学生成绩
查询英语成绩大于90分的同学
查询总分大于200分的所有同学
like – 模糊查询
_
和%
区别:占位符。_
只一个%
可以有多个%
的写法 : is null – 判断是否为null
not – 不成立
练习
查询英语分数在 80-90之间的同学。
select * from stu where english >80 and english <90;
查询数学分数为18,78,46的同学。(in)
查询所有姓班的学生成绩。
order by
升序默认的(asc
)/降序(desc
)SELECT column1, column2. column3..
FROM table;
order by column asc|desc
对数学成绩排序后输出。
对总分排序按从高到低的顺序输出
对学生成绩按照英语进行降序排序,英语相同学员按照数学降序
对姓美的学生成绩排序输出
聚集函数
指SQL语句中内置函数Select count(*)|count(列名) from tablename
[WHERE where_definition]
Select sum(列名){,sum(列名)…} from tablename
[WHERE where_definition]
ifnull(math,0)
+english+chinese) from stu;AVG函数返回满足where条件的一列的平均值
练习:
Select max(列名) from tablename
[WHERE where_definition]
GROUP BY子句可以将查询结果按属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同的值。
注意,使用GROUP BY 时,SELECT 子句中只能由以下部分组成:
having
,不能使用where
例如:
练习:对订单表中商品归类后,显示每一类商品的总价
create table orders(
id int,
product varchar(20),
price float
);
insert into orders(id,product,price) values(1,'电视',900);
insert into orders(id,product,price) values(2,'洗衣机',100);
insert into orders(id,product,price) values(3,'洗衣粉',90);
insert into orders(id,product,price) values(4,'桔子',9);
insert into orders(id,product,price) values(5,'洗衣粉',90);
select product,count(*),sum(price) from orders group by product;
having
sum(price) > 100;S-F-W-G-H-O 组合
备份命令 mysql/bin/mysqldump
将数据库SQL语句导出
mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径
例如: 备份day12数据库 — c:\day12.sql
cmd > mysqldump -u root -p day12 > c:\day12.sql 回车输入密码
恢复数据库(前提创建空的数据库,并且use)
恢复命令 mysql/bin/mysql
将sql文件导入到数据库
例如:将c:\day12.sql 导入 day12数据库
补充知识:恢复SQL也可以在数据库内部执行 source c:\day12.sql
练习