php基础学习笔记mysql(14),学习笔记mysql
php基础学习笔记mysql(14),学习笔记mysql
数据库系统的登录
数据库是一个“管理系统”,我们使用数据库必须先“登录”数据库系统。
登录数据库系统的方法为:
1,打开cmd命令行窗口
2,输入登录命令如下:wamp安装目录\bin\mysql\mysql5.5.8\bin\mysql.exe -hlocalhost -uroot –p
a) –h后是“数据库服务器名字”,这里是localhost
b) –u后是登录的“用户名”,这里是默认的“root”
c) –p后面本应该是密码,但建议不写,不写,则系统会在下一步询问。
3,进入数据库系统之后,先执行命令:set names gbk; 这样才可能不出现乱码问题。
4,进入数据库之后,所有命令都需要使用分号结束,表示一条命令;而且命令都是一条一条执行的。
5,数据库中的语句不区分大小写,仍然建议大家按固定的大小写模式来使用。
操作数据库
创建数据库:
create database 数据库名 charset utf8;
删除数据库:
drop database 数据库名;
显示所有数据库:
show databases;
进入(使用)某个数据库
use 数据库名;
——凡是要对某个数据库中的表或其中的数据进行操作,都必须先“进入”该数据库。
数据库中的数据类型
整数类型:tinyint, smallint, mediumint, int, bigint
浮点数类型:float, double
字符类型:
char: 固定长度的字符类型,使用的时候需要指定一个长度,其长度最多255。自己指定的长度表示该数据必须存储这么长(不多也不少)。通常只用于长度固定的数据,比如邮政编码,手机号。
varchar: 可变长度的字符类型,使用的时候需要指定一个长度,其长度最多6万多。自己指定的长度表示该数据最多能存这么多,但可以更少(不可以多出此指定值)
——在数据库中,字符类型使用单引号来进行表示,比如:’abc’, ‘102033’, ‘13910581085’
时间类型:
date:表示一个日期
time:表示一个时间
datetime:表示一个日期时间
——在应用中,如果一个时间是“直接时间”(就是用文字字符表达的时间),则需要加上单引号来表示,比如: ‘2013-10-7’ ’11:57:58’ ‘2013-10-7 11:57:58’
操作数据表
创建数据表:
形式:create table 表的名字 (字段名1 类型1 [附加属性1],字段名2 类型2 [附加属性2],…… );
含义:其实所谓创建表,也就是相当于设定一个表中的若干个字段。
类型就是前面介绍的数据类型的单词
附加属性有如下:
auto_increment: 表示该字段的值会“自动增长”,用于整数类型的字段。
primary key: 表示该字段的数据不会重复(不应重复),就是所谓的“主键”,作用是用来唯一标识一行数据以跟别的行相互区分——通常跟auto_increment联合使用。
not null: 表示该字段的值不能为空值(null)
default 某值: 表示用于设定一个字段的默认值。则如果写入数据的时候没有对该字段写入,则会使用此处设定固定值来代替——有点类似php中的默认参数的作用。
——以上4个属性可以并列出存在于一个字段上,相互之间直接空格隔开就可以了。
举例:创建一个用户表,其中包括顺序号,姓名,邮编,缴费,年龄,入学日期
create table userInfo(id int auto_increment primary key, userName varchar(10), postcode char(6), fee float, age int, regDate date );
删除数据表:
drop table 表名;
显示当前数据库中的所有表:
show tables;
显示一个表的结构(定义,外形):
desc 表名;
数据的操作:添加数据:
语法形式:
insert into 表名 (字段名1,字段名2, ….. ) values (值1,值2,….. ) ;
含义:
网指定的表中的指定字段(单元格)中放入指定的那些对应的值作为一行数据——我们插入数据总是以“行”为单位的,即每次必定是完成一行数据的插入工作,即使有些字段没有给值。
注意事项:
1,我们可以只指定该表的部分字段插入数据,则其余没有指定值的字段要么有默认值,要么有自增长值,要么可以不要值(即可为空)
2,我们指定的字段不必完全按照数据表中的实际字段顺序写出,而是可以任意。
3,在上述形式中,字段和值的个数相等且必须一一对应!
4,通常自增长类型的字段不应该人为插入数据。
5,注意,如果值是字符类型或时间类型的直接值,则需要使用单引号。
举例:
insert into userInfo3(userName, postcode, age, fee, regDate)values(‘韩’,’102030’,22,100.0,’2014-9-5’);
insert into userInfo3(userName, age, fee, regDate)values('韩',22,100.0,'2014-9-5');
数据的操作:删除数据:
形式:
delete from 表名 【 where 条件 】;
含义:
删除指定表中的某些行——根据给出的条件删除。
注意事项:
1, 删除都是以“行”为单位的,即一删就删一行或多行。
2, 通常删除工作都必须加上where条件,否则会将所有数据删除(极少有此需求)
3, where条件可以使用若干项组合条件,每个条件又都可以任意使用字段中的数据进行判断
4, 多个条件是通过逻辑运算符进行组合的,类似这样:条件1 and 条件2 or 条件3
a) 逻辑运算符and: 表示“并且”,跟&&一样。
b) 逻辑运算符or: 表示“或者”,跟||一样
c) 逻辑运算符not: 表示“非”,跟!一样
5, 单个条件的常见用法(举例)
a) id=3; //id这个字段的值为3的那条(那些)数据行
b) age=22; // age这个字段的值为22的那条(那些)数据行
c) id > 6; //id这个字段的值大于6的所有数据行
d) id >=6; //………
e) userName=’韩学禹’ //
f) postcode = ‘000000’
g) regDate = ‘2013-9-5’
6, 一些组合条件:
a) where id > 6 and id
b) where id >=3 and age = 25;
c) where id
d) where postcode=’000000’ or age = 22; //2个条件,满足其中之一就可以
举例:
delete from userInfo3 where id
数据的操作:修改数据:
语法形式:
update 表名 set 字段名1=值1, 字段名2=值2, …… 【 where 条件 】;
含义:
修改指定表中的指定的某些字段的值——根据where条件。
注意事项:
1, 我们也要理解为:修改也是以“行”为单位的,一次修改一行或多行(根据条件满足的行的数量)
2, 虽然是以“行”为单位,但我们在语句可以指定只修改其中的某些字段。
3, 修改的字段顺序没有规定,可以自己设定,个数也没有规定,自己设定。
4, 值的书写形式同插入语句(insert语句)
5, where条件的含义和用法同delete语句的where。
举例:
update userInfo3 set userName='小寒', postcode='123456' where id=3;
update userInfo3 set postcode='123123' where userName='禹禹';
数据的操作:查询数据:
语法形式:
select 字段名1,字段名2,…. from 表名 【 where 条件 】【 order by 排序设定 】【limit 数量限定 】
含义:
select语句是指从数据库中“取出”(查出/找出)若干行数据,但注意,此取出并不会影响数据库本身,也就是说,数据库中的数据并会因为select语句而减少数据——这也反衬出,前面insert,update,delete语句是会影响数据的数据本身的,即会改变数据库!
注意事项:
1, select之后列车的字段名表示要从表中取出的那些字段,可以随意取任何项。但使用一个“*”表示取出该表中的所有字段。
2, where条件的使用和含义跟前面仍然一样。
3, order by语句用于将前面条件下取出的数据以指定的方式进行排序,排序语法如下:
a) order by 字段名 排序方式;
b) 排序方式只有两种:正序(ASC)和倒序(DESC),其中asc其实可以省略。
4, limit数量限定语句是将前面条件下并设定的排序方式下来限制只取出其中的某些行!,语法如下:
a) limit 起始行号,需要的数量
b) 行号类似于js中的数组的下标,一定是从0开始的连续的数字。
5, 上述where子句,order by子句 limit子句均可以任意使用或省略,但必须按上述顺序出现。
举例:
select * from userInfo3;
select * from userInfo3 where id>3;
select id, userName, fee from userInfo3 where id>3;
select id, fee, postCode, regDate from userInfo3 where age > 20
select id, fee, postCode, regDate from userInfo3 where age > 20 order by id desc;
select * from userInfo3 order by age;
select * from userInfo3 order by regDate;
select * from userInfo3 where id > 3 order by regDate desc;
select * from userInfo3 where id > 3 order by regDate desc limit 0,2;
select * from userInfo3 where id > 3 order by regDate desc limit 2,2;