对数据库学习的大致总结
0x01 前言
花了两天时间,了解了一下数据库的基本语法以及操作,看的是SQL必知必会这本书,感觉这本书比较薄,看起来不像课本那样详细,所以我总结的也不太全面,请多多包含吧。。。。。
0x02 正文
1 Navicat的使用
如果你没接触过SQL,可以先用这款软件去熟悉一下数据库的结构,这款软件只要连接好数据库就能用了十分方便,还能在里面练习SQL语句。。。
2 数据库的结构
个人看了几天书,我认为数据库一般都是按照下面的顺序去操作的:数据库->表->字段(列)->行
3 数据库的各种语句以及操作
3.1 注释
1.#
2.--
3./* */
(前两个都是单行注释,注意双斜杠后面有空格,第三个是多行注释)
3.2 创建数据库
CREATE DATABASE 数据库名称;
3.3 查看数据库
SHOW databases;
3.4 切换数据库
USE 数据库名;
3.5 删除数据库
DROP DATABASE 数据库名;
注意
SQL语句对大小写不敏感,并且以分号作为语句的结束
3.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 查看数据表
show tables;
3.8 插入数据表
insert INTO teacher(name,sex,addr)
values('Leo','Male','hangzhou');
3.9 查询数据表
select * from teacher;
要搜索多个列用逗号隔开,例如:
select id,user from teacher; /*没有明确排定的顺序,每一次查询的顺序可能都不一样,很正常,牵扯到DBMS的回收机制,看看书就好,不多说*/
3.10 where句子
select 你要的信息 from 数据表(或多个) where 满足的条件(判断的条件)
“*”代表所有符合数据,where也可以用于update或者delete语句中
3.11 order by句子
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句子
可以合并两个表中的信息
select 你要的信息 from 数据表1 union select 你要的信息 from 数据表2; /*对于这句话,它是不显示两个表中的相同的信息的*/
要显示全部信息的话可以使用union all,对于那一种,其实还有个distinct关键字让数据库只返回不同的值,不多说,可以自己去看书学习
3.13 limit句子
limit指定返回的行数,例如:
select * from teacher limit 5 offset 5; //这里的offset是从第几行开始,这句话是从第五行起的五行数据
注意:
第0行的问题 limit 1 offset 1
是从数据表的的第二行开始,因为数据库第一行相当于语句的第0行
3.14 更新数据
update teacher set name = '0ver' where id=1;
3.15 删除表的内容
delete table
3.16 删除表
drop table 表名
3.17 sql注入中常用的内置函数
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,不多说了,还是直接上代码比较靠谱:
<?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 发几句牢骚
放寒假打的第一场球,就把手给折了,还好我强忍着疼痛把这篇博客给写完,果然学习才是人生第一大事。。。。。。。