什么是数据库
数据库是按照数据的结构来组织 存储 管理数据的仓库 简而言之 存放数据的仓库
英文名 DB(database)
数据库=多张表+各表之间的关系
常见数据库
Oracle:最挣钱的数据库 ,出自甲骨文公司,市场占有率非常高,功能非常强大,被一些大型企业,电信,银行,证券公司、金融公司所使用,市场占有率第一。
MySQL :是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。
SQLServer :是微软开发的数据库,针对服务器,仅支持Windows操作系统,号称是windows上最好用的数据库
MongoDB:最好用的文档型数据库
Redis 最好的内存级数据库,查询效率极高,
数据库和SQL是什么关系
结构化查询语言 简称 SQL 是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
数据库里面放着数据 而sql是用来操作数据库里数据的语言
例如 一碗米饭一双筷子 碗就是mysql 米是数据 sql是筷子 用sql来操作数据
SQL语句分类
DDL 数据库定义语言
DML 数据库操作语言
DQL 数据库查询语言
DCL 数据控制语言
表中字段基本数据类型
mysql支持多种类型 分为三类 数值、日期、字符串(字符)类型
1.一个汉字占多少长度与编码有关
utf-8:一个汉字=3个字节
GBK:一个汉字=2个字符
2.varchar(n)表示n个字符 无论英文汉字 mysql都可以存入n个字符 但实际直接长度有所区别
//创建表create tablestudent(idint,namevarchar(20),sexvarchar(20),ageint,saleryfloat(6,2),birthday date)
//删除表drop table student;
//查看所有表show tables
//查看表的创建细节show create table student;
//展示表结构desc student
// 在原有的学生基础上添加address列alter table student add addressvarchar(20)
//在原有的学生基础上删除address列alter table student drop address
定义表的约束
create tablestudent(
id int primary key auto_increment,
name varchar(20) unique not null,
sexvarchar(20),
age int,
salery float(6,2),
birthday date);
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引。 您可以使用多列来定义主键,列间以逗号分隔。
UNIQUE KEY的用途:主要是用来防止数据插入的时候重复的
ENGINE:设置存储引擎
CHARSET: 设置编码
创库 DDL数据库定义语言
create database mydb1 创建数据库
drop database mydb1 删除数据库
user 库名 使用数据库
show create database mydb1 查看数据库创建细节
create database mydb2 character set gbk 创建一个使用gbk字符集的数据库
创表
创建表
createtablestudent(idint,namevarchar(20),sexvarchar(20),ageint,saleryfloat(6,2),birthday date)
删除表drop table student;
查看所有表show tables
查看表的创建细节show create table student;
展示表结构desc student
在原有的学生基础上添加address列alter table student add addressvarchar(20)
在原有的学生基础上删除address列alter table student drop address
定义表的约束
create tablestudent(
id int primary key auto_increment,
name varchar(20) unique not null,
sexvarchar(20),
age int,
salery float(6,2),
birthday date);
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引。 您可以使用多列来定义主键,列间以逗号分隔。
UNIQUE KEY的用途:主要是用来防止数据插入的时候重复的
ENGINE:设置存储引擎
CHARSET: 设置编码
DML数据库操作语言
#插入数据
insert into 表名 values(值,值)
insert into 表名 (字段名,字段名) values(值,值)
#插入中午会报错
setcharacter_set_client=gbk;
setcharacter_set_results=gbk;
#对齐
charset gbk;
#删除数据
delete from 表名 【where 字段=值】
truncate table 表名
#修改数据
update 表名 set 字段=值 【where 字段=值】
DQL 数据库查询语言
#条件查询
select * from 表名 【where 字段><=值】
#别名 并列
select 字段【as】别名,字段【as】别名,from 表名 【where 字段><=值】
#查询区间 范围
select * from 表名 where math between 80 and 90;
#查固定的值
select * from 表名 where 字段 【not】in(值1,值2)
#模糊查询 _一个字符 %任意字符(包括0)
select * from 表名 where 字段 like ‘’;
#排序查询
select * from 表名 order by 字段 【desc(降序)asc(默认升序)】【limit m,n】
#分页查询 m- 从m+1开始查询 n- 查询多少条件
select * from 表名 limit m,n
#分组查询
select * from 表名 group by 字段 【having 字段 ><=值】
#聚合函数
count sum avg max min