Mysql 的基本操作

一、修改/etc/mysql/my.conf 找到bind-address = 127.0.0.1这一行 改为bind-address = 0.0.0.0即可 二、为需要远程登录的用户赋予权限 1、新建用户远程连接mysql数据库 grant all on *.* to admin@’%’ identified by ‘123456’ with grant option; flush privileges; 允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个mysql server。 注意admin账户不一定要存在。 2、支持root用户允许远程连接mysql数据库 grant all privileges on *.* to ‘root’@’%’ identified by ‘123456’ with grant option; flush privileges; 修改数据库密码     mysqladmin -u root -p password 123456 mysql 5.6之前版本: update user set password=password(‘abc’) where User=’root’; mysql 5.7版本: update mysql.user set authentication_string=password(‘123456’) where user=’root’ and host=’%’;; mysql 8.0版本:ALTER user ‘root’@’localhost’ IDENTIFIED BY ‘123456’ 显示所有数据库 show databases 创建数据库 创建一个my_test数据库,并将它的数据库编码设置为utf8编码 create database my_test character set utf8; ##character [ˈkærəktɚ]  特征,特点; 选择和进入一个数据库   use my_test; 删除指定数据库   drop database user; 数据库一旦创建,名称是无法修改的,在mysql数据库中,字符串类型和日期类型的数据,必须要使用单双引号

数据定义语言DDL

查询 显示所有表 show tables 查看表字段   desc user ##desc在SQL语言中,代表降序 查看表详细结构,包含创建命令,表编码,表类型 show create table uers; 新增 新建表 新建一个名称叫user的表,它包含三个字段id设置为整数,username设置为最长10位字符串,password最长为16位 create table user(id int,username varchar(10),password varchar(16)); 新增表字段 在一个表中新增一个mail字段,最大长度为30位 alter table user add mail varchar(30); ##alter [‘ɔltɚ]    变更,改变; 修改 修改表字段数据类型 修改user表id字段的类型为bigint alter table user modify id bigint; #modify  [ˈmɑdɪfaɪ]    修改,修饰; 修改表的称 将表user改名为users rename table user to users; 修补表编码 修改users表的编码为utf8 alter table users character set utf8; 修改表的字段名(列名) 修改user表下的mail字段,新命名为mails数据类型varchar,限制成30位 alter table users change mail mails varchar(30); 删除 删除表 drop table users; 删除表字段 删除一列的邮箱字段 alter table user drop mail; ##drop [drɑp] 下降,终止;

数据操作语言DML

查询 查询表数据 查看users表所有数据 select * from users 查询指定列(字段)所有数据 select username,mails from users 新增 新增(插入)表数据 在users新增一个id为2,名称为admin,密码为123456,邮箱为123@qq.com的数据,命令全部用空格隔开 insert into users (id,username,password,mails) values (2,’admin’,’123456’,‘123@qq.com’); 新增(插入)表多个数据 插入多个数据时,将多个数据用逗号‘ , ’隔开 insert into users (id,username,password,mails) values (1,’user’,’123456’,‘user@qq.com’),(2,’admin’,’123456’,‘123@qq.com’); 修改 更改表数据 更新users表id为2的所有数据,将username更为‘admin’,如果没有where指定条件,则会更新这个表的全部数据的username update users set username=’admin’ where id=2; 表数据运算 更新users表username=‘admin’的所有数据,将id加1,除了加法,还可以加减乘除,但必须是数字;如果没有where指定条件,则会更新这个表的全部数据的id update users set id=id+1 where username=’admin’; 删除 删除表中的所有的所有数据 delete from users; 删除表中的指定数据 删除users表中的id为1的数据 delete from users where id=1 清空表结构,并重新创建同样的表覆盖原表 它跟delete的区别是,delete支持数据找回,truncate不支持数据找回,并且truncate比delete执行速度快 truncate table users;

数据查询语言DQL

