mysql数据库总结

MySql的登录登出操作

//登录
//输入密码登录
//登出
exit;

一、关于库的操作

1.数据库的创建与删除

//创建
create database <数据库名>;
//删除
drop database <数据库名>;

2.数据库的查看与使用

//查看
show databases;
//使用
use <数据库名>;

二、关于表的操作

1.表的创建

1.1类型

1.1.1常用数值类型

在这里插入图片描述

1.1.2常用字符类型

在这里插入图片描述

1.1.3日期时间类型

在这里插入图片描述

1.2约束

  • 主键primary key:物理上存储的顺序
  • 自增auto_increment:表示自动增长(一般主键使用)
  • 非空not null:此字段不允许填写空值
  • 惟一unique:此字段的值不允许重复
  • 默认default:当不填写此值时会使用默认值,如果填写时以填写为准
  • 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常

1.3表的相关操作

(1)查看库中的所有表

show tables;

(2)查看表的结构

desc 表名;
  • 查看表的相关语句
show create table 表名;

(3)创建表

create table 表名(属性1 类型 约束条件,
                  属性2 类型 约束条件,
                  属性3 类型 约束条件);

(4)修改表

  • 添加字段
alter table 表名 add 列名 类型;
alter table students add birthday datetime;
  • 修改字段–重命名
alter table 表名 change 原名 新名 类型及约束;
alter table students change birthday birth datetime not null;
  • 修改字段–不重命名
alter table 表名 modify 列名 类型及约束;
alter table students modify birth date not null;
  • 删除字段
alter table 表名 drop 列名;
alter table students drop birthday;

(5)查询表

  • 查询所有列
select * from 表名;
  • 查询指定列,可以使用as为列或表指定别名(支持中文)
select1,2 from 表名;

(6)向表中插入数据

  • 全列插入:值的顺序与表中字段的顺序对应
insert into 表名 values(字段1对应value,字段2对应value,...)
例:
insert into students values(0,’郭靖‘,1,'蒙古','2016-1-2');
  • 部分列插入:值的顺序与给出的列顺序对应
insert into 表名(1,...) values(1,...)
例:
insert into students(name,hometown,birthday) values('黄蓉','桃花岛','2016-3-2');
  • 全列多行插入:值的顺序与给出的列顺序对应
insert into 表名(1,...) values(1,...),(1,...)...;
例:
insert into students(name) values('杨康'),('杨过'),('小龙女');

(7)修改数据

update 表名 set1=1,2=2... where 条件
例:
update students set gender=0,hometown='北京' where id=5;

(8)删除数据

delete from 表名 where 条件
例:
delete from students where id=5;

(9)删除表

drop table <表名>;

2.表的查询

基本查询:

(1)查看表中的所有元组对应的所有字段:

select * from 表名;

(2)查看表中的查看表中的所有元组对应的指定字段

select 属性名1,属性名2, ...... from 表名;

(3)查询指定的元组:
根据题目中的要求或者项目开发的需求写合适筛选条件

select * from 表名 where 筛选条件;
			select 属性名1,属性名2, ...... from 表名 where 筛选条件;

(4)like
% : 代表任意数量个任意字符
_ : 代表一个任意字符

//最后一个字是名
select * from student where name like '%明';
//这个 人名字一共三个字,且中间的字为安
	select * from student where name like '_安_';

(5)limit off,len;
off 数据的起始位置
len ; 数据的长度
如果off = 0 则可以省略
order by子句(排序):按照“属性名”指定的字段进行排序。排序方式由“asc”和“desc”两个参数指出,默认是按照“asc”来排序,即升序。

select * from student where name like '小%' limit 3;
	order by 属性名 :表示查询出的数据按照这个属性进行排序

(6)在,不在
in
not in

select * from student where age in(15,12,13);

(7) 空,不空
is null;
is not null ;

select * from student where name is  null;
	将student表中name为空的人查询出来

(8)between…and…

