数据库操作
1:// 查看mysql是否启动
service mysql status
2:// 启动mysql服务
service mysql start
3:// 重启mysql服务
service mysql restart
4:// 停止mysql服务
service mysql stop
5:// 连接Mysql
mysql -u root -p
6:// 创建数据库book
create database book
7:// 查看所有数据库
show databases
8:// 删除数据库book
drop database book
9:// 选择数据库book
use book
表操作
10:// 创建一个数据库表city,创建表字段city_id为自增主键,其余city_name、city_body、city_email为varchar类型、其中,city_name不能为空,其余信息补充完整 #创建表
create table city (
city_id int not null auto_increment,
city_name varchar(100) not null,
city_body varchar(100),
city_email varchar(100),
primary key (city_id)
)engine=innodb default charset=utf8;
11://在city表中添加一个city_date字段,要求字段类型date,并且不能为空 #添加字段
alter table city
add city_date date not null;
12:// 删除city表中的city_date字段 #删除字段
alter table city
drop column city_date;
13://修改city表名称为new_city #修改表名
alter table city
rename new_city;
14://修改字段名
alter table student
change 旧字段名 新字段名 类型;
数据查询
15:// 查询book表中book_id,book_name列 #查询多个列
select book_id,book_name from book;
16://查询book表中所有列 #查询所有列
select * from book;
17://查询book表的前15行数据 #查询行数
select * from book limit 15;
18://查询book表的第15行数据 #查询指定行数
select * from book limit 14,14;
19://查询book表中book_name字段内容,并去重查询 #去重查询
select distinct book_name from book;
20://按book表中book_name进行正序排序 #按字段排序(正序)
select * from book order by book_name;
21://在book表中,先按book_id倒叙排序,再按book_name正序排序; #倒叙,多个字段排序
select * from book
order by book_id DESC,book_name;
22://在book表中,查询book_id等于3的学生,并仅返回学生姓名book_name字段 #条件查询
select book_id,book_name from book
where book_id=3;
23://在book表中,查询所有book_email是空的列表数据 #筛选为null的数据
select * from book
where book_email is null;
24://在book表中,查询book_id大于10并且book_name为‘test’的数据; #组合条件查询
select * from book
where book_id > 10 and book_name=‘test‘;
25://在book表中,查询book_id不等于3或者不等于5的数据 #组合条件查询
select * from book
where book_id != 3 or book_id != 5;
26://查询book表中,book_id_不等于3和等于4的所有数据,使用in #in操作符使用
select * from book
where book_id not in (3,4);
27://查询book表中,book_name字段中,所有以‘小‘字开头的书; #通配符使用
select * from book
where book_name like ‘小%‘;
28://计算某列的平均值 #聚合函数:计算平均值
select avg(number) from score
where student_id=1
只用于单个列 AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数。
28补充://去重后,进行某列平均值计算 #去重计算平均值
select avg(distinct sname) from student;
29://返回某列的行数 #聚合函数:返回某列行数
select count(sname) from student;
30://返回列表中所有的行数 #聚合函数:返回所有行数
select count(*) from student;
31://返回某列的最大值 #聚合函数:返回列中最大值
select max(sname) from student;
32://返回某列的最小值 #聚合函数:返回列中最小值
select min(sname) from student;
33://返回某列值得和 #聚合函数:返回列值的和
select sum(sname) from student;
34://组合使用聚合函数 #聚合函数组合使用
select count(*) as count_number,
avg(number) as avg_number,
max(number) as max_number,
min(number) as min_number,
sum(number) as sum_number
from score;
35://分组查询
select vend_id, count(*) as num_prods
from products
group by vend_id;
36://分组查询,增加查询条件
select cust_id, count(*) as orders
from orders
group by cust_id
having count(*) >= 2;
目前为止所学过的所有类型的where子句都可以用having来替代。唯一的差别是where过滤行,而having过滤分组。
这里有另一种理解方法,where在数据分组前进行过滤,having在数据分组后进行过滤。这是一个重要的区别,where排除的行不包括在分组中。
SELECT语句与前面所有语句一样指定要检索的列。这里,最大的差别是所指定的两个列(prod_name和prod_price)在一个表中,而另一个列(vend_name)在另一个表中。
现在来看FROM子句。与以前的SELECT语句不一样,这条语句的FROM子句列出了两个表,分别是vendors和products。它们就是这条SELECT语句联结的两个表的名字。这两个表用WHERE子句正确联结,WHERE子句指示MySQL匹配vendors表中的vend_id和products表中的vend_id。
可以看到要匹配的两个列以vendors.vend_id和products.vend_id指定。这里需要这种完全限定列名,因为如果只给出vend_id,则MySQL不知道指的是哪一个(它们有两个,每个表中一个)。