您的位置:首页 > 数据库 > MySQL

Mysql 基础知识点单表结构 第四更

2016-11-27 20:38 393 查看
1.数据库概念

文件系统,需要标准的sql来操作

2.常见数据库

MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费.

Oracle :收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MYSQL.

DB2:IBM公司的数据库产品,收费的.银行系统中.

SQLServer:MS公司.收费的中型的数据库.

SyBase :已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.

SQLite : 嵌入式的小型数据库,应用在手机端.

和java相关的数据库

mysql(Hibernate)

oracle

3.mysql的安装和卸载

卸载:

1.去控制面板或者360去卸载

2.删除数据库安装路径和数据存放路径

3.清空回收站

4.关系型数据库

实体(表)和实体之间存在关系。

5.数据库服务器内部结构

6.sql概念

结构化查询语言,非过程化语言

一条语句对应一个结果

int i =10; int j = 7; int sum = i+j;


7.sql分类

DDL:数据定义语言.
create,alter,drop...
DML:数据操纵语言
insert,delete,update
DCL:数据控制语言
grant
DQL:数据查询语言(***重点)
select


数据库:

正式库

测试库

8.命令行连接数据库

mysql -u root -p

9.学习列表

操作数据库(CRUD)

操作表(CRUD)

操作表里面的数据(CRUD)**重点

二,对数据库的CRUD

1.创建数据库

create datbase 数据库名[character set 字符集]

eg:创建名字为day06_1的数据库(默认编码)

create database day06_1;


eg:创建名字为day06_2的数据库,指定编码为gbk

create database day06_2 character set gbk;


2.查看数据库

show databases;查看所有的数据库

show create databse 数据库名;查看数据库的定义结构

3.删除数据库(用的很少)

drop database 数据库名;

eg:删除day06_2的数据库

drop database day06_2;


4.修改数据库(不是修改数据库名,是修改编码集)

alter database 数据库名 character set 字符集;

eg:把day06_1的数据库改成gbk编码的

alter database day06_1 character set gbk;


注意:

是utf8,不是utf-8

5.其它操作

use 数据库名;选定数据库

select database();查看正在使用的数据库

三,对表的CRUD

1.创建表

create table 表名(
字段 类型 约束,
字段 类型 约束,
字段 类型 约束

);

java: int a;


eg:创建一张学生表,id(主键约束,自动增长),学生姓名,学生性别

create table student(
id int primary key auto_increment,
name varchar(20),
sex int
);


1)类型

Java                MYSQL
int                 int
float               float
double              double
String              char/varchar
Date                date,time,datetime,timestamp
文件类型                BLOB、TEXT   TEXT指的是文本文件  BLOB二进制文件


不同:

1.char/varchar来定义字符串,并且需要指定长度
char(5),最大能存放5个字符,固定长度。 aa。--->身份证18
varchar(5),最大能存放5个字符,可变长度。aa。

2.date;只有日期
time;只有时间
datetime;既有时间又有日期
timestamp;时间戳,null--->下订单

3.注意:在公司里,一般不会把大文件存入blob和text里面,把文件放在硬盘上,存放路径


2)约束(规定,规矩)

not null;非空

unique;唯一约束

primary key;主键(非空+唯一)

注意:

把id设置为整型,设置为主键约束,设置为自动增长

或者把id设置为字符串类型,设置为主键,UUID

2.查看表

show tables;查看所有的表

desc 表名;查看表的定义结构

3.修改表

增加一个字段;alter table 表 add 字段 类型 约束;

修改列的类型约束; alter table 表 modify 字段 类型 约束 ;

修改列的名称;alter table 表 change 旧列 新列 类型 约束;

删除一列; alter table 表名 drop 列名;

修改表名; rename table 旧表名 to 新表名;

eg:向学生表添加一个班级字段

alter table student add class varchar(20);


eg:修改sex字段的类型为字符串

alter table student modify sex varchar(10);


eg:修改class字段成为grade字段

