sql学习之基础(MySql)
--#创建一个数据库
create database excise01;
--#查看所有数据库
show databases;
--#查看刚建的数据库
show create database excise01;
--#建表
use excise01;
create table stu(
id int not null primary key auto_increment, --#not null-->非空,primary key-->主键,auto_increment-->自增,都是约束
name varchar(20) unique, --#unique-->唯一,不能重复(约束)
birthday date,
sal float
);
show tables; --#查看表
show create table stu; --#查看表中信息
--#修改表
alter table stu add age int; --# 新增一个age,类型为int
alter table stu change age new_age int; --#修改"age"为"new_age"
alter table stu drop new_age; --#删除列
alter table stu rename new_name; --#修改表名
--#删除表
drop table stu;
--#查看表结构
desc stu;
DML:
--#往stu表中插入一条记录
insert into stu (id,name,birthday,sal) values(1,'itcast',2011-09-23,8000.00);
--#查看记录
select * from stu;
--#修改记录
update stu set sal=10000.00
--#删除记录
delete from stu; --#删除表中的所有内容(表还在)
--#设置编码集,set方法只对当前窗口有效.
set character_set_client=gb2312;
set character_set_results=gb2312; --#创建数据sql脚本如下
use day01; CREATE TABLE grade (
id int(11) NOT NULL auto_increment PRIMARY KEY ,
name varchar(20) NOT NULL,
math double,
english double,
chinese double
); set character_set_client=gb2312;
set character_set_results=gb2312; insert into grade(name,math,english,chinese) values('赵一',67,45,78);
insert into grade(name,math,english,chinese) values('郭二',77,83,89);
insert into grade(name,math,english,chinese) values('张三',82,75,60);
insert into grade(name,math,english,chinese) values('李四',67,45,78);
insert into grade(name,math,english,chinese) values('王五',90,89,91);
insert into grade(name,math,english,chinese) values('马六',33,23,56);
insert into grade(name,math,english,chinese) values('冯七',69,34,47);
insert into grade(name,math,english,chinese) values('贾八',NULL,NULL,NULL);
--#查询语句
--#过滤表中重复数据
select distinct(math) from grade; --#distinct表示过滤重复数据
--#给每个学生的数学加10分
select math+10 from grade;
--#查询姓名为某个值的学生成绩
select * from grade where name='lisi';
--#统计每个学生的总分
select math+english+chinese as 总分 from grade;
--#查询英语分数在80-90之间的同学
select name, english from grade where english>=80 and english<=90;
select name, english from grade where english between 80 and 90;
select name, english from grade where english>=80 && english<=90;
--#查询数学分数为89,90,91的同学
select name, math from grade where math=89 or math=90 or math=91;
select name, math from grade where math in(89,90,91);
select name, math from grade where math=89 || math=90 || math=91;
--#查询所有姓李的学生(模糊查询,更多应用在数据的检索中)
--# '%李%'-->匹配所有有李字的
--# '%李'--> 匹配最后一个字是"李"的,百分号'%'匹配多个字符
--# '李_'--> 后边是一个下划线'_'的,只能查到李后边是一个字的
select * from grade where name like '李_';
select * from grade where name like '%李%';
select * from grade where name like '李%';
--# 对数学成绩排序后输出
select math from grade order by math; --#默认是升序排序
select math from grade order by math asc; --#(同上一行,升序排序是asc,不写默认就是asc) select math from grade order by math desc;
--#统计人数
--#用'*'来统计的话,可以把所有的统计全了,包括表中的null值.
--#如果按照某一项来统计,如:"math",这样,可能把其中值为'null'的统计不上,所以一般情况下都用*来统计.
select count(*) as 总人数 from grade;
select count(math) as 总人数 from grade; --#统计数学成绩大于90的学生有多少个
select count(*) as 人数 from grade where math>90;
--#统计一个班级数学总成绩
select sum(math) as 数学总成绩 from grade;
--#统计一个班各科的总成绩
select sum(math) as 数学总成绩, sum(english) as 英语总成绩,sum(chinese) as 语文总成绩 from grade;
--#统计一个班的语文,英语,数学的成绩总和(as可以省略)
select sum(math)+sum(english)+sum(chinese) as 所有成绩总和 from grade;
select sum(math+english+chinese) as 所有成绩总和 from grade;
--#统计一个班语文成绩平均分
select sum(chinese)/count(*) 语文平均成绩 from grade; --#(常用的)
select avg(chinese) 语文平均分 from grade; --#avg大多情况下不用,因为用avg统计的是按照本列统计的,如果有null值的话,统计不到,结果会比正常的大
--#求班级最高分和最低分
select max(math) 最高分, min(math) 最低分 from grade; -----------------------------字符函数-------------------------------------------
select char_length('abcdef'); --#字符串长度
select instr('abcdefghij','f'); --#查询后边字符所在位置 --#从字符串'helloworld'的第6个位置开始插入,插入的是'haha',替换后边几个位置,是1就是一个,0就是不替换
select insert('helloworld',6,1,'haha');
select substring('hello world!!',2,4); --#-->从第2个位置截取,截取4个字符,结果为:ello
select substring('hello world!!,3'); --#-->从第3个字符开始,把后边所有都截取,结果为:llo world!!
--#查询数学成绩最高手学生的姓名
select name from grade where math=(select max(math) from grade); --#按照数学成绩的降序排序选取第一个就是最高分
select name from grade order by(math) desc limit 0,1; --#limit表示从第1行开始选择1行
sql学习之基础(MySql)的更多相关文章
- SQL学习笔记之MySQL索引知识点
0x00 概述 之前写过一篇Mysql B+树学习,简单的介绍了B+数以及MySql使用B+树的原因, 有了这些基础知识点,对MySql索引的类型以及索引使用的一些技巧,就比较容易理解了. 0x01 ...
- SQL学习笔记之MySQL查询的三层解析
Mysqld的三层结构: SQL类型: DDL:数据库对象定义语言 对库和表的定义 DML:操作语言 DCL:控制语言 结构化的查询语言:select * from user; 执行该语句时: 1.连 ...
- Oracle PL/SQL学习之基础篇(1)
1.PL/SQL,全称Procedure Language/SQL,过程化sql语言 PL/SQL的程序结构 declare --声明部分(包括变量.光标.例外声明) begin --语句序列(DML ...
- SQL学习笔记之MySQL中真假“utf8” 问题
0x00 MySQL中UTF8报错 最近我遇到了一个 bug,我试着通过 Rails 在以“utf8”编码的 MariaDB 中保存一个 UTF-8 字符串,然后出现了一个离奇的错误: Incorre ...
- Oracle PL/SQL学习之基础篇(2)--例外
1.例外分类:系统例外.自定义例外 (1)系统例外,参见相关API文档 (2)自定义例外 定义自己的例外:就像自定义变量一样,类型为exception 抛出例外:使用raise抛出自定义例外 set ...
- SQL学习笔记之MySQL查询练习2
(网络搜集) 0x00 数据准备 CREATE TABLE students (sno ) NOT NULL, sname ) NOT NULL, ssex ) NOT NULL, sbirthday ...
- [SQL] SQL学习笔记之基础操作
1 SQL介绍 SQL 是用于访问和处理数据库的标准的计算机语言.关于SQL的具体介绍,我们通过回答如下三个问题来进行. SQL 是什么? SQL,指结构化查询语言,全称是 Structured Qu ...
- SQL学习笔记六之MySQL数据备份和pymysql模块
mysql六:数据备份.pymysql模块 阅读目录 一 IDE工具介绍 二 MySQL数据备份 三 pymysql模块 一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测 ...
- spark SQL学习(spark连接 mysql)
spark连接mysql(打jar包方式) package wujiadong_sparkSQL import java.util.Properties import org.apache.spark ...
随机推荐
- HDU 3374 String Problem (KMP+最小最大表示)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3374 [题目大意] 给出一个字符串,求出最小和最大表示是从哪一位开始的,并且输出数量. [题解] ...
- Codeforces Round#344
A题意思是,给出两个数列,求一个区间,使第一个数列的区间或和第二个数列的区间或的和最大,输出最大和 很显然,或运算会使得答案越运算越大.所以,直接全部或起来,相加就是答案. = =打cf的时候自动脑补 ...
- HDU 2588 GCD
题目大意:给定N,M, 求1<=X<=N 且gcd(X,N)>=M的个数. 题解:首先,我们求出数字N的约数,保存在约数表中,然后,对于大于等于M的约数p[i],求出Euler(n/ ...
- ural 1057(数位dp)
数位dp题,关键是用树的思维去考虑. 对于一个数字X,要是能表示成K个B的不同次幂,等价于X在B进制下有且只有K个位上面的数字为一,其他位上的数字都为0. 具体读者可以去参考,国家集训队李聪的论文,里 ...
- uva 10026 Shoemaker's Problem(排序)
题目连接:10026 Shoemaker's Problem 题目大意:有一个鞋匠接了n双要修的鞋子, 修每双鞋需要d天,每推迟一天修将亏损val元,问按什么样的顺序修鞋可以保证损失最少,如果有多种情 ...
- 纯css加伪类实现关闭提示创窗口
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8&quo ...
- quartz 定时调度持久化数据库配置文件
1 下载quartz对应版本jar包 2 初始化对应数据库sql(版本需要对应,不然会出现少字段的情况) ,下载地址 https://github.com/quartz-scheduler/quar ...
- Centos rpm缺少依赖无法安装mysql5.5
rpm -ivh mysql-5.5.22-2.1.i386.rpm --nodeps --force 缺少依赖导致rpm -ivh mysql-5.5.22-2.1.i386.rpm命令无法安装!
- wireshark 包分析命令
1.查看原地址过滤包命令: ip.src ==192.168.1.1 2.查看目的地址过滤包:ip.dst == 192.168.1.1 3.关键字 eq 等于 "==" ,and ...
- IOS 表视图(UITableVIew)的使用方法(7)表视图的编辑功能(拖拉调整排序位置)
除了每个单元行左边的删除和新增图标,UITableView还支持在单元行的右侧显示一个供用户拖拉调整排序位置的控件. 不过如果要显示此控件,UITableView的数据源需要实现以下的方法. -(vo ...