数据库操作(一)

数据库基本操作

一、建库建表
1.创建数据库相关操作 (数据库名为 studentdb)

//1.创建数据库
create database studentdb;
//2.使用数据库
use studentdb;
//3.删除数据库
drop database studentdb;

2.创建表及其他操作

//1.表名为tbl_stu设置stu_id为主键、不能为空、自增
create table tbl_stu(
              stu_id int not null primary key auto-increment,
              stu_name varchar(11) not null,
              stu_age int not null,
              stu_sex char(2) not null,
              stu_address varchar(200));
              
//2.删除表
drop table tbl_stu;
//3.修改表中的字段
alter table tbl_stu **modify** stu_name varchar(20) not null;
 //4.删除表中的字段
 alter table tbl_stu **drop** stu_address;
 //5.添加表中的字段
 alter table tbl_stu **add** stu_phone varchar(11);
 

删除表结构的用drop 删除表中数据的用delete

二、SQL语句(数据库操纵语言)
1.插入insert 语句

//1.向表中每一列都添加一项数据,stu_id是主键,可以使用默认值
insert into tbl_stu values (default,'小花',20,'女','陕西省西安市');

//2.向表中指定列添加数据
insert into tbl_stu(stu_name,stu_sex.stu_address) values ('强哥','男','陕西省渭南市');

//3.一次向表中添加多个数据
insert into tbl_stu values (default,'小花',20,'女','陕西省西安市'),
                     (default,'迪丽热巴',20,'女','新疆');

2.修改语句 update

//1.把学号为5的学生姓名改为 朱莉
update tbl_stu set stu_name='朱莉' where stu_id=5;

//2.把学号为4的学生姓名改为光头强,地址改为陕西省宝鸡市
update tbl_stu set stu_name='光头强',stu_address='陕西省宝鸡市' where stu_id=4;

//3.把表中没有填写地址的学生的 地址改为 未知
update tbl_stu set stu_address='未知' where stu_address is null;

//4.把姓名中带有'小'字的学生年龄设置为20
update tbl_stu set stu_age=20 where stu_name like '%小%';

//5.把表中学号在5-8之间学生的年龄加1
update tbl_stu set stu_age=stu_age+1 where stu_id>=5 and stu_id<=8;

3.删除语句 delete

//1.删除学号为4的学生
delete from tbl_stu where stu_id=4;

//2.删除没有联系方式的学生
delete from tbl_stu where stu_phone is null;
//3.删除有联系方式的学生
delete from tbl_stu where stu_phone is not null;

4.查询语句 select

order by 默认是升序,在sql语句的最后一句。
SQL会先按照第一排序规则进行排序,如果排序结果相同,会按照第二排序规则继续排序,如果不存在相同数据,则第二排序不起作用。例如下面的16
使用 as 起别名。
查询的sql语句,从原始表获取到需要的数据并形成一个虚表。我们查询到的结果都是虚表,还可以在虚表的基础上继续进行查询操作。
查询不对原始表中的数据进行任何操作。

//1.查询表中所有数据
select * from tbl_stu;

//2. 查询表中部分列数据
select stu_id,stu_name,stu_age,stu_address from tbl_stu;

//3.使用别名查询 给每一列起一个外号
select stu_id as '学号',stu_name as '姓名',stu_age as '年龄',stu_address as '地址' from tbl_stu;

//4.获取学号为4的学生信息
select * from tbl_stu where stu_id=5;

//5.获取学生学号大于等于并且小于等于7的学生信息
select * from tbl_stu where stu_id>=3 and stu_id<=7;
select * from tbl_stu where stu_id between 3 and 7;

//6.获取学生年龄为18,23,26岁学生的信息
select * from tbl_stu where stu_age=18 or stu_age=23 or stu_age=26;
select * from tbl_stu where stu_age in (18,23,26);

//7.获取姓名中含有 小 字的学生信息
select * from tbl_stu where stu_name like '%小%';

//8.获取姓名中第一个是’小‘的学生信息
select * from tbl_stu where stu_name like '小%';

//9.获取姓名中第一个字为 小 字,且只有两个汉字的学生信息
select * from tbl_stu where stu_name like '小_';

//10.获取姓名中最后一个字为 小 字,且只有三个汉字的学生信息
select * from tbl_stu where stu_name like '__小';

//11. 查询没有生日的学生信息
select * from tbl_stu where stu_birthday is null;

//12.查询所有 有生日 的学生信息
select * from tbl_stu where stu_birthday is not null;

//13.根据年龄升序<默认>排列查询
select * from tbl_stu order by  stu_age asc;

//14.根据年龄降序排列查询
select * from tbl_stu order by  stu_age desc;

//15.获得所有女生的信息,并按年龄降序排列
select * from tbl_stu where stu_sex='女' order by stu_age desc;

//16.按照年龄升序排列,如果年龄相同,就按身高降序排列
select * from tbl_stu order by stu_age asc,stu_height desc;

5.聚合查询

1.统计查询count(*|列名):一行中任何一列有数据就参与统计
2.求和查询 sum(列名)
3.求平均数查询 avg(列名)
4. 求最大值查询 max(列名)
5.求最小值查询 min(列名)

//1.获得学生的个数
select count(*) as '学生总数' from tbl_stu;

//2.效率高的查询 使用主键进行查询
select count(stu_id) as '学生总数' from tbl_stu;

//3.统计男生的数量
select count(stu_id) as '男生数量' from tbl_stu  where stu_sex='男';

//4.计算所有年龄和
select sum(stu_age) from tbl_stu;

//5.计算学生的平均年龄
select avg(stu_age) from tbl_stu;

//6.计算学生中的最高身高
select max(stu_height) from tbl_stu;

//7.计算学生中的最低身高
	select min(stu_height) from tbl_stu;
//8.获取最后一个添加的主键,要和insert一起使用
insert into tbl_stu values (default,'王宝强','男',30,'1989-07-07','山东省',168,'123456')

select last_insert_id()

6.分组查询

1.having 必须和group by 一起使用,单独不可以
2.limit a,b 两个参数意思:第一个参数表示起始下标,从0开始
第二个参数表示获取的个数
3.查询规则:先分组后排序

//1.分别统计男生女生的个数
select stu_sex,count(stu_id) '人数' from tbl_stu group by stu_sex
//2.统计来自不同城市的人数
select stu_address,count(stu_id) '人数' from tbl_stu group by stu_address

//3.分别统计男生女生个数,并按照降序排列(先分组后排序)
select stu_sex,count(stu_id) '人数' from tbl_stu group by stu_sex order by  人数 desc
//4.统计来自不同城市的人数,并获得人数大于2的城市及人数
select stu_address,count(stu_id) '人数' 
from 
tbl_stu 
group by stu_address 
having 人数>2
order by 人数 DESC
//5.获得年龄最大的学生及同年龄的人数
select stu_age,count(stu_id)  '人数' 
from tbl_stu 
group by stu_age 
order by stu_age desc 
limit 0,1

//6.#获得人数最多的城市及人数
select stu_address,count(stu_id) '人数' from tbl_stu 
group by stu_address
order by 人数 DESC
limit 0,1

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值