// 查询年纪为15 到 20 之间的 (使用between and 方法)
	select * from student where age between 15 and 20;
	//其他表示方法
	select * from student where age <= 20 and age >= 15;

(9) where子句(条件查询):按照“条件表达式”指定的条件进行查询。
(10) group by子句(分组):按照“属性名”指定的字段进行分组。group by子句通常和count()、sum()等聚合函数一起使用。
(11)having子句(筛选):有group by才能having子句,只有满足“条件表达式”中指定的条件的才能够输出。

select 类别, sum(数量) as 数量之和 from A
group by 类别
having sum(数量) > 18
//having 与where联合使用
select 类别, SUM(数量)from A
where 数量 >8
group by 类别
having SUM(数量) >10

having一般跟在group by之后,执行记录组选择的一部分来工作的。where则是执行所有数据来工作的。
再者having可以用聚合函数,如having sum(属性)>1000
(12) limit(限制结果集)。
(13)mysql中五种常用的聚合函数:

  • max(列名):求最大值。
  • min(列名):求最小值。
  • sum(列名):求和。
  • avg(列名):求平均值。
  • count(列名):统计记录的条数。
子查询
  • where
//查询id最大的一件商品(使用where子查询实现)
SELECT goods_id,goods_name,shop_price FROM goods
 WHERE goods_id = (SELECT MAX(goods_id) FROM goods);
  • from
//查询每个类别下id最大的商品(使用from型子查询)
 SELECT goods_id,goods_name,cat_id,shop_price FROM
(SELECT goods_id,goods_name,cat_id,shop_price FROM goods ORDER BY cat_id ASC,goods_id DESC) AS tmp
GROUP BY cat_id;
  • exists
//从类别表中取出其类别下有商品的类别(如果该类别下没有商品,则不取出)
//[使用exists子查询]
SELECT c.cat_id,c.cat_name FROM category c WHERE EXISTS 
(SELECT 1 FROM goods g WHERE g.cat_id = c.cat_id);
内连接
(1)select1.属性名,....3.* from1,2,3.......... 
	where1.EX =2.EX and2.EX  =3.EX  and3.EX =4.EX ......;
	select a.属性名,.... c.* from1 a,2 b,3 c.......... 
	where a.EX = b.EX and b.EX  = c.EX  and c.EX =d.EX ......;
(2) (inner) join 括号表示可以省略
 select1.属性名,....3.*  from1 (inner)
 join2 on1.EX =2.EX  (inner)join3 on2.EX  =3.EX .......;	
select1.属性名,....3.*  from1 a (inner) join2 b on a.EX = b.EX  (inner) join3  c on  b.EX  = c.EX .......;
外链接
(1)select1.属性名,....3.* from1,2,3.......... 
	where1.EX =2.EX and2.EX  =3.EX  and3.EX =4.EX ......;
	select a.属性名,.... c.* from1 a,2 b,3 c.......... 
	where a.EX = b.EX and b.EX  = c.EX  and c.EX =d.EX ......;
(2) (inner) join 括号表示可以省略
	 select1.属性名,....3.*  from1 (inner)join2 on1.EX =2.EX  (inner)join3 on2.EX  =3.EX .......;	
	select1.属性名,....3.*  from1 a (inner) join2 b on a.EX = b.EX  (inner) join3  c on  
	b.EX  = c.EX .......;
几种连接合在一起使用
select1.属性名,....3.*  from1 right join2 on1.EX =2.EX  left  join3 on2.EX  =3.EX (inner)join4 on3.EX  =4.EX .......;	
select1.属性名,....3.*  from1 a right2 b on a.EX = b.EX  left  join3  c on  
b.EX  = c.EX join4 d on c.EX = d.EX .......;

3.数据库编码问题

mysql编码问题
show variables like ‘character_set_database’; //查询mysql数据库默认编码
±-----------------------±-------+
| Variable_name | Value |
±-----------------------±-------+
| character_set_database | latin1 |
±-----------------------±-------+

