IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 九万五千一关于mysql的续集3 -> 正文阅读

[大数据]九万五千一关于mysql的续集3

limit(分页查询)

是MySQL中的特有,其他数据库中没有,不通用

作用:取结果集中的部分机制

案例:取工资前五名的员工:

select ename,sal from emp by sal desc limit 0,5

select ename,sal from emp by sal desc limit 5//如果不说,默认前面是0

limit是sql语句中最后一个执行环节

select 5

。。。

from 1

。。。

where 2

。。。

group by 3

。。。

having 4

。。。

order by 6

。。。

limit 7

。。。

通用分页mysql

每页显示pagesize条记录:

第pageno页:(pageno-1)*pagesize,pagesize

pagesize:每页显示多少条记录

pageno显示第几页

创建表:

建表语句:create table 表名(

字段名1 数据类型

字段名2 数据类型

字段名3 数据类型

};

关于mysql当中字段的数据类型

int

bigint

char定长字符串

varchar 可变长字符串

BLOB(二级制大对象,存储图片 视频等信息)

CLOB字符大对象(储存较大文本)

Float

Date 日期型 年月日

DateTime 年月日 时分秒

当一个字段中的数据长度不发生改变时:是用定长的char

当一个字段的数据长度不确定,采用varchar,如简介,姓名

表明在数据库中一般建议以:t_或者tbl _开始

创建学生表:

学生信息包括:

学号:bigint

姓名:varchar

性别:char

班级编号:int

生日:char

creater table t_student(

no bigint,

name varchar(255),

sex char(1),

classno varchar(255),

brith char(10)

);

上述为建表语句

向表中插入数据

insert语句插入数据

语法格式: intsert into 表名(字段名1,字段名2,字段名3)values(值1,值2,值3)

表的复制

语法:

create table 表名 as select语句

将查询结果当做表创建出来

将查询结果插入到一张表中

insert into dept1select * from dept;

select *from dept;

修改数据:update

语法格式:

update 表名 set 字段名1=值1,字段名2=值2.。。。where 条件

update dept set loc=‘上海’,dname=‘renshibu’ where deptno=10;

删除数据

语法格式:

delete from 表名 where 条件

删除10部门数据

delete from deptl where deptno=10;

怎么删除大表

truncate table empl;//表被截断,不可回滚,永久丢失

约束:

非空约束(not null):约束的字段不能为null;

唯一约束(unique):约束的字段不能重复

主键约束(primary key)约束的字段不能重复也不能为null

检查约束(check)目前mysql不支持

唯一约束:

drop table if exists t_user; \ \如果以前有表,先删除原来的表。

create table t_user(

id int

username varchar(255) unique\ \对username进行唯一性约束

);

insert into t_user values(1,'zhangsan');

insert into t_user values(2,'zhangsan');//这种情况下就会报错,因为username有两个zhangsan

案例,给两个或者多个列添加unique

drop table if exists t_user; \ \如果以前有表,先删除原来的表。

create table t_user(

id int

username varchar(255),

usercode varchar(255),

unique(username,usercode)

);//两个字段连起来不能重合

两者之间的区别

drop table if exists t_user; \ \如果以前有表,先删除原来的表。

create table t_user(

id int

username varchar(255) unique,

usercode varchar(255)unique

);//每个都不能重合

#####

主键约束:

drop table if exists t_user;

create table t_user(

id int primary key,//这个是主键约束,带有主键约束的字段叫主键字段

username varchar(255) ,

email varchar(255)

);

insert into t_user (id,username,email)values(1,‘zs’,‘zs123@123.com’)//输入的是主键值

insert into t_user (id,username,email)values(1,‘ls’,‘ls123@123.com’)

insert into t_user (id,username,email)values(1,‘ww’,‘ww 123@123.com’)

根据以上测试得出:id是主键,因为添加了主键约束,主键中数据不能为null,也不能重复

主键的作用:

表的设计三范式,第一范式要求任何一张表都应该有主键

主键的作用:主键值是这行记录在这张表当中的唯一标识(身份证号)

主键的分类

根据主键的字段数量来划分

单一主键(最常用的)

复合主键(多个字段联合起来添加一个主键约束)

自然主键

mysql提供主键值自增

drop table if exists t_user;

create table t_user(

id int primary key auto_increment,//id字段自动维护一个自增的数字,从一开始,以1递增

username varchar(255)

);

外键约束

建立表格时 使用两张表,比如,一张班级表t_class,一张学生表t_student

t_student中的classno字段引用t_class表中的cno字段,学生表叫子表,t_class叫父表

顺序要求

删除数据,先删子表,再删父表

添加数据,添加父表,再加子表

创建表,先建父表,再子表

删除表,先子后父

drop table if exists t_student;

drop table if exists t_class;

create table t_class(

cno int ,

cname varchar(255),

primary key(cno)

);

create table t_student(

sno int,

sname varhcar(255),

classno int,

foreign fey(classno) references t_class(cno)//这就是外键约束

);

外键可以为null

事务(transaction)

什么是事物:是一个完整的业务逻辑单元,不可再分

比如:银行账户转账,从a账户向b账户转账10000,需要执行两条update语句

update t_cat set balance=balance-10000 where actno='act-001';

update t_cat set balance=balance+10000 where actno='act-002';

以上的两条dml语句必须同时成功或者同时失败,那么就需要使用数据库的事务机制。

和事务有关的语句只有:dml语句

通常,一个事务需要多条dml语句共同联合而成

开启事务机制

执行insert语句-->insert(执行成功之后,把这个执行记录到数据库的操作历史当中,并不会向文件中保存一条数据,不会真正修改硬盘上的数据)

执行update语句-->update(这个执行也是记录一下历史操作不会真正修改硬盘上的数据)

执行delete语句-->这个执行也是记录一下历史操作不会真正修改硬盘上的数据

提交事务或者回滚事务

事务两个语句:commit(提交),rollback(回滚)

事务的特性:

A原子性:事务是最小的工作单元

C一致性:事务必须保证多条dml同时成功或者失败

I:隔离性:事务a与事务b之间具有隔离

D持久性:持久性说的是最终数据必须持久化到硬盘文件中,事务才算是成功的结束

关于事务之间的隔离性

第一级别:读未提交(read uncommitted)

对方事务还没有提交,我们当前事务可以读取对方未提交的数据

读未提交存在脏读现象dirty read 表示读到了脏的数据

第二级别:读已提交(read committed)

对方事务提交之后数据我方可以读到

取消了脏读现象,但是问题在于,不可以重复读

第三级别:可重复读 (repeatable read)

这种隔离级别解决了:不可重复读问题

问题在于:读取到的数据是幻象

第四级别:序列化读

解决了所有问题

效率低 需要事务排队

mysql数据库默认的隔离级别:可重复读

演示事务

mysql事务默认情况下自动提交(只要执行任意一条dml语句则提交一次)

怎么关闭自动提交

start transaction;

演示:

drop table if exists t_user

create table t_user(

id int primary key auto_increment,

username varchar(255)

);

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 13:47:24  更:2022-02-07 13:47:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:49:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码