一,数据库安装
ubuntu下安装:
sudo apt-get install mysql-server mysql-client
启动:
service mysql start
停止:
service mysql stop
重启:
service mysql restart
允许远程连接:
1. 找到mysql配置文件:
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
2.将bind-address=127.0.0.1注释
3.登录mysql:
mysql -uroot -p
4.输入密码进入后授权:
grant all privileges on *.* to 'root'@'%' identified by 'mysql' with grant option;
flush privileges;
5.重启mysql
二,字段类型:
在mysql中包含的数据类型很多,这里主要列出来常用的几种
数字:int,decimal(例如:decimal(5,2)代表一个5位数,其中2位是小数)
字符串:varchar,char (其中char是固定字符,varchar是非固定字符)
日期:datetime
布尔:bit
三,约束:
主键primary key
非空not null
惟一unique
默认default
外键foreign key
四,数据库操作:
创建数据库:
create database 数据库名 charset=utf8;
删除数据库:
drop database 数据库名;
切换数据库:
use 数据库名;
查看当前所选择的数据库名:
select database();
查看msql中有哪些数据库:
show database;
五,表操作:
查看当前数据库中的所有表:
show tables;
创建表(举个student表例子):
create table students(
id int auto_increment primary key not null,
sname varchar(10) not null,
gender bit,
isdelete bit default 0
);
查看表结构:
desc 表名;
删除表:
drop table 表名;
更改表名称:
rename table 原表名 to 新表名;
修改表:
alter table 表名 add|change|drop 列名 类型;
如:
删除属性字段:alter table student drop gender;
添加hobby属性:alter table student add hobby varchar(20);
改变属性:alter table student change name name varchar(20) not null;
六,数据操作:
查询:
select * from 表名;
插入数据:
全列插入:insert into 表名 values(...);
缺省插入:insert into 表名(列1,...) values(值1,...);
同时插入多条数据:insert into 表名 values(...),(...)...;
或insert into 表名(列1,...) values(值1,...),(值1,...)...;
修改数据:
update 表名 set 列1=值1,... where 条件;
物理删除(真实删除一条数据):
delete from 表名 where 条件;
注:相反有逻辑删除,即将属性isdelete改为要删除的值。
七,数据库查询语法:
1.条件:
select * from 表名 where 条件;
2.比较运算符:
>,<,=,!=,<>,>=,<=
如查id小于等于4的科目信息
select * from subject where id<=4;
3.逻辑运算符:
and,or,not
如查询id大于3的女生信息
select * from student where id>3 and gender='女';
4.模糊查询:
like
%表示任意多个任意字符
_表示一个任意字符
如查询姓张的学生信息
select * from student where sname like '张%';
5.范围查询:
in,between....and...
查询学号是1或3或4的学生
select * from student where id in (1,3,4);
查询学号从1至5的学生
select * from student where id between 1 and 5;
6.空判断
is null,is not null
查询爱好为空的学生
select * from student where hobby is null;
7.聚合
查询学生总数
select count(*) from student;
查询女生id最大值
select max(id) from student where gender='女';
查询女生id最小值
select min(id) from student where gender='女';
查询男生id总和
select sum(id) from student where gender='男';
查询男生id平均值
select avg(id) from student where gender='男';
8.分组
按照字段分组,表示此字段相同的数据会被放到一个组中,可以对分组后的数据进行统计,做聚合运算
查询男女生总数
分组后可进行筛选数据
select gender,count(*) from student group by gender having gender='男';
having 与 where的区别:
where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
having是对group by的结果进行筛选
9.排序
语法:
select * from 表名
order by 列1 asc|desc,列2 asc|desc,...
查询未删除男生学生信息,按学号降序
select * from student
where gender='男' and isdelete=0
order by id desc;
10.分页
语法:
select * from 表名
limit start,count;
从start开始,获取count条数据
start索引从0开始
如:
11.总结
完整的select语句:
select distinct *
from 表名
where ....
group by ... having ...
order by ...
limit star,count
执行顺序:
from 表名
where ....
group by ...
select distinct *
having ...
order by ...
limit star,count
注:实际使用中,只是语句中某些部分的组合,而不是全部