(1)给varchar/char 前面+n
只改变一个属性的编码形式。

create table test_char (
	name nvarchar(10)  
);

(2)在属性后面加 character set utf-8
只改变一个属性的编码形式。

create table test_char (
	name varchar(10)  CHARACTER SET utf8
);
create table test_char1 (
	sex enum('男','女') CHARACTER SET utf8
);

create table sex_tb1(
	Ssex enum('m','w')  
);

alter table sex_tb1 modify Ssex enum('男','女') character set utf8;

(3)改变整张表的编码形式

create table test_char3 (
	name varchar(10)  
)CHARSET=utf8;

改变整个数据库编码形式
改变mysql的配置文件 my.ini
这个配置文件是只在mysql 服务启动的时候会读取的,如果改变了mysql的配置文件一定要重启
服务之后改变好的配置才会起到作用。

4.DDL

DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等,DDL对这些对象和属性的管理和定义具体表现在Create、Drop和Alter上。特别注意:DDL操作的“对象”的概念,”对象“包括对象及对象的属性,而且对象最小也比记录大个层次。以表举例:Create创建数据表,Alter可以更改该表的字段,Drop可以删除这个表,从这里我们可以看到,DDL所站的高度,他不会对具体的数据进行操作。

  • DDL的主要语句(操作)
    Create语句:可以创建数据库和数据库的一些对象。
    Drop语句:可以删除数据表、索引、触发程序、条件约束以及数据表的权限等。
    Alter语句:修改数据表定义及属性。
  • DDL的操作对象(表)
    (1)表的概念
    表的创建就是用来存放数据用的,由于我们存放的数据的不通,所以我们需要定义些数据类型,以方便管理。
    (2)表的属性
  • 主键属性:主键就是主键约束,只不过起的名字不同了,主键的起名偏向于虚的(就是描述描述这件事),主键约束起名偏向于实得(就是描述操作的实施),描述的都是同一件事,主键约束就是表中的一个属性;在一个表中最多可以有一个主键;一个主键可以定义在一个或多个字段;主键使一个或多个字段的值必须唯一且不为空,这样做可以通过该字段或该组字段中的值唯一的代表一条记录。
  • 唯一属性:一个表中只能有一个主键属性,为了方表用户,提出唯一约束;唯一约束可以定义在一个或多个字段上;唯一约束使该字段或该组字段中的值唯一,可以为空,但是,不能重复。
  • 外键属性:又叫外键,又叫外键约束,跟主键和主键约束的关系是一样的;外键约束针对的两个表,如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表,但要注意,必须要计算机要知道你是这种关系。
  • 核查、Null和缺省属性:核查属性又叫核查约束,Null属性又叫Null约束,缺省属性又叫缺省约束;这些名称是描述一件事,描述一种情况,这件事或这张情况我们当然可以人为的那样特意做(输入数据是注意就行),但是,他们的本意是实现自动化,也就是让计算机做这件事。

5.DML

  • DML的概述

DML(Data Manipulation Language 数据操控语言)用于操作数据库对象中包含的数据,也就是说操作的单位是记录。

  • DML的主要语句(操作)
    Insert语句:向数据表张插入一条记录。
    Delete语句:删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是,它的操作对象仍是记录。
    Update语句:用于修改已存在表中的记录的内容。
    DML的操作对象——记录
  • 注意
    当我们对记录进行Insert、Delete和Update操作的时候,一定要注意,一定要清楚DDL对其的一些操作。

6.DCL

  • DCL的概述
    DCL(Data Control Language 数据控制语句)的操作是数据库对象的权限,这些操作的确定使数据更加的安全。
  • DCL的主要语句(操作)
    Grant语句:允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限。
    Revoke语句:可以废除某用户或某组或所有用户访问权限
    DCL的操作对象(用户) 此时的用户指的是数据库用户。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值