1、数据库介绍
1.1 什么是数据库
按照特殊格式存储数据的仓库,方便我们的存取使用
1.2 关系型数据库管理系统
应用软件–mysql:操作仓库、表、记录(信息)
1.3 实体和表关系
一个实体对应一张表,一个对象对应一条记录
1.4常见数据库
- MYSQL:开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
- Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
- DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.
2、数据库安装和使用
2.1 mysql安装
安装时不要安装到有中文路径的地方
2.2 使用
1)、window服务开启
2)、dos窗口:
需要使用超级管理员身份登录
关闭:net stop mysql
启动:net start mysql
2.3 连接数据库
直接连接数据库:
-- 格式
mysql -u用户名 -p密码
-- 例如
mysql -uroot -proot
指定ip连接数据库
-- 格式
mysql -h主机地址 -u用户名 -p密码
-- 例如
mysql -hlocalhost -uroot -proot
指定ip全名连接数据库
-- 格式
mysql --host=主机地址 --user=用户名 --password=密码
-- 例如
mysql --host=127.0.0.1 --user=root --password=root
使用图形化工具
3、SQL语句
3.1 什么是SQL
Structured Query Language 结构化查询语言
通过SQL,对数据库进行操作,可以实现对记录增删改查
【CURD】:create 创建、update 修改、retrieve 检索(read)、delete 删除
3.2 方言
sql是一套标准,所有的数据库厂商都支持,但是各自厂商在此基础上增加了特有的语句,这部分我们称为方言;例如:MySQL 注释
3.3 语法
- sql语句可以单行或多行书写,以分号结尾
- sql语句忽略大小写,建议关键字大写
- 注释
单行:-- 注释内容 # 注释内容(MySQL方言)
多行:/* 注释内容 */
3.4 分类
分类 | 操作对象 | 主要关键字 |
---|---|---|
DDL:数据定义语言 Data Definition Language | 数据库 表 | create drop alter |
DML:数据操作语言 Data Manipulation Language | 记录 | insert update delete |
DQL:数据查询语言【非官方】Data Query Language | 记录 | select |
TCL:事务控制语言 Transaction Control Language | 事务 | commit rollback |
DCL:数据控制语言 Data Control Language | 用户 权限 | grant revoke |
3.5 DDL
进入企业开发,一般一个项目对应一个仓库,一个实体对应一张表,仓库和表创建完毕后基本不再修改
a)、操作数据库
创建数据库
直接创建数据库
-- 格式
create database 数据库名;
-- 例如
create database db_day01;
先判断数据库是否存在,若不存在创建
-- 格式
create database if not exists 数据库名;
-- 例如
create database if not exists db_day01;
创建数据库并指定字符集 GBK
-- 格式
create database 数据库名 character set 字符集;
-- 例如
create database db_day01_1 character set gbk;
查看数据库
查看所有数据库
-- 格式
show databases;
查看建库语句
-- 格式
show create database 数据库名;
-- 例如
show create database db_day01_1;
修改数据库
修改数据库字符集 utf8
-- 格式
alter database 数据库名 character set 字符集;
-- 例如
alter database db_DAY01_1 character set utf8;
删除数据库
直接删除数据库
-- 格式
drop database 数据库名;
-- 例如
drop database db_DAY01_1;
先判断数据库是否存在,若存在进行删除
-- 格式
drop database if exists 数据库名;
-- 例如
drop database if exists db_day01_1;
使用数据库
查看当前的库
-- 格式 函数==方法
select database();
使用、切换数据库
-- 格式
use 数据库名;
-- 例如
use db_day01;
b)、操作表(前提:显示用某个数据库)
创建表
-- 格式
create table 表名(
字段名 字段类型,
字段名 字段类型,
...
);
-- 例如
create table student(
id int,
name varchar(32),
birthday date
);
常用类型
int 整型
double 浮点型
varchar(指定长度) 字符串
date 日期型 格式:yyyy-MM-dd,只有年月日,没有时分秒
查看表
查看所有表
-- 格式
show tables;
查看表结构
-- 格式
desc 表名;
-- 例如
desc student;
查看建表语句
-- 格式
show create table 表名;
-- 例如
show create table student;
快速创建表结构
-- 格式
create table 新表名 like 旧表;
-- 例如
create table teacher like student;
修改表
添加字段
-- 格式
alter table 表名 add 字段名 字段类型;
-- 例如
alter table teacher add remark varchar(50);
修改字段类型
-- 格式
alter table 表名 modify 字段名 新类型;
-- 例如
alter table teacher modify remark varchar(666);
修改字段名
-- 格式
alter table 表名 change 旧字段名 新字段名 字段类型;
-- 例如
alter table teacher change remark intro varchar(111);
删除字段
-- 格式
alter table 表名 drop 字段名;
-- 例如
alter table teacher drop intro;
修改表名
-- 格式
rename table 旧表名 to 新表名;
-- 例如
rename table teacher to tch;
修改表字符集 GBK
-- 格式
alter table 表名 character set 字符集;
-- 例如
alter table tch character set gbk;
删除表
直接删除
-- 格式
drop table 表名;
-- 例如
drop table tch;
先判断表是否存在,若存在删除
-- 格式
drop table if exists 表名;
-- 例如
drop table if exists tch;
3.6 DML
对记录的增删改
a)添加记录
插入全部字段
-- 格式
insert into 表名 values(值1,值2,值3...);
-- 例如
insert into student values(1,'tom','1999-12-12');
insert into student values(3,'jack',NULL);
要求
字符串可以插入所有的数据类型,底层会动转换,推荐使用单引号
指定字段名插入
-- 格式
insert into 表名(字段1,字段2...)values(值1,值2...);
-- 例如
insert into student(name,id) values('jerry',2);-- 某个字段不写默认为null
蠕虫复制
把已有表的记录快速插入到另一张表,压力测试
要求:二张表的结构一致
-- 快速创建表结构
create table stu like student;
-- 压力测试
insert into stu select * from student;
中文乱码
使用dos窗口 GBK;数据库 UTF8!
查看数据库字符集
-- 格式
show variables like '%character%';
临时修改字符集
-- 格式
set names gbk;
b)修改记录
[] 里面的关键字可写可不写
-- 格式
update 表名 set 字段名=字段值,字段名=字段值 [where 条件];
-- 例如
update stu set birthday='1998-1-1';-- 将会使表中的所有记录的这个字段进行修改,所以一般不用
update stu set birthday='1996-1-1' where id =4;-- 推荐使用
c)删除记录
-- 格式
delete from 表名 [where 条件];
-- 例如
delete from stu;-- 收拾行李跑路吧
delete from student where id = 1;-- 推荐使用
truncate
收拾行李的时间都没了,赶紧订机票把
摧毁表,重建表,与原来表结构相同
-- 格式
truncate table 表名;
-- 例如
truncate table student;
3.7 DQL
单表简单查询
准备数据
-- 创建表
create table student1(
id int,
name varchar(20),
chinese double,
english double,
math double
);
-- 插入记录
insert into student1(id,name,chinese,english,math) values(1,'tom',89,78,90);
insert into student1(id,name,chinese,english,math) values(2,'jack',67,98,56);
insert into student1(id,name,chinese,english,math) values(3,'jerry',87,78,77);
insert into student1(id,name,chinese,english,math) values(4,'lucy',88,NULL,90);
insert into student1(id,name,chinese,english,math) values(5,'james',82,84,77);
insert into student1(id,name,chinese,english,math) values(6,'jack',55,85,45);
insert into student1(id,name,chinese,english,math) values(7,'tom',89,65,30);
练习
-- 查询表中所有学生的信息
select * from student1;
-- 查询表中所有学生的姓名和对应的语文成绩
select name,chinese from student1;
-- 查询表中学生姓名(去重)
select distinct name from student1;
select distinct name,chinese from student1;
-- 在所有学生数学分数上加10分特长分
select name,math+10 from student1;
-- 统计每个学生的总分
select name,math+ifnull(english,0)+chinese from student1;
-- 使用别名表示学生总分
select name,(math+ifnull(english,0)+chinese) as total from student1;
select stu1.name,tch1.name from student1 [as] stu1;
distinct
对查询结果,完全相同的内容进行去重显示
-- 格式
select distinct 字段名1,字段名2 from 表名;
ifnull()函数
-- 格式
ifnull(字段名,定义值) -- 如果该字段有值就直接返回,如果该字段没有值返回我们定义的值
完整格式
select [distinct] * | ifnull(字段名,定义值) [as] 别名 from 表名 [as] 表别名
复习
-
能够理解数据库的概念
按照特殊格式进行存储数据
-
能够安装MySQL数据库
-
能够启动,关闭及登录MySQL
window窗口的服务中进行开关
DOS窗口:
开启:net start mysql 关闭:net stop mysql
-
能够使用SQL语句操作数据库
create database 数据库名;-- 创建数据库 create database if not exists 数据库名;-- 先判断是否存在该数据库,不存在就创建 create database 数据库名 character set 字符集;-- 创建指定字符集的数据库 show database;-- 查看所有的数据库 show create database 数据库名;-- 查看创建该数据库的语句 alter database 数据库名 craacter set 字符集;-- 修改该数据库的字符集 drop database数据库名;-- 删除该数据库 drop if exists 数据库名;-- 先判断数据库是否存在,存在就进行删除 select database();-- 查看当前使用的数据库 use 数据库名;-- 使用,或切换数据库
-
能够使用SQL语句操作表结构
=- 7对表进行操作前必须先使用数据库 create table 表名(字段名 字段类型...);-- 创建表,并创建表中字段 show tables;-- 查看该数据库下的所有表 desc 表名;-- 查看该表的结构 show create table 表名;-- 查看建表语句 create table 表名1 like 表名2;-- 快速建表,表名1的结构与表名2的结构相同 alter table 表名 add 字段名 字段类型;-- 为表中添加一个字段 alter table 表名 modify 字段名 新类型;-- 修改该字段的类型 alter table 表名 change 旧字段名 新字段名 字段类型;-- 修改字段名,且可以修改新字段的字段类型 alter table 表名 drop 字段名;-- 删除指定字段 rename table 旧表名 to 新表名;-- 修改表名 alter table 表名 character set 字符集;-- 修改表的字符集 drop table 表名;-- 删除表 drop table if not exists 表名;-- 先判断表是否存在,存在就删除
-
能够使用SQL语句进行数据的添加修改和删除的操作
insert into 表名(字段名1,字段名2...)values(值1,值2...);-- 为指定字段插入内容,不插入内容默认为null insert into 表名 values(值1,值2...);-- 为表中全部字段插入内容,插入内容顺序要与字段相对应 insert table 新表名 select * from 旧表名;-- 将旧表中的记录快速插入到新表中 show variables like '%character%';-- 参看数据库下的字符集 set names 字符集;-- 临时修改字符集 update 表名 set 字段名=字段值,字段名=字段值 where 条件;-- 通过条件修改对应记录的值 delete from 表名 where 条件;-- 根据条件删除记录
-
能够使用SQL语句添加约束