Mysql数据库
环境:
我这里使用的是phpstudy的集成环境
打开命令窗体
> mysql -uroot -p
> 填写两次密码进入数据库
查看数据库有哪些表
mysql> show databases;
使用某个数据库
mysql> use dvwa;
Database changed
查看我们数据库里哪些表
mysql> show tables;
查看表结构
mysql> desc user;
创建数据库
create database 数据库名
创建表
create table 表名(
'number' int(11) NOT NULL auto_increment,
'name' varchar(32),
'class' varchar(20);
使用INSERT语句向数据表中添加数据
什么是字段?
这些都是字段
插入数据是向已经存在的数据表中添加一条心的记录,应该使用INSERT INTO语句
格式:
字段和值是一 一对应的
INSERT INTO 表名 [(字段名,字段名2,...字段名n)]
VALUES('值1','值2',...,'值n')
或者
一般数据库导入的时候,才会使用到
INSERT INTO 表名 [(字段名1,字段名2,...字段名n)]
VALUES('值1','值2',...,'值n'),VALUES('值1','值2',...,'值n');
使用UPDATE语句更新数据表中已存在的数据
SQL语句可以使用UPDATE语句对表中的一列或多列数据进行修改,必须制定需要修改的字段,并且需要赋予新值,还要给出必要的WHERE子句指定要更新的数据行。
格式:
UPDATE 表名 SET 字段名=要修改的值[,...][WHERE 条件][ORDER BY 字段][LIMIT 行数]
更新users表里的user字段,条件是id=6,一般更新字段会带上条件
使用DELECT语句删除数据表中不需要的数据记录
DELECT 语句用来删除数据表中的一条或多条数据记录
格式:
DELETE FROM 表名 [WHERE][ORDER BY 字段][LIMIT 行数]
这里的WHERE一定要给,否则是删除整个数据表
如果直接使用delete from users;
直接就失业了,直接删除了users表里的内容,所以一定要有条件
通过DQL命令查询数据表中的数据
查询语句可以完成简单的单表查询,也可以完成复杂的多表查询和嵌套查询,SELECT语句主要用于数据的查询检索,是SQL语言的核心,在SQL语言中SELECT语句的使用频率是最高的
格式:
下面的格式是只是个参考,操作才是关键
SELECT [ALL|DISTINCT]{*|table.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}FROM 表名 [WHERE子句][GROUP BY..][HAVING..][ORDER BY..][LIMIT count];
查询表中所有字段和数据
星号代表所有字段
如果我们只要查询user和password的字段,查询多个字段只要逗号隔开即可
在SELECT 语句中使用表达式的列
例如:
查看数据库版本
SELECT version();
加减乘除
使用WHERE子句按条件检索
在SELECT语句中,可以使用WHERE子句指定搜索条件,实现从数据表中检索出符合条件的记录,其中,搜索条件可以由一个或多个逻辑表达式组成,这些表达式指定某个记录是真或假的条件,在WHERE子句中可以通过逻辑操作符和比较操作符指定基本的表达式条件
查找id=3
查找id小于10的
逻辑运算符
比较运算符
使用WHERE子句按条件检索
在构造搜索条件时,要注意只能对数据类型的记录进行算术运算,并且只能在相同的数据类型之间进行记录
使用BETWEEN AND 进行范围比较查询
如果需要对某个字段通过范围的值进行查询,可以使用BEETWEEN AND 关键字实现,其中AND是多重条件符合,比较时也包括边界条件,也可以使用">=“和”<="完成同样的功能
使用in (查询内容)进行查询
使用LIKE进行模糊查询
在SELECT语句的WHERE子句中,可以使用LIKE关键字对数据表进行模糊查询,将查询结果锁定在一个范围内。在查询条件中通常会"_“和”%"两个通配符一起使用,可以实现复杂的检索查询。
- 百分号“%”:表示0个或任意多个字符
- 下划线"_":表示单个的任意一个字符
相反的,不匹配我们使用NOT LIKE
匹配中间是r的
匹配以s开头的
使用ORDER BY对查询结果排序
SELECT语句中使用ORDER BY子句,对检索的结果进行排序。
ORDER BY 后面可以接一列或多列用于排序的字段,默认情况安装升序,则使用ASC关键字,如果按照降序排序,必须使用DESC关键字,ORDER BY子句可以和SELECT语句中的其他一起使用,但子查询不能有ORDER BY子句,因为ORDER BY只能对最终查询结果排序
对user_id进行排序
对user_id进行倒叙(在后面加desc即可)
使用LIMIT限定结果行数
如果数据表中的记录数非常多,一次从表中返回大量的记录不仅检索的速度慢,用户阅读也不方便,使用LIMIT子句一次取少数的记录,用分页的方式继续阅读后面的数据
LIMIT子句可以和其他的SELECT子句一起使用,它可以指定两个参数,分别用设置返回记录的起始位置,和返回记录的数量
LIMIT子句也可以使用一个参数,表示开头位置,即偏移量为0的位置返回指定数量的记录,在上例中使用的”LIMIT 0,5“ 等价于”LIMIT 5“
执行
select * from tables
发现里面内容很多,很杂
使用limit进行选段,limit 2的意思就是第一行以后查2条
使用统计函数
语法:
SELECT 函数名(列名1或*),...函数名(列名n) from 表名; #使用统计函数
统计表里多少条记录
select count(*) from users;
查看最大id数
select max(user_id) from users;
下面如何使用php执行语句,新建一个demo.php文件
//如果这里出现mysql_connect(): The mysql extension is deprecated and will be removed 类似这样的报错
将mysql_connect()
改成mysqi_connect(),或者PDO代替即可
第一种方法适合只查一条数据
mysql_fetch_assoc
<?php
$link = mysql_connect('localhost','root','123456'): //连接
mysql_select_db('threephp'); //选择数据库
mysql_set_charset('utf8'); //选择编码
$sql = "SELECT id,name,age,sex FROM users where id =10"; //搜索语句
$res =mysql_query($sql); //发送查询语句
$row =mysql_fetch_assoc($res); //获得一行关联数组
var_dump($row);
?>
查询多条数据
第二个方法适合查询多条数据
<?php
$link = mysql_connect('localhost','root','123456'): //连接
mysql_select_db('threephp'); //选择数据库
mysql_set_charset('utf8'); //选择编码
$sql = "SELECT id,name,age,sex FROM users where id =10"; //搜索语句
$res =mysql_query($sql); //发送查询语句
while(list($id,$name,$age,$sex) = mysql_fetch _row($res)){
echo "{$id}--{$name}--{$age}--{$sex}--<br />";
}
var_dump($row);
?>
如果是插入语句只需要判断sql是否执行成功,删除语句也是一样