对数据库学习的大致总结

0x01 前言

花了两天时间,了解了一下数据库的基本语法以及操作,看的是SQL必知必会这本书,感觉这本书比较薄,看起来不像课本那样详细,所以我总结的也不太全面,请多多包含吧。。。。。

0x02 正文

1 Navicat的使用

如果你没接触过SQL,可以先用这款软件去熟悉一下数据库的结构,这款软件只要连接好数据库就能用了十分方便,还能在里面练习SQL语句。。。

2 数据库的结构

个人看了几天书,我认为数据库一般都是按照下面的顺序去操作的:数据库->表->字段(列)->行

3 数据库的各种语句以及操作

3.1 注释

1
2
3
4
1.#   
2.--
3./* */
(前两个都是单行注释,注意双斜杠后面有空格,第三个是多行注释)

3.2 创建数据库

1
CREATE DATABASE 数据库名称;

3.3 查看数据库

1
SHOW databases;

3.4 切换数据库

1
USE 数据库名;

####3.5 删除数据库

1
DROP DATABASE 数据库名;

注意 SQL语句对大小写不敏感,并且以分号作为语句的结束

3.6 创建数据表

如:

1
2
3
4
5
6
CREATE TABLE teacher(
id int(4) not null primary key auto_increment,
name char(20) not null,
sex char(10) not null,
addr char(20) not null
);

####3.7 查看数据表

1
show tables;

3.8 插入数据表

1
2
insert INTO teacher(name,sex,addr)
values('Leo','Male','hangzhou');

3.9 查询数据表

1
select * from teacher;

要搜索多个列用逗号隔开,例如:

1
select id,user from teacher;   /*没有明确排定的顺序,每一次查询的顺序可能都不一样,很正常,牵扯到DBMS的回收机制,看看书就好,不多说*/

3.10 where句子

1
select 你要的信息 from 数据表(或多个) where 满足的条件(判断的条件)

“*”代表所有符合数据,where也可以用于update或者delete语句中

3.11 order by句子

1
select 你要的信息 from 数据表(或多个) order by 字段 ASC/DESC   /*按字母等顺序排序,后面的ASC那些可以不写,默认ASC升序,DESC降序*/

可使用order by ‘数字’,判断数据标的字段长度

使用该子句时,应确保他是select语句的最后一个字句,即当where子句出现的时候order by应该放在where的后面,不然会报错

按多个列排序,像搜索的时候用逗号隔开即可,如:select user,content from msg order by user,content;这句话只有在user这个条件都一样的时候才会对content排序,如果user都是唯一的话,没啥实际作用。。。。

3.12 union句子

可以合并两个表中的信息

1
select 你要的信息 from 数据表1 union select 你要的信息 from 数据表2;  /*对于这句话,它是不显示两个表中的相同的信息的*/

要显示全部信息的话可以使用union all,对于那一种,其实还有个distinct关键字让数据库只返回不同的值,不多说,可以自己去看书学习

3.13 limit句子

limit指定返回的行数,例如:

1
select * from teacher limit 5 offset 5;  //这里的offset是从第几行开始,这句话是从第五行起的五行数据

注意:第0行的问题
limit 1 offset 1 是从数据表的的第二行开始,因为数据库第一行相当于语句的第0行

3.14 更新数据

1
update teacher set name = '0ver' where id=1;

3.15 删除表的内容

1
delete table

3.16 删除表

1
drop table 表名

3.17 sql注入中常用的内置函数

1
2
3
4
select database()
select currebt_user
select load_file("路径")
select version() //数据库版本

3.18 php连接到数据库

前两天总结了php,现在再来讲讲php+mysql的应用

我认为,这个代码应该分成两个部分:

1.连接到数据库
2.执行SQL语句

提醒一下,不要用mysql_connect连接了,太古老了,官方文档是这样说的:从 PHP 5.5.0 起这个扩展已经被废弃,并且从 PHP 7.0.0. 开始被移除。
怪不得我以前照着书上的代码敲的时候不能用。。。。。。。。

mysqli连接,这个大部分是面向对象的,即最好用new来开始连接,不推荐过程化风格,虽然过程化风格跟mysql_connect很像,所以还是对php里面的类和对象有点了解比较好,想详细了解的话可以看官方文档

另外执行mysql语句命令用的是query语句执行的,而且query语句返回的是true跟false,可以用这一点去判断是否执行成功。

整个环境都是用PHPstudy搭的,数据库名称是php10,以后配置记得以下三步:数据库导入,原码导入,配置数据库文件emmmm,不多说了,还是直接上代码比较靠谱:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
$host = 127.0.0.1;
$user = 'root';
$pwd = 'root';
$dbname = 'php10';

$db = new mysqli($host,$user,$pwd,$dbname);
if($db->connect_errno!=0) //这里的的mysqli_errno=0即连接成功,可以用var_dump函数去验证
{
echo "连接失败!";
echo $db->connect_error; //返回错误信息

}

$sql = "update msg set user='0verWatch' where id=1"; //sql语言不分大小写
$db->query("SET NAMES UTF8");
//确保数据传输也是UTF-8,防止出现乱码,可能会出现这种情况,但我发现我删除之后没影响,最好还是些写写吧,小心是UTF8没有横线
$flag = $db->query($sql); //返回true跟false,查询官方文档可知
if($flag == true)
{
echo '连接成功!';
}
else
{
echo "连接失败";
}


?>

0x03 发几句牢骚

放寒假打的第一场球,就把手给折了,还好我强忍着疼痛把这篇博客给写完,果然学习才是人生第一大事。。。。。。。


听说,打赏我的人最后都成了大佬。



文章目录
  1. 1. 0x01 前言
  2. 2. 0x02 正文
    1. 2.1. 1 Navicat的使用
    2. 2.2. 2 数据库的结构
    3. 2.3. 3 数据库的各种语句以及操作
      1. 2.3.1. 3.1 注释
      2. 2.3.2. 3.2 创建数据库
      3. 2.3.3. 3.3 查看数据库
      4. 2.3.4. 3.4 切换数据库
      5. 2.3.5. 3.6 创建数据表
      6. 2.3.6. 3.8 插入数据表
      7. 2.3.7. 3.9 查询数据表
      8. 2.3.8. 3.10 where句子
      9. 2.3.9. 3.11 order by句子
      10. 2.3.10. 3.12 union句子
      11. 2.3.11. 3.13 limit句子
      12. 2.3.12. 3.14 更新数据
      13. 2.3.13. 3.15 删除表的内容
      14. 2.3.14. 3.16 删除表
      15. 2.3.15. 3.17 sql注入中常用的内置函数
      16. 2.3.16. 3.18 php连接到数据库
  3. 3. 0x03 发几句牢骚