zoukankan      html  css  js  c++  java
  • sql学习之基础(MySql)

      1 --#创建一个数据库
      2 create database excise01;
      3 --#查看所有数据库
      4 show databases;
      5 --#查看刚建的数据库
      6 show create database excise01;
      7 --#建表
      8 use excise01;
      9 create table stu(
     10 id int not null primary key auto_increment, --#not null-->非空,primary key-->主键,auto_increment-->自增,都是约束
     11 name varchar(20) unique, --#unique-->唯一,不能重复(约束)
     12 birthday date,
     13 sal float
     14 );
     15 show tables;  --#查看表
     16 show create table stu; --#查看表中信息
     17 --#修改表
     18 alter table stu add age int; --# 新增一个age,类型为int
     19 alter table stu change age new_age int; --#修改"age"为"new_age"
     20 alter table stu drop new_age; --#删除列
     21 alter table stu rename new_name; --#修改表名
     22 --#删除表
     23 drop table stu;
     24 --#查看表结构
     25 desc stu;
     26 DML:
     27 --#往stu表中插入一条记录
     28 insert into stu (id,name,birthday,sal) values(1,'itcast',2011-09-23,8000.00);
     29 --#查看记录
     30 select * from stu;
     31 --#修改记录
     32 update stu set sal=10000.00
     33 --#删除记录
     34 delete from stu; --#删除表中的所有内容(表还在)
     35 --#设置编码集,set方法只对当前窗口有效.
     36 set character_set_client=gb2312;
     37 set character_set_results=gb2312;
     38  
     39 --#创建数据sql脚本如下
     40  use day01;
     41  
     42  CREATE TABLE grade (
     43    id int(11) NOT NULL auto_increment  PRIMARY KEY ,
     44    name varchar(20) NOT NULL,
     45    math double,
     46    english double,
     47    chinese double
     48  );
     49  
     50  set character_set_client=gb2312;
     51  set character_set_results=gb2312;
     52   
     53  insert into grade(name,math,english,chinese) values('赵一',67,45,78);
     54  insert into grade(name,math,english,chinese) values('郭二',77,83,89);
     55  insert into grade(name,math,english,chinese) values('张三',82,75,60);
     56  insert into grade(name,math,english,chinese) values('李四',67,45,78);
     57  insert into grade(name,math,english,chinese) values('王五',90,89,91);
     58  insert into grade(name,math,english,chinese) values('马六',33,23,56);
     59  insert into grade(name,math,english,chinese) values('冯七',69,34,47);
     60  insert into grade(name,math,english,chinese) values('贾八',NULL,NULL,NULL);
     61 --#查询语句
     62  --#过滤表中重复数据
     63  select distinct(math) from grade; --#distinct表示过滤重复数据
     64  --#给每个学生的数学加10分
     65  select math+10 from grade;
     66  --#查询姓名为某个值的学生成绩
     67  select * from grade where name='lisi';
     68  --#统计每个学生的总分
     69  select math+english+chinese as 总分 from grade;
     70  --#查询英语分数在80-90之间的同学
     71  select name, english from grade where english>=80 and english<=90;
     72  select name, english from grade where english between 80 and 90;
     73  select name, english from grade where english>=80 && english<=90;
     74  --#查询数学分数为89,90,91的同学
     75  select name, math from grade where math=89 or math=90 or math=91;
     76  select name, math from grade where math in(89,90,91);
     77  select name, math from grade where math=89 || math=90 || math=91;
     78  --#查询所有姓李的学生(模糊查询,更多应用在数据的检索中)
     79   --# '%李%'-->匹配所有有李字的
     80   --# '%李'--> 匹配最后一个字是"李"的,百分号'%'匹配多个字符
     81   --# '李_'--> 后边是一个下划线'_'的,只能查到李后边是一个字的
     82  select * from grade where name like '李_';
     83  select * from grade where name like '%李%';
     84  select * from grade where name like '李%';
     85  --# 对数学成绩排序后输出
     86  select math from grade order by math; --#默认是升序排序
     87  select math from grade order by math asc; --#(同上一行,升序排序是asc,不写默认就是asc)
     88  
     89  select math from grade order by math desc;
     90  --#统计人数
     91   --#用'*'来统计的话,可以把所有的统计全了,包括表中的null值.
     92   --#如果按照某一项来统计,如:"math",这样,可能把其中值为'null'的统计不上,所以一般情况下都用*来统计.
     93   select count(*) as 总人数 from grade;
     94   select count(math) as 总人数 from grade;
     95  
     96  --#统计数学成绩大于90的学生有多少个
     97  select count(*) as 人数 from grade where math>90;
     98  --#统计一个班级数学总成绩
     99  select sum(math) as 数学总成绩 from grade;
    100  --#统计一个班各科的总成绩
    101  select sum(math) as 数学总成绩, sum(english) as 英语总成绩,sum(chinese) as 语文总成绩 from grade;
    102  --#统计一个班的语文,英语,数学的成绩总和(as可以省略)
    103  select sum(math)+sum(english)+sum(chinese) as 所有成绩总和 from grade;
    104  select sum(math+english+chinese) as 所有成绩总和 from grade;
    105  --#统计一个班语文成绩平均分
    106  select sum(chinese)/count(*) 语文平均成绩 from grade; --#(常用的)
    107  select avg(chinese) 语文平均分 from grade; --#avg大多情况下不用,因为用avg统计的是按照本列统计的,如果有null值的话,统计不到,结果会比正常的大
    108  --#求班级最高分和最低分
    109  select max(math) 最高分, min(math) 最低分 from grade;
    110  
    111  
    112 -----------------------------字符函数-------------------------------------------
    113  select char_length('abcdef'); --#字符串长度
    114  select instr('abcdefghij','f'); --#查询后边字符所在位置
    115  
    116  --#从字符串'helloworld'的第6个位置开始插入,插入的是'haha',替换后边几个位置,是1就是一个,0就是不替换
    117  select insert('helloworld',6,1,'haha');
    118  select substring('hello world!!',2,4); --#-->从第2个位置截取,截取4个字符,结果为:ello
    119  select substring('hello world!!,3'); --#-->从第3个字符开始,把后边所有都截取,结果为:llo world!!
    120  --#查询数学成绩最高手学生的姓名
    121  select name from grade where math=(select max(math) from grade);
    122  
    123  --#按照数学成绩的降序排序选取第一个就是最高分
    124  select name from grade order by(math) desc limit 0,1; --#limit表示从第1行开始选择1行  
  • 相关阅读:
    线索二叉树
    正则表达式之后向引用
    进步的阶梯
    树和二叉树
    java 执行 exe 文件
    Electron + Vue如何实现不同窗口之间的通信(项目总结 第一个)
    liunx 修改 ip 地址
    桌面快捷工具
    微信小程序长列表组件 recycle-view 修改,使其可以下拉刷新
    微信小程序 textarea 文本滚动不了的bug
  • 原文地址:https://www.cnblogs.com/zunpeng/p/3297933.html
Copyright © 2011-2022 走看看