1.在终端中输入添加MySQL路径的命令:
PATH="$PATH":/usr/local/mysql/bin
2.查看文件的权限
ls -l /etc/my.cnf
3.修改文件的权限为root权限
chmod 644 /etc/my.cnf
4.查看mysql的进程
ps -e|grep mysql
5.杀死mysql 进程
sudo kill -9 mysql的进程号
mysql 数据库命令
DDL语句
(DDL语句)以';'或者\g结束语句
6.查询系统里有多少数据库
show databases;
7.创建名字为b1的数据库
create database b1
8.选择要操作的数据库(b1 数据库)
use b1
9.查看数据库中的表(先用use选出要操作的数据库)
show tables
10 删除b1数据库
drop database b1
11.创建表
create table 表名(
字段1名 字段1类型 列的约束条件,
字段2名 字段2类型 列的约束条件,
...
)
列的约束条件,可加可不加
实际敲代码:create table t1(id1 int,id2 int);
12.查看表属性
desc 表名
例子:desc t1; 展示t1表
13.展示创建表语句:跟desc 语句差不多都是展示用的(没有分号)
show create table t1\G
14.删除表
drop table 表名;
15.表内容的增删改查
[]里的可加可不加:
*1. 修改字段的属性:
alter table 表名 modify [column] 字段定义 [first|after 字段名]
例子:alter table t1 modify tinyint;
*2.增加字段:
alter table 表名 add [column] 字段定义 [first|after 字段名]
例子:alter table t1 add id3 int;
*3.删除表字段
alter table 表名 drop [column] 字段名
例子:alter table t1 drop id3;
*4.字段改名
alter table 表名change [column] 旧的字段名 新字段名 字段定义
例子:alter table t1 change id2 id4 int;
*5.更改表的名字
alter table 表名 rename [to] 新表名;
例子:alter table t1 rename to t2;
DML语句
- 修改表内容语句
*1.插入记录
insert into 表名 (字段1,字段2,...字段n) value (值1,值2,...值n)
可以不指定字段名,但值的排序要跟字段的排序一致。
例子:insert into t1 value (1,20);
例子:一次插入多条数据:insert into t1 (age,id1) values (25,2),(30,3);
*2.更新记录
@1>更新一个表
update 表名 set 字段1=值1,字段2=值2,...字段n=值n [where 条件];
例子:update t1 set age=70 where id =2 and age=23;
@2>更新多个表
update 表名,表名 set 表名.字段=值,表名.字段=值 [where 条件]
例子:update t1,t2 set t1.age=2,t2.age=20 where t1.id=t2.id;
*3. 删除记录
@1>删除单表中的记录
delete from 表名 [where 条件]
例子:delete from t1 where id=1;(条件不加。整个表的内容就都删除了,慎重)
@2>删除多表中的记录
delete 表名,表名...表名 from 表1,表2...表3 [where 条件]
*4.查询:
@1>.简单的查询
select * from 表名 ;
*的意思是查看全部的字段。
@2>.查询不重复的记录。
select distinct * from 表名;
@3>.条件查询
条件:“=,>,<,>=,<=,!=,or,and”
例子: select * from t1 id=1 or id=2;
@4.排序和限制
asc 由低到高,desc 由高到低。order by
例子1:select * from t1 order by salary asc,id desc;
例子1的意思先按照salary 由低到高排序,再按id 由高到低排序。
例子2:select * from t1 order by salary asc,id desc limit 2,6;
limit 1,取出第一条来,limit 2,6从第2 条开始取出6条数据来。
5.聚合
① sum 求和
select sum(salary) from t1; (切记:没有 * 号)
②count 记录总数
select count() from t1;
③max 最大值,min 最小值
④ GROUP BY 按分组 聚合
例子:select department,sum(salary) from t1 group by department;
⑤ WITH ROLLUP 获得分类后的再得到总的
⑥ having 对聚合后的结果进行条件过滤。等同于where
但是where 是先过滤,having 是先聚合,后过滤。
17.表连接
可以给表或者字段起别名:
①连接分类
内连接:选取两张变表中相互匹配的记录。
select * from t1,record where t1.id = record.eid;
外连接:不仅仅选取两张相互匹配的记录,并且会选出其他不匹配的记录。
左连接:
select *from t1 left join record on t1.id = record.eid;
left join 左边的表的内容会全展示出来。
右连接:
select *from t1 right join record on t1.id = record.eid;
右边表的内容全展示出来。
18.子查询
*需求:一个查询需要另一个查询的结果参与的时候
①:in
一张员工表t1,一张记录员工迟到事件的表late。查询出迟到的员工。
select * from t1 where id in (select distinct eid from late);
如果查询的结果只有一个,那么in 可以写成 =
②:not in 与上面的相反。
③:exists 存在,
select * from t1 where exists (select * from late where t1.id=late.eid);
只要后面语句有记录返回,就是ture,记录内容是null 也是ture ,没找到结果就当false 处理;
执行过程相当与双重循环。
④: not exists 与上面相反。
⑤:记录联合 : union union all
区别:union 会去重复后合并 union all 不去重复
合并的条件:想要合并必须两个表的列数是一样的。
mysql 的数据类型
19 数字类型
整形
tinyint smallint mediumint int bigint
类型属性
auto_increment 自增,必须整形数,必须设置成主键
not null 字段不能设置为空
default 111 字段默认是111
设置主键
create table t3(id int,name int,primary key(id));
忘记设置了,添加主键
alter table t3 add primary key (id)
删除主键
alter table t3 drop primary key
小数
float double
定点数: decimal(6,2)总共6位,小数点后2位,不四舍五入
20 .日期类型
1,datetime now()函数获取当前时间。
alter table t4 add time datetime;
insert into t4 (time) value (now())
21.字符串类型
①:char(M) 字符最长存M个字符 cahr 最长255个字符,中英文都是255个字符
create table t5 values(ch char(8));//字符串长度不能超过8个
②:varchar(M) 最长 65535个字符
alter table t5 add varch varchar(10) 添加的时候必须指明长度
③:枚举类型 enum
alter table t5 add enum enum('man','woman');
insert into t5 (enum) values ('man'),('woman');
//只能插入man 跟woman 不能插
入其他值(单选)
④:set 类型(跟enum类似)
insert into t5 (set) values ('man,woman');//一条记录可以是man 也可以是woman
枚举的查询语句:
select * from t5 where find_in_set('man',set);//在set 集合里找带man 的记录。
show character set;//查看mysql 支持的编码。
22.查看数据库字符集跟校验规则
show variables like 'character_Set_database';
创建数据库的时候指定字符集
create database d4 default character set gbk;
查看客户端,连接层,服务器端的字符集是什么。
show variables like 'character_set_%';
设置各个层的字符集
set character_set_client = gbk
23 mysql 支持 + -* / % 运算符
between and, in , is null ,is not null,like,
like 通配符 select 'abcee' like '%b%';
24 mysql 函数
借有下网友的整理吧,懒得整理了
https://www.cnblogs.com/slowlyslowly/p/8649430.html
其他函数
select database(); 返回数据库名字
select version();数据库版本
select user();//返回当前登录用户名
select md5('abdd');//返回字符串的MD5加密结果