• ubuntu 下安装mysql
  • 安装服务器端:在终端输入以下命令:

sudo apt-get install mysql-server

  • 启动服务

sudo service mysql start

  • 查看进程是否启动

ps ajx|grep mysql

  • 停止服务

sudo service mysql stop

  • 重启服务

sudo service mysql restart

  • 进入mysql

mysql -uroot -p
输入数据库密码

  • 退出mysql

quit/exit

  • 查看操作

select version(); [查看数据库版本]
select current database(); [ 查看当前使用的数据库]
show databases; [ 查看所有数据库]
show tables; [查看所有表]

  • 切换数据库

use 数据库名

  • 创建、删除(数据库,表)

create database 库名 [ 创建数据库]
create table 表名(字段1 类型 约束,字段2 类型 约束,…) [ 创建表]
drop database 库名 [删除数据库]
drop table 表名 [ 删除表]

  • 修改表操作

alter table 表名 add 新字段名 类型 约束;[增加表字段]
alter table 表名 modify 字段名 类型 约束;[ 修改字段类型约束]
alter table 表名 change 原字段名 新字段名 类型 约束; [重命名字段重定义类型约束]
alter table 表名 drop 字段名; [删除表中字段]

  • 查看表操作

desc 表名 ; [查看表字段及其类型约束]

  • 查询表操作

select * from 表名 ;[查询表中所有数据]
select 字段名1,字段名2… from 表名; [查询表中某字段的数据]
select * from 表名 where 条件; [根据条件查询表中的数据]

  • 增加表数据操作

insert into 表名 values(),(),… ;
insert into 表名(列名1,列名2…) values(值1,值2),(值1,值2);

  • 修改表数据操作

update 表名 set 字段**名=值 where 条件 [根据条件修改表中字段的数据]

  • 删除表数据操作

delete from 表名;[删除表中所有数据]
delete from 表名 where 条件 ;[根据条件删除数据]

  • 起别名

我们可以对要查询的字段或者表起别名,方便多表书写数据,注意表别名要和字段名相对应;
select gender,age from students where class=‘一班’;
起别名后
select s.gender,s.age from students as s where class=‘一班’;

  • 数据库查询之去重(distinct)

当我们查询表中有重复的数据时可以进行去重
select distinct gender from 表名 where age<30;

  • 数据库查询之 分组(group by),order by (排序)

--------- 创建数据库,表并插入数据---------------
create database test_d;
use test_d;
create table test_t(
id int unsigned not null primary key auto_increment,
name varchar(20) not null,
gender enum(“男”,“女”) not null,
age int not null
);
insert into test_t values(null,‘孙权’,‘男’,30),(null,‘孙尚香’,‘女’,23),(null,‘孙策’,‘男’,40),(null,‘孙坚’,‘男’,57),(null,‘周瑜’,‘男’,41),(null,‘甘宁’,‘男’,39),(null,‘干皇后’,‘女’,15),(null,‘糜夫人’,‘女’,36),(null,‘王异’,‘女’,19),(null,‘马超’,‘男’,27),(null,‘马岱’,‘男’,22);

--------- 由分组查询数据 ---------------
select gender from test_t group by gender;
select gender,group_concat(name) from test_t group by gender; [注意 group by 中 select 后面只能查询分组的字段名和函数 , group_concat[字段名]]
select gender,group_concat(name) from test_t where age < 30 group by gender;[ where 条件要在 group by 前面]
--------- 由排序查询数据 ---------------
select name from test_t order by age;
select name from test_t order by age desc;
--------- 由分组查询数据并排序 ---------------
select gender,group_concat(name),concat(age),avg(age) from test_t where age <35 group by gender order by avg(age) desc; [group by 和 order by 同时使用时注意 order by 后面只能跟select查询的字段,即只能跟分组的字段名和函数]

  • 内连接(inner join …on )

两个表根据各自一个字段进行连接,字段中的类型,约束要相对应。查询会返回两个表的所有字段,最后如果存在两个表中不对应的数据则不对应的数据不会显示
select * from 表名1 inner join 表名2 on 表名1.字段名1=表名2.字段名2 where 条件; [注意此时如果两个表中字段名有重复,比如说两个表中都要 name 字段,那么就会报错,如果有重复,可以通过给重复字段名起别名的方式来处理]

  • 外连接(left join …on 和 right join …on)

left join …on 中左边是主表,右边是从表
right join …on 中右边是主表,左边是从表
当两个表中有不对应的数据时会显示主表中的数据,此时从表字段名中不对应数据的值为null

  • 自连接(自己表中的两个字段相匹配)
    python -14 -数据库操作

  • 逻辑运算符
    and 且
    or 或
    not 非

  • 模糊查询(like)
    1.like
    2.% 表示任意多个任意字符
    3._ 表示一个任意字符

select name,age from 表 where name like=’%王%’;[查询姓名中含有 ‘王’ 的]
select name,age from 表 where name like =‘王__’;[查询姓名中以’王’字开头,并且一共三个字的]

  • 范围查询
    1.in() :括号里相当于或,不连续
    2.between … and … :一段连续的范围

select name from 表 where age in(10,25,31);[查询年龄是10岁,25岁,31岁的人的名字]
select name from 表 where age between 10 and 35 ;[查询年龄在10到35岁之间的人的名字]

  • 空值判断(is null,is not null)

select * from 表名 where height is null;[查询身高填写为空的人的信息]
select * from 表名 where height is not null;[查询身高填写不为空的人的信息]

  • 聚合函数

max(列) 最大值
min(列) 最小值
avg(列) 平均值
sum(列) 求和
count(*) 计算不包括null的总行数

  • limit 限制记录

limit 起始记录,记录数**
limit 记录数
select * from goods limit 5,2;[从下标为5的行开始,取2个数据]
select * from goods limit 2; [取2个数据]
分页(网站分页,例如百度搜索出来每一页)
公式 limit(下标-1)*显示数量,显示数量;

  • 子查询(查询中嵌套查询,且每个查询都是完整的查询语句)

标量子查询 [一行一列即一个值]
列子查询 [一列多行]
行子查询 [一行多列]
表子查询 [多行多列]

**SQL语句的完整格式 _ 不要被吓到 其实很简单 ! _ !

SELECT select_expr [select_expr,…] [
FROM tb_name
[JOIN 表名]
[ON 连接条件]
[WHERE 条件判断]
[GROUP BY {col_name | postion} [ASC | DESC], …]
[HAVING WHERE 条件判断]
[ORDER BY {col_name|expr|postion} [ASC | DESC], …]
[ LIMIT {[offset,]rowcount | row_count OFFSET offset}]
]**

相关文章: