1 mysql常用术语
1) 数据库 database (***)
2) 表 table (***)
3) 行(row)和列(column)
4) 记录 (record) 一个数据行 就是一条记录
5)字段(field) 每个列 就是一个字段
备注: 结构化查询语言SQL(Structured query language),
操作关系数据库的通用语言,用于执行数据的检索和其他操作。
数据库 =》 表 =》 记录(行)
2 mysql安装
1) 下载 phpStudy 集成工具
2) 下一步 安装 点击启动 (绿色代表成功)
启动会同时启动两个东西:
apache: 这是集成的一个服务器 端口是 80
mysql: 这是数据库 端口是 3306
3 连接数据库
语法: mysql -h主机名 -u用户名 -p密码
mysql –hlocalhost –uroot –proot
测试是否连接成功:
show databases;
说明: 需要配置环境变量, 把以下路径 放入环境变量
C:\phpStudy\PHPTutorial\MySQL\bin
4 数据库的操作 (**)
1) 查看数据库列表
show databases;
2) 创建数据库
create database 数据库的名字;
例子: create database web;
3) 切换(使用数据库)
use 数据库名称;
例子: use web;
4) 删除数据库
drop database 数据库的名字;
例子: drop database web;
5) 修改数据库的选项(一般修改编码)
alter database 数据库的名字 修改内容
例子: alter database web charset=gbk;
补充: 查看创建数据库的一些信息
6) show create database 数据库的名字
例子: show create database web;
5. 表的基本操作(*****)
1) 创建表
语法:
create table 表名 (
字段名称 数据类型和长度 属性修饰,
字段名2 字段类型2 属性修饰2
)[表选项]
例子:
create table student (
id int primary key auto_increment,
name varchar(50),
age int,
sex varchar(10)
);
create table teacher (
name varchar(50),
age int,
sex varchar(10)
);
2) 查看当前数据库有哪些表
show tables;
3) 查看表的结构
desc 表的名字;
例子: desc student;
4) 删除表
drop table [if exists] 表名
例子: drop table if exists teacher;
补充:
5)修改表:
alter table 表名 选项=新值
例子: alter table student charset=utf8;
6)查看建表的一些信息:
show create table 表的名字
例子: show create table student;
6 记录的基本操作 (******)
1) 增加记录(插入数据) ------ 增
语法: insert into 表名 (字段列表) values (值列表)
例子: insert into teacher(name, age, sex) values('李寻欢', 35, '男');
insert into teacher(name, age, sex) values('xunhuanLi', 35, 'man');
insert into student(name, age, sex) values('小张', 20, '男');
insert into student(name, age, sex) values('小李', 21, '女');
insert into student(name, age, sex) values('小王', 22, '男');
补充:
insert into 表明 values (值列表) // 参数一定要按照顺序
例子: insert into teacher values('老王', 35, '男');
insert into student values(default,'小强', 18, '男');
注意: 如果使用这种 省略字段列表的方式 需要使用 default 或 null 占位
MySQL修改字段类型的命令是:
mysql> alter table 表名 modify column 字段名 类型;
假设在MySQL中有一个表为:address,有一个字段为city 初始情况下为varchar(30),那么修改类型为char可以在MySQL控制台输入:
alter table address modify column city char(30);
注意修改类型应该谨慎,因为类型之间数据需要转换,可能会导致数据出错或者丢失
如果要将varchar(30)长度进行扩展可以使用:
alter table address modify column city varchar(60);
同样类型的数据字段增加长度是没问题的,也是经常使用的,但是减小长度可能会导致数据丢失;8
dos控制台中文编码问题 (*****)
在插入数据之前 set names gbk;
2) 查询数据 (*******) ------- 查
a) 基本查询:
语法: select 字段列表 from 表的名字;
例子: select * from student; // 查询表里面的所有字段
select name from student; // 查询表里面的name字段
select age from student; // 查询表里面的age字段
补充: 查询出来 取别名
select 字段名 as 别名 from 表名;
例子: select name as n from student;
b) 带条件查询
语法: select 字段列表 from 表的名字 where 条件
例子: select * from student where sex = '女';
select * from student where sex <> '女';
select * from student where age > 18;
select * from student where age < 21;
select * from student where age >= 18;
select * from student where age <= 21;
select * from student where age BETWEEN 20 AND 22; // 在什么之间
select * from student where age > 18 and sex='女'; // 并且
select * from student where age > 18 or id=6; // 或者
select * from student where name LIKE '小%'; // 正则匹配以。。开头的
select * from student where name LIKE '老%';
select * from student where name LIKE '%强'; // 正则匹配以。。结尾的
select * from student where name LIKE '%李';
select * from student where name LIKE '%李%'; // 包含这个字符的
select * from student where name LIKE '%王%';
3) 删除数据 (****)------ 删
语法: delete from 表名 [where 条件]
例子: delete from student where sex = '女'; // 删除所有性别为女的数据
例子: delete from student where id = '8'; // 删除id = 8数据
备注: 如果不写条件 代表删除所有数据
例如: delete from student; // 删除 student 表 所有数据
4) 修改数据 (****) -----改
语法: update 表名 set 字段=值, 字段=值 [where 条件表达式];
例子: update student set age = 38, sex = '女';
update student set age = 8, sex = '男' where id = 1;
7 数据类型
商品表 (关键字 可以使用反引号)
create table `goods` (
id int primary key auto_increment,
`sort` tinyint unsigned,
name varchar(100),
price float(10, 2),
`desc` text,
ctime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
insert into goods(name, price, `desc`) values('ipone18', 9999.999, '这是一个手机1');
insert into goods(name, price, `desc`) values('ipone19', 8888.999, '这是一个手机2');
insert into goods(name, price, `desc`) values('ipone20', 7777.999, '这是一个手机3');
补充: 查询结果排序
select * from goods order by ctime asc; // 升序 默认
select * from goods order by ctime desc; // 降序排列
select * from goods where 1 order by ctime desc; // 条件可以拼接 order by 只能在最后