1. 数据库介绍
存数据:
数据库 - 文件(特定格式),只有数据库软件可以读取
数据库 - 服务器(软件),可以由客户端访问
存储位置 | 优点 | 缺点 |
---|---|---|
内存 | 速度快 | 不能永久保存,数据是临时状态 |
文件 | 数据可以永久保存 | 操作数据不方便,查询某个数据 |
数据库 | 1)数据可以永久保存 2)查询速度快 3)对数据的管理方便 | 占用资源,需要购买 |
关系型数据库
2. 数据库的服务与启动
SQL语句 Select Query Language 99标准 - 官方语言
DB :DataBase
环境变量:CMD 可以执行的命令的所有目录
执行命令[工具、文件]:
- 在当前文件夹搜索
- 在环境变量定义的所有目录中搜索
CMD
- net start mysql 服务的开启 mysql是服务器名
- net stop mysql 服务的关闭
登录格式:
-
mysql -u用户名 -p密码
例子:mysql -h127.0.0.1 -uroot -p123456
-
mysql -hIP地址 -u用户名 -p密码
例子mysql -h127.0.0.1 -uroot -p123456
-
mysql --host=IP地址 --user=用户名 --password=密码
例子:mysql --h=127.0.0.1 --u=root --p=123456
quit或exit # 退出MySQL
图形化工具:
- Workbench - mysql自带
- SqlDeveloper - oracle自带
- Navicat12
- Sqlyog(Windows版)
TCP/IP协议 自行研究
ip:port 套接字,确定的是一个服务软件
- ip:确定主机
- port:确定服务器软件
域名:套接字的映射
DNS:IP集合,中转站
http协议的默认端口是80
默认数据库:(数据分区,仓库)
- sys - 系统相关配置
- mysql - mysql系统相关内容,例如用户\权限
3.SQL的概念
mysql的基础语法:
- 大小写不敏感,每一句sql最后一定要以;结尾
- – :注释
- /* */:多行注释
- 命名:表明/字段名 不能使用关键字
user
- 字符串可以用’'也可以用""表示
SQL分类:
- DDL(Data Defined Language):操作数据库,表
- DML(Data Manipulation Language):操作记录(添加、删除、修改)
- DQL(Data Query):对记录进行查询
- DCL(Data Control):对用户权限的设置
查看当前数据库的字符集:
show variables like ‘%char%’;
改字符集,需要修改配置文件 my.cnf/my.ini
4.DDL的操作数据库
- 查看数据库: show databases
- 创建数据库:
- create database 数据库名;
- 判断数据库是否已经存在,不存在则创建数据库:create database if not exists 数据库名;
- 创建数据库并指定字符集: create database 数据库名 character set 字符集
- 使用数据库: use 数据库名;
- 删除数据库:
- drop database 数据库名;
- drop database if exists 数据库名;
- 改变数据库字符集:
alter database 数据库名 default charset=utf8
select 全局函数():
- select now();//查询当前时间
5.DDL操作表
操作table,前提必须切换数据库 ues xxx:
- 创建
- 删除
- 修改
创建表 - 确定字段名(列),确定字段类型
数据类型:
- 字符/字符串:
- varchar(10) - 最大10个字符
- char(10) - 固定10个字符
- 整数:int(2)[mysql] number(2)[oracle]
- 小数:double(3,1) - [mysql]最大值99.9 number(3,1)[oracle]
- 时间类型:
- 年月日 date
- 时分秒 timestamp
- 年月日时分秒 datetime
创建表:
- create table 表名;
- create if not exists table 表名;
--表明全称:数据库.表名
create table user(
-- varchar(20)指的是长度最大20,comment表示字段的说明
name varchar(20) comment '姓名' ,
age int(2) ,
sex char(1),
score double(3,1) comment '个人综合评分',
birthday datetime
);
查看表结构:
desc 表名;
查看所有的表:
show tables;
显示创建User表的sql语句
show create table 表名;
创建一张和user相同的表
create table 创建的表的表名 like user;
修改表 alter
-
添加新的字段:
alter table 表名 add 字段名 字段类型;
alter table 表名 add ( 多个字段+字段类型 );
-
修改原先字段的类型:(只能修改一个字段)
alter table 表名 modify age int(3); -
删除字段
alter table 表名 drop 字段名; -
修改字段名
alter table 表名 change 原先字段类型 字段 新的字段类型;
重命名表
rename table 原表名 to 新表名
删除表
drop table 表名;
6.DML操作
向表中添加数据:insert into 表名 values(字段值);
插入全部字段:
- 所有字段名都写出来:
insert into 表名 (字段名1, 字段名2, 字段名3…) VALUES (值1,值2,值3) - 不写字段名:insert into 表名 VALUES (值1,值2,值3)
插入部分数据:
insert into 表名(字段1,字段2,…) values(值1,值2,…)
tips:没有添加数据的字段会使用null
更新表记录:
update 表名 set 列名 = 值 [where 条件表达式]
- 不带条件修改数据:
update 表名 set 字段名 = 值; – 修改所有的行 - 带条件修改数据:
update 表名 set 字段名 = 值 Where 字段名 = 值;
tips:如果update和delete不能执行,需要修改数据库安全模式:set SQL_SAFE_UPDATES = 0;
删除表记录:
delete from 表名 [where 条件表达式]
- 如果没有指定 WHERE 子句 MySQL 表中所有的记录将被删除
- 你可以在 WHERE 子句中指定任何条件
-
不带条件删除数据: delete from 表名;
-
带条件删除数据: delete form 表名 where 字段名 = 值;
-
使用truncate删除表中所有记录: truncate table 表名;
-
truncate 和 delete的区别:
truncate相当于删除表的结构,在创建一张表。
7.DQL查询表中数据
查询不会对数据库中的数据进行修改,只是有一种显示数据的方式。
语法:
select 列名 from 表名 [where 条件表达式]
- select 命令可以读取一行或者多行记录。
- 可以使用星号(*)来代替其他字段,select语句会返回表的所有字段数据
- 可以使用where 语句来包含任何条件
简单查询:
- 查询表所有行和列的数据(使用*表示所有列):
SELECT * FROM 表名; - 查询指定列:
select 字段名1,字段名2,字段名3,… from 表名;
指定列的别名进行查询
-
使用关键字
使用别名的好处:显示的时候使用新的名字并不修改表的结构
-
语法
select 字段名 1 as 别名,字段名 2 as 别名… from 表名
tips:其中的as可以省略
表示用别名的原因:用于多表查询操作
清楚重复值:
- 查询指定列并且结果不出现重复数据:
select distinct 字段名 from 表名
查询结果参与运算
- 某列数据和固定值运算:
select 列名1 + 固定值 from 表名; - 某列数据和其他列数据参与运算:
select 列明1 + 列名2 from 表名;
注意:参与运算的必须是数值类型
条件查询:
-
为什么要条件查询:
如果没有条件查询,则每次查询所有的行。实际应用中,一般要指定查询条件,对记录进行过滤。
-
条件查询语法:
SELECT 字段名 FROM 表名 WHERE 条件;
流程:取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回
- 运算符
比较运算符 | 说明 |
---|---|
>、< 、<=、>=、=、<> | <>在sql中表示不等于,在mysql中也可以使用!=,没有== |
BETWEEN…AND | 在一个范围内,如:between 100 and 200,相当于条件在100到200之间,包头又包尾 |
IN(集合) | 集合表示多个值,使用逗号分隔 |
Like | 模糊查询 |
IS NULL | 查询某一列为NULL值,注:不能写=NULL,NULL在数据库中表示数据无穷大或无穷小 |
- 逻辑运算符
逻辑运算符 | 说明 |
---|---|
and 或 && | 与,Sql 中建议使用前者,后者并不通用 |
or | 或 |
not 或 ! | 非 |
- in 关键字
select 字段名 from 表名 where 字段 in(数据1,数据2,数据3…)
in里面的每个数据都会作为一次条件,只要满足条件的就会显示。
- 范围查询
between 值1 and 值2
表示从值1到值2范围,包头又包尾。比如:age BETWEEN 80 AND 100 相当于: age >= 80 and age <= 100
-
like关键字 表示模糊查询
select * from 表名 where 字段名 like ‘通配符字符串’; -
MySQL通配符
通配符 | 说明 |
---|---|
% | 匹配人任意多个字符串 |
_ | 匹配一个字符 |