一、mysql介绍
二、mysql的安装
- windows
- os x
- linux
三、制作MySQL的windows服务(以下mysql命令需要添加环境变量才可以执行)
初始化:
mysqld --initialise-insecure (--user=mysql)
启动服务端:
mysqld
客户端连接:
mysql -u root -p (客户端登入)
发送指令
show databases;
create database db1;制作MySQL的Windows服务:
mysqld --install (添加MySQL服务)
mysqld --remove (删除MySQL服务)创建好MySQL服务之后可以使用
net start MySQL(开启MySQL服务)
net stop MySQL(关闭MySQL服务)
四、MySQL创建用户以及授权
创建用户:
create user ‘alex‘@‘192.168.1.1‘ identified by ‘123456‘;
create user ‘alex‘@‘192.168.1.%‘ identified by ‘123456‘;
create user ‘alex‘@‘%‘ identified by ‘123456‘;创建用户alex,ip地址为192.168.1.1,密码为123456
192.168.1.%中%表示任一数字(2~254)
授权(设置什么权限,设置给什么用户):
grant select,insert,update on db1.* to ‘alex‘@‘%‘;
grent all privileges on db1.t1 to ‘alex‘@‘%‘;db1.t1 -----> t1为db1数据库中的一个表
数据库的导入和导出
导出现有数据库数据:
mysqldump -u 用户名 -p 密码 数据库名称 > 导出文件路径
五、MySQL操作数据库以及数据表
操作数据库(文件夹)
create database db2 default charset utf8;
创建数据库db2(并设置编码格式为utf8)show databases;
查看所有数据库use db1;
打开数据库db1drop database db2;
删除数据库db2操作数据表
show tables;
查看该数据库所有表create table t2( id int auto_increment, name char(10) ) engine=innodb default charset=utf8; 创建表,列名为id,name,并设置事务引擎为innodb,编码格式为utf8,int为自增 auto_increment 表示:自增 primary key 表示:约束(不能重复且不能为空);加速查找
引擎:engine=innodb 支持事务
应用场景:A转账给B,A减去100元,这时候服务器宕机,B本来要加100元却没有加100元,转账失败,这时候有innodb情况下,可以回滚拓展innodb:???
delete from t1;
truncate table t1;
清空表drop table t1;
删除表操作数据表内容
插入数据
insert into t1(id,name) values(1,‘alex‘);查看数据
select * from t1;修改数据
update t1 set age=18;
update t1 set age=18 where age=17;删除数据
delete from t1 where id<6;
增
insert into tb12(name,age) values(‘alex‘,12);
insert into tb12(name,age) values(‘alex‘,12),(‘egon‘,25);
insert into tb12(name,age) select name,age from tb11; 复制某张表的特定内容
删
delete from tb12;
delete from tb12 where id != 2
改
update tb12 set name=‘alex‘ where id>12 and name=‘xx‘
update tb12 set name=‘alex‘,age=19 where id>12 and name=‘xx‘
查
select * from tb12;
select id,name from tb12;
select id,name from tb12 where id>10 or name=‘xxx‘;
select id,name as cname from tb12 where id>10 or name=‘xxx‘;
select id,name,11 from tb12
其他方式查
select * from tb12 where id !=1;
select * from tb12 where id in (1,5,12);
select * from tb12 where id not in (1,5,12);
select * from tb12 where id between 5 and 12;
select * from tb12 where id like "a%"; 以a开头的所有(多个字符串)
select * from tb12 where id like "a_"; 以a开头的所有(一个字符)
限制
[limit:限制你想要从表中提取的行数]
select * from tb12 limit 0,10; 其中0代表从什么位置开始取,10代表取几个数字
select * from tb12 limit 10,10;
page = input(‘>>>>‘)
page = int(page)
(page - 1) * 10
select * from tb12 limit 0,10 第一页
select * from tb12 limit 10,10 第二页
排序
select * from tb12 order by id desc; 大到小
select * from tb12 order by id asc; 小到大
select * from tb12 order by id desc limit 10; 取后10条数据
分组
select count(id),max(id),part_id from userrinfo5 gourp by part_id ha
****如果对于聚合函数结果进行二次筛选时,必须使用having****
聚合函数---count,max,min,sum,avg
连表操作
select * from student,class where student.class_id = class.cid
select * from student left join class on student.class_id = class.cid (效果是一样的,但是推荐使用第二个)
六、数据表基本数据类型
- 数字类型:
类型 | 大小 | 用途 |
---|---|---|
tingint | 1字节 | 小整数值 |
int | 4字节 | 大整数值 |
bigint | 8字节 | 大整数值 |
float | 4字节 | 单精度,浮点数 |
double | 8字节 | 双精度,浮点数 |
decimal | decimal(M,D),如果M>D,为M+2否则为D+2 | 小数值 |
- 时间类型:
类型 | 大小 | 格式 | 用途 |
---|---|---|---|
date | 3字节 | YYYY-MM-DD | 日期值 |
time | 3字节 | HH:MM:SS | 时间值或持续时间 |
year | 1字节 | YYYY | 年份值 |
datetime | 8字节 | YYYY-MM-DD HH:MM:SS | 混合日期 |
- 字符类型:
类型 | 大小 | 用途 |
---|---|---|
char | 0-255字节 | 定长字符串 |
varchar | 0-65535字节 | 变长字符串 |
varchar和char的区别
1. char的长度是不可变的, varchar的长度是可变
2. 定义一个char(10)和varchar(10),存入的数据都是‘alex‘,char所占长度依然10,出了alex之后还有6个空格,而varchar所占长度改为4
3.char的存取速度还是要比varchar快
4.char的存储方式,对英文字符(ASCII)占用1个字节,对一个汉字占用2个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节。