alter table student change class grade varchar(20);


eg:删除grade字段

alter table student drop grade;


eg:把student改成teacher(用的比较少)

rename table student to teacher;


4.删除表

drop table 表名;

eg:删除teacher表

drop table teacher;


三,对表的数据CRUD(**重点)

1.插入数据

insert into 表名 values(值,值,值….)

insert into 表名(字段,字段…)values(值,值..)

注意:

值要和字段类型匹配

值的个数要和字段个数一致

如果值是字符串类型,需要用”括起来

2.更新记录

update 表名 set 字段 = 值 [where 条件]

eg:把分类表的cname更新成’服装’

update category set cname = '服装';


注意:

如果没有加条件,会把操作的字段全部修改

3.删除记录(表还在,删除数据)

1)delete from 表 [where条件]

2)truncate table 表

区别:

delete是一条一条的删除,truncate把整张表删除再创建一张新表

delete是受事物控制的,truncate不受事物控制

4.查询记录(*重点)

select [*][字段,字段][distinct 字段] from 表名 [where 条件]


1)查询所有的字段

select *from 表名

eg:查找商品表所有的字段

select *from product

2)查询某张表特定字段的记录

select 字段,字段…from 表

eg:查找商品表商品名和商品价格

select pname,price from product;


3)去重查询

disticnt 字段

eg:去掉价格重复的商品

select distinct price from product;


注意:

重复一定要全部一样才能筛选

4)别名查询

字段别名; 字段 as 别名;

表别名; 表 as 别名;

5)运算查询(+,-,*,/等)

eg:把价格+10查出商品

select pname,price+10 from product;


注意:

字段之间可以进行运算

字符串类型做运算查询没有意义

6)where条件查询



eg:查找商品id为1的商品信息

select *from product where pid = 1;


eg:查询价格大于3000的商品信息

select *from product where price>3000;


注意:

不等于是<>;

eg:查找价格在3000到8000之间的商品(3000<=price<=8000)

select *from product where price between 3000 and 8000;


eg:查找id在1,5,8,10这个集合的id

select *from product where pid in(1,5,8,10);


eg:查询pname以Ip开头的商品

select *from product where pname like 'Ip%';


注意:

like一般和占位符一起使用

%;指的是多位(0~n)

_;一位

eg:查询价格>3000并且数量>10的商品

select *from product where price>3000 and num>10;


7)排序查询

order by 字段

desc;降序

asc;升序(默认)

eg:根据商品价格查询商品信息

select *from product order by price;


应用场景:

京东里面价格筛选

qq,微信附近的人

8)聚合函数

count(*|字段);统计个数,过滤null

sum();总和

avg();平均值

max();最大值

min();最小值

eg:统计商品表里面商品的个数

select count(pid) from product;


eg:统计商品价格总和

select sum(price) from product;


eg:查询商品表的平均价格

select avg(price) from product;


eg:查找商品表里面价格最高的

select max(price) from product;


9)分组查询

group by 字段

eg:统计商品表中不同类别的个数

select cno,count(*) from product group by cno;


注意:

一般,通过分组,只有包含分组的字段和聚合函数才有意义

10)分组后筛选

<
96c1
li>having

eg:根据类别分组,查询商品的平均价格并且平均价格大于3000

select cno,avg(price) form product group by cno


注意

having是分组后的筛选,不能离开group by单独存在

有having一定有group by,有group by不一定有having

11)查询语句出现的顺序

select—from—where—group by—-having—order by

注意:

where不能用聚合函数作为条件,聚合函数不能跟在where后面

四,多表间关系

1.外键约束

alter table 表 add foreign key(字段) references 表(字段);

2.多表的关系(*重点)

1)一对多

-在多的一方创建一个字段作为外键指向一的一方的主键

2)多对多

创建一张新的表,至少包含两个字段分别指向各自的主键

3)一对一(了解)

先当做一对多,在外键字段添加唯一约束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库