在 上翻来覆去找不到一套适合新手自学的书,于是买了课,急急忙忙上完了课,又发现全还给老师了。
这一系列文放在这里,从下载软件开始,记录一条MySQL入门之旅。 新手也可以跟着这条路走,一条道走到黑。 粉丝可见,愿者上钩。
有任何疑问,参考三篇上课笔记,或者私信我。
文章目录
-
-
- 1、我的上课笔记
- 2、软件下载选择
- 3、示例数据库
- 4、DOS界面用户登录方式
- 5、取消语句
- 6、数据库操作
- 7、数据表操作
- 8、往数据表中插入数据
- 9、从表中检索数据
- 10、sampdb数据库资料
- 11、当前服务器下存储引擎
- 12、各存储引擎特性
- 13、如何选择合适的存储引擎
- 14、存储引擎设定
-
- warning查看方法
- 只创建不存在的数据表
- 15、创建临时数据表
- 16、从其他表中创建新表
- 17、删除数据表
- 18、为数据表编制索引
- 19、删除索引
- 20、Alter 改变数据表的结构
- 21、获取数据库里的元数据
- 22、使用视图
- 23、事务处理
- 24、使用事务保存点
- 25、外键使用
- 26、数值类型
-
- 数值类别
- 特殊字符串处理
- 27、MySQL如何处理非法数据
- 28、操作符
-
- 算术操作符
- 逻辑运算符
- 比较运算符
- 29、复合语句与语句分隔符
- 30、触发器
- 31、索引的使用
- 索引为什么能提高查询效率/li>
- 挑选索引
-
- 尽量为用来搜索、分类或分组的数据列编制索引,不要为用来输出的数据列编制索引。
- 尽量为短小的值建立索引,或者说,建立索引的值,要尽量短小。
- 为字符串的前缀设置索引
- 利用慢查询日志找出拖慢进度的SQL语句
- 32、MySQL的查询优化程序
- 33、使用explain 语句来验证优化器操作
- 34、其他话
- 35、C++语言使用MySQL
-
- 1、Linux下的MySQL环境搭建
- 2、头文件
- 3、初见庐山真面目
- 4、拨开迷雾,看下一层迷雾
-
- ①调用mysql_real_connect函数连接Mysql数据库。
- ②调用mysql_real_query函数进行数据库查询。
- ③通过调用mysql_store_result或mysql_use_result函数返回的MYSQL_RES变量获取查询结果数据。
- ④调用mysql_fetch_row函数读取结果集数据。
- ⑤结果集用完后,调用mysql_free_result函数释放结果集,以防内存泄露。
- ⑥不再查询Mysql数据库时,调用mysql_close函数关闭数据库连接。
- 5、看个实例融会贯通一下
-
1、我的上课笔记
MySQL数据库从入门到实战应用(学习笔记一)
MySQL数据库从入门到实战应用(学习笔记二)
MySQL数据库从入门到实战应用(学习笔记三)
2、软件下载选择
MySQL8.0版本,下载411M的那个debug版本
相比于5代版本,这款跨越6、7代版本的8代版本有许多的好评,当然我也没体验过5代版本,反正要用就用最新的嘛。
3、示例数据库
示例数据库是人家书里面的,有书总比没书好。
示例数据库的链接会在后面给出。
打开MySQL客户端(如果已经配置好了系统路径也可以直接打开DOS界面),登录之后配置一个新用户:
完成对新用户 sampadm的配置,本用户只能在localhost上登录。
完成配置后,就可以用账 :sampadm 密码:secret登录该账户了。
4、DOS界面用户登录方式
首先你要配置路径。
然后,登录指令:
或者:
退出会话可以使用:
5、取消语句
当你输入了好几条语句,但是又不想执行,你会发现删不掉,这时候就需要使用 c
意会一下:
7、数据表操作
创建数据表:
方式1:代码编写
方式2:.sql文件导入
先进入sampdb文件夹下,然后:
查看当前数据库下数据表:
查看某一张表的列:
查看某些列:
查看当前数据库下所有表:
查看指定数据库下所有表:
8、往数据表中插入数据
普通插入一条数据:
一次插入多条数据:
往指定列(不可为空的列必须插上数据)插入数据:
一条龙服务:
9、从表中检索数据
一干查询语句我就不再细叙,这篇写好了基础的查询语句:SQL语句学习
需要实操的时候,可以先用select *查出表中所有数据,然后再进行实操设计。
删和改的语句也在里面了。
还需多加练习熟练各项基本操作,本章的操作和数据库在在后续章节将持续被使用。
10、sampdb数据库资料
链接:sampdb
提取码:4td8
11、当前服务器下存储引擎
1.使用以查看当前系统下所有引擎,如图:
13、如何选择合适的存储引擎
选择标准:根据应用特点选择合适的存储引擎,对于复杂的应用系统可以根据实际情况选择多种存储引擎进行组合。
下面是常用存储引擎的适用环境:
14、存储引擎设定
创建数据表时设定存储引擎:
这里插几条,
warning查看方法
有时候虽然执行语句没 错,不过会有警告,但是警告不主动显示。
如果我们想看,就要主动让它显示:
只创建不存在的数据表
重复创建表是会 错的。
15、创建临时数据表
临时数据表会在与服务器断开连接时自动销毁。
创建方式:
临时表的表名可以和已存在的表相同,不过在临时表存在期间那个永久表会被隐藏。
不过无法创建两个同名的临时表。
什么时候使用临时表:比如说要做实验的时候,你导入一个外部文件,但是你又不知道里面数据安全不安全,是吧。
16、从其他表中创建新表
1、 将另一个表的数据复制到新表中。
2、以查询结果建表。
17、删除数据表
1、删除一张表:drop table tablename;
2、删除多张表:自己想
18、为数据表编制索引
1.存储引的索引特性
MySQL提供了多种灵活的索引创建办法,如下所示。
你可以为单个数据列编制索引,也可以为多个数据列构造复合索引。
索引可以只包含独-无二的值,也可以包含重复的值。
你可以为同一个数据表创建多个索引并分别利用它们来优化基于不同数据列的查询。
对于ENUM和SET以外的字符串数据类型,可以只为数据列的-一个前缎创建索引,也就是为对最左边的n个字符(对二进制字符串类型来说就是最左边的n个字节)创建索引。(对于BLOB和TEXT数据列,你只有在指定了前缀长度的情况下才能创建-一个索引。)如果数据列在前缀长度范围内具有足够的独一无二性,查询性能通常不会受到影响,而是会得到改善:为数据列前缀而不是整个数据列编索引可以让索引本身更小并加快访问速度。
2.创建索引
MySQL可以创建好几种索引,如下所示。
唯一索引。这种索引不允许索引项本身出现重复的值。对只涉及-一个数据列的素引来说,这意味着该数据列不能包含重复的值。对涉及多个数据列的索引(复合索引)来说,这意味着那几个数据列的值的组合在整个数据表的范围内不能出现重复。
普通(非唯一)索引。这种索引的优点(从另一方面看是缺点) 是允许索引值出现重复。0 FULLTEXT索引。用来进行全文检索。这种索引只适用于MyISAM数据表。如果你想了解更多信息,请参阅2.15节。
SPATIAL索引。这种索引只适用于MyISAM数据表和空间(spatial) 数据类型,对这种数据类型的描述见第3章。(对于其他支持空间数据类型的存储引擎,你可以创建非SPATTAL索引.)
HASH索引。这是MEMORY数据表的默认索引类型,但你可以改用BTREE索引来代替这个默认索引。
tablename:要加索引的数据表
index_name:索引名
index_columns:要加索引的单列或多列,如果是多列要用逗 隔开。
- 如果是一个primary key索引或spatial索引,则带索引的列必须为not null。
- 每个数据表只能有一个primary key。
索引干嘛用头那三篇里面讲的详细了。
19、删除索引
20、Alter 改变数据表的结构
alter语法:
示例:
改变数提列的数据类型。如果想改变某个数据列的数据类型,可以使用CHANGE或MODIFY子句。假设mytbl数据表里的某个数据列的数据类型是SMALLIT UNSIGNED,你想把它改成MEDIUMITUNSIGNEID。下面两条命令都可以达到目的:
为什么在使用CHANGE子句时需要写两遍数据列的名字呢为CHANGE子句能够(而MODIFY子句不能)做到的事情是在改变其数据类型的同时重新命名一个数据列。如果想在改变其数据类型的同时把数据列i重新命名为k,你可以这样做:
在CHANGE子句里,需要先给出想改动的数据列的名字,然后给出它的新名字和新定义。因此,即使不想重新命名那个数据列,也需要把它的名字写两遍。
如果只想改变数据列的名字,不改变它的数据类型,先写出CHANGE o1d name new_ name、再写出数据列的当前定义即可。
重新命名-个数据表。用RENAME子句给数据表起-个新名字:
另一个办法是使用RENAMB TABLE 语句来重新命名数据表。下面是它的语法:
ALTER TABLE语句每次只能重新命名一个数据表,而RENAME TABLE语句可以一次重新命名多个数据表。比如说,你可以像下面这样交换两个数据表的名字:
如果在重新命名个数据表时在它的名字前面加上了数据库名前级,就可以把它从一个数据库移动到另一个数据库。下面两条语句都可以把数据表t从sampdb数据库移到test数据库去:
不能把一个数据表重新命名为一个已有的名字。
如果重新命名的某个MyISAM数据表是某个MERGE数据表的成员,你必须重新定义那个MERGE数据表,让它使用那个MyISAM数据表的新名字。
21、获取数据库里的元数据
前面讲的杂乱无章,整理一下:
22、使用视图
视图是一种虚表,它是从数据表或其他视图中抽取出数据形成的临时表,用来提供查看数据的另一种方式,可以简化应用程序。
创建视图:
查询视图的方法和效果与普通数据表一样,使用视图时,你只能引用当前视图中存在的数据列。
视图可以用来自动完成必要的数学运算,我们可以把视图运算放在一个视图定义里运行。
23、事务处理
事务是作为一个不可分割的逻辑单元而被执行的一组SQL语句,如有必要,它们的执行效果可以被撤销。
并非所有的语句每次都能被执行成功。
事务的处理是通过提交和回滚功能实现的。如果某个事务里的语句都执行完成了,提交该事务将把那些执行效果永久的记录到数据库里。如果在事务过程中发生错误,回滚该事务将把发生错误之前已经执行的语句全部撤销。
事务的另一个用途就是确保某个操作所设计的数据行在你正在使用它们的时候不会被其他客户所修改。
MySQL在执行每一条SQL语句时都会自动的对该语句所设计的资源进行锁定以避免个语句之间相互干扰,但这仍不足以保证每一个数据库操作总是能得到预期的结果。要知道,有的数据库操作需要多条语句才能完成,而在此期间,不同的客户就有可能互相干扰。
通过把多条语句组合成一个执行单元,事务机制可以防止多客户环境里可能发生的并发问题。
使用事务处理为数据库提供了强有力的保证,但这需要增加CPU、内存和硬盘空间等方面的开销作为代价。
想要使用事务,就必须选择一个支持事务的存储引擎,如innoDB。
要注意,有些语句时不能成为事务的一部分的,所以在事务中出现了这些语句,系统会自动将事务提交,如:
每个版本的情况略有偏差,具体还得看官方文档。
24、使用事务保存点
MySQL使你能够对一个事务进行部分回滚,这就需要你在事务过程中使用savepoint语句设置一些称为”保存点“的标记。在后续的事务里,如果你想回滚到某个特定的保存点,在rollback语句里给出该保存点的位置即可。
有图有真相:
26、数值类型
数值类别
MySQL能够识别和使用的数据值包括数值、字符串值、日期/时间值、坐标值和空值(NULL)。
特殊字符串处理
SQL标准对于字符串的两端规定为单引 。
MySQL可以识别出字符串中的转义序列,这就很尴尬:
逻辑运算符
29、复合语句与语句分隔符
走到这一步了,也该知道MySQL的执行,如果没什么特殊说明都是一个分 一句的,不过有些语句需要形成一个语句块,就像函数的那个{}一样。
在MySQL语句中,也有这样的分隔符:
- 复合语句由begin开头,由end结尾。
- 使用delimiter命令把mysql程序的语句分隔符定义为另一个字符或字符串,它必须是在存储例程的定义里没有出现过的。这样-来, mysql程序就不会把分 解释为语句终止符了,它将把整个对象定义作为一条语 句传递给服务器。在定义完存储程序之后,可以把mysql程序的语句终止符重新定义为分 。下面的例子在定义一一个存储过程时把mysq1程序的默认分隔符临时改变为$,然后在恢复了mysql程序的默认分隔符之后执行了那个存储过程:

30、触发器
触发器是与特定数据表相关联的存储过程,当相应的数据表被INSERT、DELETE 或UPDATE语句修改时,触发器将自动执行。触发器可以被设置成在这几种语句处理每个数据行之前或之后触发。触发器的定义包括一-条将在触发器被触发时执行的语句。
触发器要用CREATE TRIGGER语句来创建。在触发器的定义里需要表明它将由哪种语句(INSERT、UPDATE或DELETE)触发,是在数据行被修改之前还是之后被触发。触发器创建语句的基本语法如下所示:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!