MySQL 个人学习笔记
最早之前学习了Mysql,不知道是多长时间了 O(∩_∩)O,今天突然发现之前学习过程中的这个笔记,于是,就分享给大家,希望,能帮助到有需要的朋友,有不足的地方欢迎大家多多交流
b( ̄▽ ̄)d
1. 数据库(datebase): 保存有组织的数据的容器(通常是一个文件或一组文件)。
2. 表(table):是一种结构化的文件,可用来存储某种特定类型的数据
3. 列(column):表中的一个字段。所有表都是由一个或多个列组成的
4. 数据类型(datetype): 所允许的数据的类型。每个表列都有相应的数据类型,它限制(或允许)该列中存储的数据。
5. 行(row): 表中的一个记录。
表中的数据是按行存储的,所保存的每个记录存储在自己的行内。如果将表想象为网格,网格中垂直的列为表列,水平行为表行。
说明:是记录还是行?
你可能听到用户在提到行时称其为数据库记录(record)。这两个术语多半是可以交替使用的,但从技术上说,行才是正确的术语。
6.主键(primary key): 一列(或一组列),其值能够唯一标识表中每一行。(方便数据操作和管理)
表中的任何列都可以作为主键,只要它满足以下条件:
1)任意两行都不具有相同的主键值;
2)每一行都必须具有一个主键值(主键列不允许NULL值);
3)主键列中的值不允许修改或更新;
4)主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)
7. SQL是一种专门用来与数据库沟通的语言。与其他语言(如英语或Java、C、PHP这样的编程语言)不一样,SQL中只有很少的词,这是有意而为的。设计SQL的目的是很好地完成一项 任务——提供一种从数据库中读写数据的简单有效的方法。
8. 字段(column)的数据类型
小数类型
字符串
日期时间型
字段的修饰词
auto_increament在插入行的时候会自动增加一行供其使用
9. SQL中的运算符
between 1 and 5 在1到5之间
in(1,2)属于括号里面任一的一个东西
10. SQL语句的分类
库表结构指的就是对数据库和表的操作
一 、DDL(数据定义语言)
add中如果只增加一行则不需要括号(注意括号里面的逗号)
alter table users add passward1 varchar(10) not null
(after username);括号代表可省略表示添加在哪一行之后
二 、DML(数据操作语言)
上面的也可以是只有列二和列四与之对应
也可以insert into 表名 values(所有的值一一对应)
update中的set一定不要忘记
delete from 表名; 清空所有,但是如果使用insert into时会接着上一次的id往下排
truncate 表名; 清空所有,但是如果使用insert into时会重新按id往下排(0开始)
三、DCL(数据控制语言)
flush privileges 刷新权限表
修改密码:
- use mysql;
- select user,host,authentication_string from user;
- update user set authentication_string = password()
where user=‘root’;
- flush privileges;
- C:\Users\Mr TC>mysqladmin -uroot -p原密码 password 新密码
忘记密码:
- net stop mysql
- mysqld --skip-grant-tables
- 再打开一个cmd窗口输入mysql -uroot -p然后提示输入
密码直接按回车即可进入MySQL中
- 修改密码,刷新一下权限表flush privileges;
权限有create alter insert update等等
查看权限
show grants for 用户名@IP地址
删除用户
drop user 用户名@IP地址
四 DQL(数据查询语言)
1. 检索数据
1) 如何检索出不同的值?
办法就是使用DISTINCT关键字,顾名思义,它指示数
据库只返回不同的值。
SELECT DISTINCT vend_id FROM Products;
警告:不能部分使用DISTINCT DISTINCT DISTINCT关键字作用于所有的列,不仅仅是跟在其后的那一列。例如,你指定SELECT DISTINCT vend_id, prod_price,除非指定的两列完 全相同,否则所有的行都会被检索出来。
2) 如果你只想返回第一行或者一定数量的行,该怎么办呢?这是可行的,然而遗憾的是,各种数据库中的这一SQL实现并不相同
MySQL中SELECT prod_name FROM Products LIMIT 5;
返回前五行的数据
SELECT prod_name FROM Products LIMIT 5 OFFSET 5;
LIMIT 4 OFFSET 3指示返回从第3行起的4行数据。第一个数字是检索的行数第二个数字是指从哪儿开始,不包括第五行 该限制语句可简化为limit 3,4
返回某个记录后面的几行数据
2. 排序检索数据
1) 在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句。如果它不是最后的子句,将会出现错
误消息 (默认升序排列)
2) 按多个列排序
例如 如果要显示雇员名单,可能希望按姓和名排序(首
先按姓排序,然后在每个姓中再按名排序)
如果姓列中的所有制都是唯一的,则不会再按名排列
如果多个雇员有相同的姓,这样做很有用
3) 按列的位置排序
order by 2,3; 2,3表示列的相对位置
4) 按指定排序方向排序
order by 列名 desc,列名;
警告:如果想在多个列上进行降序排序,必须对每一列指定DESC关键字
3. 连接数据
1) concat(列名,列名)函数
as 为输出表示的字段起一个别名
concat_ws('分隔符’,列名,列名)
4. 模糊查询 (like 像)
1) select column from table where colum like‘ng’;
表示查找出column = ‘ng’的记录
- select column from table where colum like‘%ng%’;
左右模糊查找%相当与通配符 *,不管左右是什么
5. 聚合函数
分组查询
6. 连接查询
stu_id等于student中的id 关联型数据库
左连接查询以左边的表(列)为基准 一一对以应
右连接查询以右边的表(列)为基准 一一对以应
- 联合查询 (关键字union all前后列数一致)
- 子查询
select name from student where id in (select stu_id from mark); 前面的依托与后面的
五、 使用函数处理数据
1)常见的文本处理函数
soundex(‘字符串’)=soundex(‘B’) 筛选出和B发音相近的字符串
- 常用数值处理函数
六 、SQL字句的顺序
七、int(n) char(n) varchar(n) n的不同
- int(n) n不表示字符长度,只在有zerofill时起作用,表示如果输入的数字长度小于n时前面用0填充
- char(n) n表示字符的最大长度,utf8(万国码)中一个汉字字符表示3个字节,gbk(中文码)中一个汉字字符表示2个字节,查看字符长度用char_length(column)函数,字节长度用length(column)
八 、DTL事务控制语言
Example:比如转账如果在转账的过程中突然断电了或者怎么了导致不能交易成功但是对方的钱已经被扣这个时候就需要事务,出错之后只需输入rollback(回滚)就可以返回被扣的钱,相当于撤回事务的执行
1) 在没有开启事务时执行SQL语句对数据的改变默认会提交,
使数据写入硬盘中,而不仅仅是显示在内存上
2) 事务开启执行之后如果没有commit(提交)时,当你在打开一个数据库时会发现之前改变的数据没有写入磁盘中
提示:可以回退哪些语句?
事务处理用来管理INSERT、UPDATE和DELETE语句。不能回退SELECT语句(回退SELECT语句也没有必要),也不能回退CREATE或DROP操作。事务处理中可以使用这些语句,但进行回退时,这些操作也不撤销。
九 、数据库编程
存储过程函数(相当于函数的封装)
delimiter(定界符) /// #修改结束符 避免冲突
create procedure(程序) he(a int)
begin(相当于左大括号)
SQL语句;
end///
delimiter ;
call he(3); #调用函数
十 、使用视图(view)
1)创建
create view view_name as select column1,column2 from table ;
2)使用
select colunm1 from view_name;
3)删除
drop view view_name;
4)视图中只有select 语句,不像存储过程中可以有任何操作,试图创建的是虚拟的表,创建视图的好处是他只能访问你给定的这些数据,增加了安全性,(比如其他公司要访问你公司的一些数据时就可以使用试图)
十一 、使用触发器(trigger)
1. 创建
delimiter ///
begin
SQL 语句;
end///
delimiter ;
2. 删除
drop trigger trigger_name;
3. 在对某个表进行操作之后会触发这个触发器执行其中
的SQL语句以达到一定的目的
Example
统计一个表中的文章篇数,当执行insert时SQl语句执行加一操作,当执行delete时SQL语句执行减一操作,最终可得该表中的文章篇数
十二 、数据的导入导出
1. 导出
C:\Users\Mr \Desktop>mysqldump -uroot -p521521 online_shopping user > user.sql
2. 导入
use database_name1;
mysql> source C:\Users\Mr \Desktop\user.sql
十三 、索引
1)全文索引解决模糊(like)查询速度问题
2)外键约束想学生和成绩一样,先有学生然后才有成绩,如果你没学生就insert成绩将会报错
3)主键索引和唯一索引中的数据不能重复,有的话不能重复
唯一约束用来保证一列(或一组列)中的数据是唯一的。它们类似于主键,但存在以下重要区别
表可包含多个唯一约束,但每个表只允许一个主键。
唯一约束列可包含NULL值。
唯一约束列可修改或更新。
唯一约束列的值可重复使用。
与主键不一样,唯一约束不能用来定义外键。
MySQL 个人学习笔记的更多相关文章
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Mysql数据库学习笔记之数据库索引(index)
什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...
- MYSQL数据库学习笔记1
MYSQL数据库学习笔记1 数据库概念 关系数据库 常见数据库软件 SQL SQL的概念 SQL语言分类 数据库操作 创建数据库 查看数据库的定义 删除数据库 修改数据库 创建表 数据类型 约束 ...
- 基于【 MySql 】二 || mysql详细学习笔记
mysql重点学习笔记 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysql ...
- Mysql事务学习笔记
Mysql事务学习笔记 1.事务概述 事务是数据库的执行单元,它包含了一条或多条sql语句,进行的操作是要么全部执行,要么全部都不执行. 2.事务执行命令 语法格式: start transactio ...
- MySQL存储过程学习笔记
MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.MySQL 5.0终于开始支持存储过程了. MySQL的关键字大小写通用.该学习笔记对关键字使用大写:变量名,表名使用小写. ...
- mysql的学习笔记(一)
前言 开发中经常用mysql和SQL server交替使用,自己都产生知识的混乱.在这里重新整理下mysql的知识,也是梳理自己知识点,因为是学习笔记,所以并不会使用到图形化管理工具.mysql的安装 ...
- MySQL Explain学习笔记
目录 一.执行计划概念 二.Explain用法 三.Explain属性介绍 3.1 id属性 3.2 select_type属性 3.3 table属性 3.4 type属性 3.5 possible ...
随机推荐
- Ubuntu全盘备份与恢复,亲自总结,实测可靠
https://blog.csdn.net/sinat_27554409/article/details/78227496 Ubuntu全盘备份与恢复,亲自总结,实测可靠 初学者在使用Ubuntu这类 ...
- Spring AOP Capabilities ang goals
Spring AOP 是用纯JAVA 实现的. 不需借助JAVA代码在编译处理阶段来实现. Spring 是在运行期实现的.AOP的实现可以在编译,加载,运行三个阶段来实现:Spring AOP 也不 ...
- Go语言基础之结构体
Go语言基础之结构体 Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念.Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性. 类型别名和自定义类型 自定义类型 在G ...
- Flutter 编写内联文本
使用Text.rich或者RichText ListView( children: <Widget>[ Text.rich( TextSpan( text: 'Text: ', child ...
- ArcGIS Runtime For Android 100.3天地图不加载问题
ArcGIS Runtime 100.3 不加载天地图问题 参考这篇帖子:https://community.esri.com/thread/220496-1003-webtiledlayer-can ...
- 前端基础之JS
流程控制 if-else var a = 10; if (a > 5){ console.log("yes"); }else { console.log("no&q ...
- 阿里面试100%问到,JVM性能调优篇
JVM 调优概述 性能定义 吞吐量 - 指不考虑 GC 引起的停顿时间或内存消耗,垃圾收集器能支撑应用达到的最高性能指标. 延迟 - 其度量标准是缩短由于垃圾啊收集引起的停顿时间或者完全消除因垃圾收集 ...
- [Swift]LeetCode61. 旋转链表 | Rotate List
Given a linked list, rotate the list to the right by k places, where k is non-negative. Example 1: I ...
- [Swift]LeetCode246.对称数 $ Strobogrammatic Number
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside ...
- [Swift]LeetCode719. 找出第 k 小的距离对 | Find K-th Smallest Pair Distance
Given an integer array, return the k-th smallest distance among all the pairs. The distance of a pai ...