条件查询 where后面可以跟的查询条件

  1. =(等于),!=(不等于,<>(不等于),<(大于),>(小于),<=(大于或等于),>=(小于或等于);
  2. between ……and :值在什么范围
  3. in(1,2)    是否在这个范围里面
  4. is null(为空)和is not null(不为空)
  5. and: 与
  6. or:或者
  7. not;非

根据上面的查询条件,给一些示例

  1. 查询id大于3  select * from users where id>3;
  2. 查询id的值在1和5之间的   select * from users where id between 1 and 5;
  3. 查询id的值等于1、2和3    select * from users where id in(1,2,3);
  4. 查询id不为空的   select * from users where id is not null;
  5. 查询id等于1和username等于a123的     select * from users where id=1 and username=’a123’
  6. 查询id等于1或者username等于a123的   select * from users where id=1 or usernmae=’a123’
  7. 查询所有id不是1的    select * from users where not id=1;

模糊查询 模糊查询关键字like,%代表任意几个字符,_代表任意一个字符 查询users表username中以a字符开头和a字符结尾的任意字符 SELECT * FROM users WHERE username LIKE ‘a%’ 查询users表username中以a字符开头和a字符结尾的任意4位组成的字符 SELECT * FROM users WHERE username LIKE ‘a__a’ 去重查询 查询users表中的username字段并且去除重复字段 SELECT DISTINCT username from users; distinct   [dɪˈstɪŋkt]   明显的,清楚的; 查询结果运算 对查询字段直接进行相加,要输数据都是数字 提取users所有的字段,生成一个新字段,新字段的值为id+3 SELECT *,id+3 as newid from users; 判断如果id大于3就返回1,如果不大于3或者null就返回0 SELECT *,IF(id>3,1,0) as newid from users; IFNULL(expr1,expr2)   expr1为判断对象,如果为null,那么它的值就为expr2 查询排序 倒序排序从大到小,默认是ASC从小到大 查询users里面的表,按照id从大到小排序 SELECT * from users ORDER BY id DESC; 指定二级排序 查询users里面的表,按照id从大到小排序,两个id一样时,那两个一样的id就按照number进行从大到小的排序 SELECT * from users ORDER BY id DESC,number DESC; 聚合函数 count 统计 统计表数据总数 统计users表中总共有多少条数据 SELECT COUNT(*) FROM users; 统计字段数据总数 统计在表中有id的数据总共有多少条,如果id为none就不会统计改值 SELECT COUNT(id) FROM users; 它后面还可以更上条件查询where,例如我们想查询id大于3数据的总数 SELECT COUNT(id) FROM users WHERE id>3; AVG 统计平均值,SUM统计总和 统计id值大于3的总和and平均数 SELECT AVG(id),SUM(id) FROM users WHERE id>3; MAX 最大数,MIN最小数 统计id值大于3的最大值and最小值 SELECT MAX(id),MIN(id) FROM users WHERE id>3; GROUP BY分组查询

  1. GROUP BY  分组统计id字段
  2. GROUP_CONCAT(score)  统计按照id来进行分组,score字段的所有数据
  3. MIN(score)      统计每组score中最小值
  4. MAX(score)     统计每组score中最大值

SELECT id,GROUP_CONCAT(score),MIN(score),MAX(score) FROM users GROUP BY id; Hvaing二次条件查找 除了WHERE可以进行条件查找,HAVING可以根据WHERE查找出来的数据,进行二次查找 SELECT id FROM users WHERE id>2 HAVING s>50; WHERE和HAVING的区别 1.HAVING可以使用聚合函数,而WHERE不能使用聚合函数 2.HAVING可以放在GROUP BY后面,配合它进行结合使用,而WHERE必须放在GROUP BY的前面 SQL查询语句书写循序: select > from > where > GROUP BY > having > order by > limit 选择字段  》 来自哪个表 》查询条件 》分组查询 》二次条件查询 》排序