安装参照网上安装方法window下安装mysql及配置
window下
开启MySQL 服务 net start mysql
关闭MySQL服务 net stop mysql
linux下
开启MySQL服务 service mysql start
停止MySQL服务 service mysql stop
mysql 命令在linux与window下一致
进入mysql mysql -u 用户名 -p
查看数据库版本 select version();
查看当前时间 select now();
退出 exit 或者 quit
增 删 改 查 CRUD便是数据库的最重要操作
库的操作
展示所有数据库 show databases;
创建数据库 create database 数据库名 charset=‘编码格式’;
例如 create database school charset=‘utf8’;
创建一个数据库 名为school 编码格式 utf-8
删除数据库 drop database 数据库名;
例如 drop database school;
一般不会对数据库做修改
使用数据库 use 数据库名
例如 use school
查看当前使用数据库 select database()
表的操作
创建表 create table 表名 (字段名1 字段描述1,字段名2 字段描述2,。。。)
字段描述 int 整形 varchar 字符型 bit 位(0,1)
常用字段
例:
create table student(id int primary key auto_increment,name varchar(20) not null,age int default 17);
primary key 设置主键 auto_increment 设置自增 default 设置默认值
查看表的结构
格式: desc 表名;
格式2: show create table 表名; 查看创建表的sql语句
删除一个表
格式: drop table 表名;
修改表
1.修改表名
格式: rename table 旧表名 to 新表名;
2.修改表结构:
格式: alter table 表名 add|drop|change
1.添加一个新的字段
格式: alter table 表名 add 字段名 字段描述;
alter table student add phonenumber varchar(20);
2.删除一个字段
格式: alter table 表名 drop 字段名;
例: alter table student drop phone;
3.修改一个字段
格式: alter table 表名 change 要修改的字段名 新的字段名 新的字段类型描述;
例: alter table student change phonenumber phone varchar(20);
开发过程中尽量的不要修改已经有数据的字段 ,设计表的时候尽量设计一些预留字段
数据操作
增
即向表中插入数据
单条插入
格式 insert into 表名 values(值1,值2,。。。)
注:插入数据要与设计表中字段对应
或者 insert into 表名(字段名1,字段名3,) values(值1,值,3,。。。)
只将表名后括号内字段添加值
insert into student values(0,'张飞',28);
insert into student(age,name) values(25,'赵云');
添加多条
insert into student values (0,'刘备',33),(0,'马超',24),(0,'黄忠',50);
删
delete from 表名 where 条件
delete from student where id=1;
改
update 表名 set 字段名1=新值1,字段名2=新值2 where 条件
update student set name='甘宁',age=28 where id=5;
查询操作。
查询语句
1.格式1: select 字段名1,字段名n,… from 表名 where 查询条件
格式2: select 字段名1 as 别名,字段名n,… from 表名 where 查询条件
1.select表示查询
2.select 后面是查询结果要显示的字段名
例: select name,age from student;
3. * 表示显示所有字段的数据
4.from 后面是表名,表示从那个表中查询
5.where 条件 表示以某个条件进行筛选
6.如果没有where条件,表示查询所有
7.字段名1 as 别名 可以给显示的字段名取个别名,方便查看
需求: 展示所有的学生的姓名和年龄?
select name as ‘姓名’,age as ‘年龄’ from student;
查询所有: select * from 表名
2.查询条件 表达式
1.比较运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
= 等于
!= 不等于
需求: 查询班上大于60岁的学生 ?
例: select * from student where age > 60;
需求: 查询班上小于等于55岁的学生 ?
select * from student where age <= 55;
需求: 查询班上不等于55岁的学生 ?
select * from student where age != 55;
2.逻辑运算符
且 and
或 or
非 not
需求: 查询班上大于55岁且小于70岁的学生 ?
select * from student where age>55 and age < 70;
需求: 查询班上除了北京的学生
select * from student where not address = '北京';
3.模糊运算符
格式: … where 字段名 like ‘字符串’
任意字符: % 任意多个任意字符
_ 一个任意字符
需求: 查询姓张的同学?
select * from student where name like '张%';
需求: 查询姓张的同学,且只有2个字?
select * from student where name like '张_';
需求: 查询名字中包含 涵 字的同学
insert into student values(0,"张涵",66,"北京",1),(0,"柳涵",55,"北京",1),(0,"涵涵涵",67,"西安",1),(0,"涵娃娃",78,"北京",1);
select * from student where name like '%胖%';
4.范围运算符
成员运算符
格式1: … where 字段名 in (值1,值2,值3)
是否等于 () 中的某一个值
格式2: ... where 字段名 between 值1 and 值2
需求: 查询出住在北京或者 中南海或者.. 的同学 ?
select * from student where address in ('北京','中南海');
5.空值判断
格式1: … where 字段名 is null;
需求:将address为空的所有数据筛选出来?
… where address is null;
格式2: .... where 字段名 is not null;
需求:将address不为空的所有数据筛选出来?
…where address is not null;
6.运算符的优先级
1.以上运算符可以综合使用
2. 加上()
3.聚合函数
count(*) 统计查询结果的数量
max(字段名) 统计某个字段的最大值
min(字段名) 统计某个字段的最小值
avg(字段名) 统计某个字段的平均值
sum(字段名) 统计某个字段的总和
格式: select 聚合函数 from 表名 where 条件
需求: 查询该表总共有多少学生
select count(*) from student;
需求: 获取学生的最大年龄?
select max(age) from student;
需求: 统计年龄的平均值 ?
select avg(age) from student;
4.分组 group by
格式: select … from 表名 where 条件 group by 字段名
**统计某个字段有多少种值
需求: 查看有多少种地址 ?
select address from student group by address;
需求:查询每个地址有多少人?
select address,count(*) from student group by address;
需求: 再查询出中南海有多少人 ?
select address,count(*) from student group by address having address = '中南海';
having 条件 表示在某个结果集上继续筛选
注意: where 与having 后面都是跟一个条件表示查询,
但是where是先筛选, having是在where的结果后再筛选
5.排序 order by
格式: select … from 表名 where 条件 order by 字段名 排序规则;
需求:查询所有学生,并按年龄排序(升序,默认的) ?
select * from student order by age desc;
降序: desc
升序asc 默认的
需求: 多个字段排序
格式: select … from 表名 where 条件 order by 字段名 排序规则,字段名2 排序规则;
6.分页:
格式: select … from 表名 where 条件 limit 值1,值2;
例: select * from student limit 1,4;
值1 表示的是分页的起始位置, 注意: 从 0 开始
值2 表示的是每一页的结果数量
获取第n页数据, 每一页4条数据
select * from student limit 4(n-1),4;
开启远程连接
创建新用户:CREATE USER ‘用户名’@‘host名称’ IDENTIFIED WITH mysql_native_password BY ‘密码’;
给新用户授权:GRANT ALL PRIVILEGES ON . TO ‘用户名’@‘host名称’;
刷新权限: FLUSH PRIVILEGES;
创建远程连接只需将host名称改为 0.0.0.0即可