| |
|
开发:
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) ); |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |