数据库语句操作

6.3. 数据库语句操作
我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下:
 
CREATE DATABASE 数据库名;
 
创建第一个数据库 mydb1
create database mydb1
 
在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失
drop 命令删除数据库
 
删除创建的数据库
drop database mydb1;
 
在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库,
 
选择数据库
user mydb1
 
注意:所有的数据库名,表名,表字段都是区分大小写的。所以你在使用SQL命令时需要输入正确的名称。
 
查看数据库创建细节
show create database mydb1
 
创建一个使用gbk字符集的数据库
create database mydb2 character set gbk
 
 
 
6.4. 表结构语句操作
选择数据库
user mydb1
 
创建MySQL数据表需要以下信息:
 
表名
表字段名
定义每个表字段
 
创建表
create table student(id int,name varchar(20),sex varchar(20),age int,salery float(6,2),birthday date)
 
删除表
drop table student;
 
查看所有表
show tables
 
查看表的创建细节
show create table student;
 
展示表结构
desc student
在原有的学生基础上添加address列
alter table student add address varchar(20)
在原有的学生基础上删除address列
alter table student drop address
 
6.5. 定义表的约束
create table student(id int primary key auto_increment,name varchar(20) unique not null,sex varchar(20),age int,salery float(6,2),birthday date)
l  如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
l  AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
l  PRIMARY KEY关键字用于定义列为主键。为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引。 您可以使用多列来定义主键,列间以逗号分隔。
l  UNIQUE KEY的用途:主要是用来防止数据插入的时候重复的
l  ENGINE 设置存储引擎,CHARSET 设置编码
 
7.    DML-数据库操作语言
7.1. 概念及作用
DML data manipulation language 数据库操作语言,用以操作数据库
 
7.2. 插入数据
 
insert into student values(1,’zhangsan’,’nan’,19,389.10,’1999-10-10’);
 
查询
select * from student
 
insert into student values(2,’李四’,’男’,19,389.10,’1999-10-10’);
 
 
插入中文会报错
0
通知服务器客户端使用的编码是gbk
set character_set_client=gbk;
 
通知服务器客户端查看结果集使用的编码是 gbk
set character_set_results=gbk;
 
insert into student(id,name,sex,age) values(3,’王五’,’男’,19);
 
7.3. 删除数据
删除单条数据
delete from student where id=1;
 
删除所有数据
delete from student;
 
摧毁表
truncate table student;
 
7.4. 修改数据
设置所有人的年龄加10岁
update student set age=age+10
 
修改zhangsan 为张三
update student set name=’张三’ where name=’zhangsan’
 
修改王五的salery和出生日期
update student set salery=100.01,birthday=’1999-10-10’ where id=3;
 
 
8.    DQL-数据库查询语言
8.1. 概念及作用
Data Query Language 数据库查询语言
8.2. 数据查询
删除student
drop table student
创建数据库表-学生成绩表
create table student(id int primary key auto_increment,name varchar(20) unique not null,chinese float,english float,math float);
 
添加几条数据
insert into student values(1,’张三’,90,80,80);
insert into student values(2,’李四’,90,87,60);
insert into student values(3,’王五’,70,60,69);
insert into student values(4,’赵六’,99,90,87);
 
8.2.1.    普通条件查询
 
查询所有学生信息
select * from student;
 
查询id为1的学生信息
select * from student where id=1;
 
查询id为1的学生姓名
select name from student where id=1;
 
查询数学成绩大于80的同学成绩
select * from student where math>80
 
 
查询所有学生成绩,并输出效果为 姓名 语文 英语 数学 效果
select name as 姓名,chinese as 语文,english as 英语,math as 数学 from student
 
 
查询所有成绩及数学分+10分
select *,(math+10)from student
 
统计每个学生的总分
select name,(math+english+chinese) as 总分 from student
 
查询总分大于230分的同学
select * from student where (math+english+chinese)>230
 
查询数学成绩在80-90之间的同学
select * from student where math between 80 and 90
 
查询数学语文英语都大于80的同学成绩
select * from student where math>80 and english>80 and chinese >80;
 
查询数学成绩在 80 60 90内的同学
select * from student where math in(80,60,90);
8.2.2.    模糊查询
 
查询所有姓名中包含张的同学
select * from student where name like ‘%张%’
 
8.2.3.    排序查询
 
按照数学成绩从小到大查询
select * from student order by math;
按照数学成绩从大到小查询
select * from student order by math desc;
 
8.2.4.    分页查询
limit是mysql的语法
select * from table limit m,n
 
其中m是指记录从m+1开始
,N代表取n条记录。
select * from student limit 2,4
即取出第3条至第6条,4条记录
 
查询出数学成绩由高到低前两名
select * from student order by math desc limit 0,2;
8.2.5.    分组查询
创建一个订单表
create table employee(id int,name varchar(20),sex varchar(20),age int);
insert into employee values(1,'sunsan','男',18);
insert into employee values(2,'lisi','男',18);
insert into employee values(3,'wangwu','女',19);
insert into employee  values(4,'zhaoliu','男',15);
 
分组查询
 select * from employee group by sex;
分组查询加条件
 select * from employee group by sex having age>18;
 
(1) having 条件表达式:用来分组查询后指定一些条件来输出查询结果
(2) having作用和where一样,但having只能用于group by
 
8.3. 报表查询
count  个数
sum      总数
avg              平均数
max              最大值
min       最小值
 
统计班级里边有多少学生
select count(*)from student;
 
统计总成绩大于250分的人数
select count(*)from student where (math+english+chinese)>250;
 
统计班级里边各科总成绩
select sum(math),sum(english),sum(chinese) from student
 
统计所有科目的总成绩
select sum(math+english+chinese) from student;
 
统计一下语文平均成绩
select sum(chinese)/count(*) from student;
select avg(chinese) from student;
 
统计一下班级语文最高分和最低分
select max(chinese) from student;
select min(chinese) from student;
 
报表查询订单根据名称合并后,总价格>10000的商品
select * from orders group by product having sum(price) >7000
posted @ 2020-12-30 19:19  405用户信息  阅读(142)  评论(0)    收藏  举报