1.Windows10如何安装MYSQL
1.安装MYSQL
2.以管理员身份运行命令提示符
3.如图找到安装MYSQL的路径,精确到bin文件夹下
4.输入mysqld -install,提示成功
5.输入mysqld –initialize –console进行初始化,初始化完毕后,MYSQL文件夹中会多出一个名为’data’的文件夹,同时命令提示符窗口会告诉你一个随机初始密码,密码在在’root’@’localhost’后面
6.然后输入net start mysql,启动MYSQL,服务启动成功后关闭管理员命令提示符窗口
7.按Windows+R键进入运行窗口,然后输入cmd进入命令提示符
8.输入mysql -u root -p进入MYSQL,然后输入密码
9.然后通过ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘new_password’;更改密码,其中new_password就是新密码,可以自行修改。
2.MYSQL的常见命令
使用数据库:
use 数据库名; //使用数据库
显示所有数据库:
show databases; //显示所有数据库
显示所有表:
show tables; //显示所有表
查看表的结构:
desc 表名; //查看表的结构
自增列:
主要用来给主键一个唯一值
create table 表名(
列名 数据类型 约束 auto_increment, //产生一个自动增长的值
);
//由初始值开始自增
create table 表名(
列名 数据类型 约束 auto_increment, //产生一个自动增长的值
) auto_increment=初始值;
//插入数据时可以省略该列
insert into 表名(列名) values('信息');
表中数据的默认值(default):
create table 表名(
列名1 数据类型 约束 auto_increment,
列名2 数据类型,
列名3 数据类型 default '信息', //默认值为'信息';
lastmodify timestamp default current_timestamp on update current_timestamp
);
2.1 DDL(数据定义语言):
2.1.1 create(创建数据库、表、视图、索引…):
create database 数据库名; //创建数据库;
create table 表名{ //创建表;
列名1 数据类型 约束语句,
列名2 数据类型 约束语句,
列名3 数据类型 约束语句,
...
约束
};
2.1.2 drop(删除数据库、表、视图、索引…):
drop database 数据库名; //删除数据库,包含内部信息;
drop table 表名; //删除表,包含内部信息;
2.1.3 alter(修改表):
alter table 表名 add 新列名 数据类型; //给表新添加一列;
alter table 表名 modify 列名 数据类型; //给表的一列更改数据类型或参数;
2.1.4 truncate(截断):
truncate table 表名; //保留表的定义,仅删除表内信息,效率高,但无法与事务结合,删除的表无法恢复;
2.2 DML(数据操控语言):
2.2.1 insert(插入数据):
2.2.1.1 向表中插入数据:
标准语法:
insert into 表名(列1,列2,…列n)values(值1,值2,…值n);//向表中插入一行数据;
insert into 表名(列1,列2,…列n)values(值1,值2,…值n);//向表中插入多行数据;
insert into 表名(列1,列2,…列n)values(值1,值2,…值n);
insert into 表名(列1,列2,…列n)values(值1,值2,…值n);
mysql语法:
insert into 表名(列1,列2,…列n)values(值1,值2,…值n);//向表中插入一行数据;
insert into 表(列1,列2,…列n) values
(值1,值2,…值n),(值1,值2,…值n),(值1,值2,…值n)...;//向表中插入多行数据;
2.2.1.2 向表中插入另一张表的数据:
insert into 表1(列1,列2...) select 列1,列2... from 表2;//向表1插入表2的数据;
2.2.2 update(修改数据):
update 表名 set 列1=新值1,列2=新值2,…; //修改表中列的信息;
2.2.3 delete(删除数据):
2.2.3.1 删除表中全部信息:
delete from 表名;//删除表中的信息,可以恢复;
2.2.3.2 级联删除:
foreign key(列名) references 表名(列名) on delete cascade;//删除与表中该列有关的所有数据;
2.2.4 select(查找数据):
select 列名 from 表名; //查找表中该列的信息;
select * from 表名; //查找表中所有列的信息;
2.3 DCL(数据控制语言):
2.3.1 grant(授权)
2.3.2 revoke(回收授权)
2.4 TCL(事务控制语言):
2.4.1 start transaction(开始事务)
2.4.2 commit
2.4.3 rollback
3.MYSQL的数据类型
3.1整数类型
- int -2^31 ~ 2^31-1 四个字节
- tinyint 一个字节
- smallint 两个字节
- bigint 八个字节
3.2小数类型
3.2.1浮点类型
- FLOAT
- DOUBLE
3.2.2定点类型
小数部分不会丢失精度,占用空间高
DECIMAL(p, s),其中p为有效数字长度,s为小数位数
tips:
//decimal(5, 2)
//123.77 ok
//1234.44 存不下
//123.456 四舍五入小数部分变为46
3.3字符串类型
- char(最大长度),定长的字符类型
- varchar(最大长度),变长的字符类型
tips:
//name char(5)'abc',存储后为'abc ',用空格补齐不足的部分, 在查询时会去掉, 效率高,但占用空间多,最大值为255
//name varchar(5)'abc',存储后为'abc',不会用空格补齐,不会占用额外空间,效率较低,最大值为65535
3.4日期类型
- datetime:包括年月日时分秒,时间范围长(1000-1-1 ~ 9999-12-31)
- date:只包括年月日
- time:只包括时分秒
- timestamp:包括年月日时分秒,时间范围短(1970-1-1 ~ 2038-1-19)
**tips:**now()获取当前时间
4.约束
- unique(唯一约束,表示该列的取值唯一,一个表中可以有多个列被唯一约束)
- not null(非空约束,表示该列的取值不能为空)
- primary key(主键约束,表示该列的取值唯一且不能为空,一个表只能有一个主键)
- foreign key(外键约束,检查两表的关系列是否合法,被引用的列必须在被引用的表中是唯一的)
- primary key(列名1,列名2,…)(联合主键约束,表示用多个列作为主键,多个列各自都不是唯一的,但是联合起来是唯一且不为空的)
tips:其他约束可以在类型后声明,也可以单起一行声明:
create table student(
sid int primary key,
sname varchar(20),
not null(sname)
);
但外键必须单起一行声明:
create table sc(
sid int,
foreign key(sid)references student(sid),
cid int,
foreign key(cid)references course(cid),
score int
);
创建联合主键:
create table 表名{
列名1 数据类型 约束,
列名2 数据类型 约束,
primary key(列名1,列名2) //联合主键
};
删除联合主键:
alter table 表名 drop primary key,add primary key(`列名`); //删除联合主键,创建一个新的主键;
5.特殊语法
5.1 条件运算符
- = (表示相等)
- != (表示不相等)
- > (表示大于)
- < (表示小于)
- >= (表示大于等于)
- <= (表示小于等于)
5.2 逻辑运算符
- and (并且)
- or (或者)
- not (取反)
- is null (为空)
- is not null (不为空)
5.3 条件查询
where:
select * from 表名 where 条件;//查找表中所有满足条件的数据;
5.4 模糊查询
like:
select * from 表名 where 列名 like 'S%';//查找表中以S开头的数据;
//通配符'%': 表示可以匹配零个或多个任意字符;
//通配符'_': 表示匹配一个任意字符;
5.5 范围查询
between:
select * from 表名 where 列名>=1000 and 列名<=2000;
//等价于
select * from 表名 where 列名 between 1000 and 2000;//查找表中该列在1000到2000之间的数据;
//必须按由小到大的顺序;
//包括等于;
in:
select * from 表名 where 列名='数据1' or 列名='数据2';//查找表中数据为'数据1'或'数据2'的列;
//等价于
select * from 表名 where 列名 in ('数据1', '数据2');
5.6 排序
order by:
order by 列名1 asc, 列名2 desc, ...;//按列名1的asc(升序)排列,若数据相等则按列名2的desc(降序)排列;
5.7 分组
group by:
select 列名1,组函数 from 表名 group by 列名1 having 条件;//以列名1分组,查找表中符合条件的列名1的数据和组函数;
//select,order by中的列必须和group by中的列相同;
//没有包含在group by语句中的列,必须和组函数一起使用;
多列分组:
select 列名1,列名2,组函数 from 表名 group by 列名1,列名2;//列名1和列名2的数据都相同时分为一组;
5.8 限制返回的结果数
limit:
limit m,n; //从索引m开始,限制最多返回n行数据;
5.9 语法顺序
//where先进行一遍条件过滤,再执行group by进行分组,再执行having中的条件, 再执行select,再执行order by,最后执行limit
5.10 别名
列别名:
select 列名 别名 ...;
//或者
select 列名 as 别名 ...;
表别名:
select ... from 表名 别名;
6. 函数
常用的函数:
6.1 时间加减
date_add:
select date_add(原始时间,interval 数字 时间单位);//时间加减;
6.2 提取时间
extract:
extract(时间单位 from 原始时间)//从原始时间提取某个部分,返回一个整型数据;
6.3 类型转换
cast:
select cast('数据' as 数据类型);//将其他类型数据转换成目标类型数据;
6.4 拼接字符串
concat:
select concat('字符数据1', 整型数据, '字符数据2'); //可以把其它类型当做字符串拼接
6.5 求长度
char_length: 以字符为单位统计长度
length:以字节为单位统计长度
//不管汉字还是数字或者是字母都算是一个字符
char_length(str);
//utf8mb4编码下,一个汉字算三个字节,一个数字或字母算一个字节
//其他编码下,一个汉字算两个字节, 一个数字或字母算一个字节
length(str);
6.6 判断
case … end:
case
when 条件1 then 值1 //满足条件1则返回值1;
when 条件2 then 值2 //满足条件2则返回值2;
...
else 值n //都不满足则返回值n;
end from 表名;
6.7 去重
distinct:
select distinct 列名 from 表名; //去掉表中列的重复数据后列中有哪些数据;
6.8 组函数
max:最大值
min:最小值
avg:平均值
sum:求和
count:个数
max(列名);//查询该列的最大值
min(列名);//查询该列的最小值
avg(列名);//查询该列的平均值
sum(列名);//查询该列的和
count(列名);//去掉null,查询该列中行的个数
count(*);//查询表中行的个数
6.9 查询帮助
? contents; //总目录;