Sql分类详解及单表curd

再次看下我们的知识架构
image.png
补充:

我们要想操作数据库必须登录数据库软。登录数据库软件的方式有多种

  • cmd窗口登录方式
  • Mysql 命令行方式
  • 图形化界面方式
    图解:


    登录mysql软件.png

一 数据定义语言-DDL

image.png

1 操作数据库

  • 数据库的创建
  • 数据库的删除
  • 数据库的修改
语法:
1 数据库的创建:
 create database 数据库名
2 数据库的删除:  
 drop database 数据库名   
3 数据库的修改
  一般修改字符集,数据库名 作用不大。

ps:show databases 可查看当前所有的数据库名字
        use 数据库名     可进入指定的数据库中
  

2 操作表

  • 创建表
  • 修改表
  • 删除表
语法:
1 表的创建:
create table 表名(字段描述,字段描述);
字段描述:字段名 字段类型[约束条件]
注意:约束可以不写

例如创建学生(stu)表:
create table stu(id int primary key auto_increment,username varchar(20));

ps: show tables:查看当前数据库下面的所有表

   desc 表名:查看表结构(也就是表的描述)

   show create table 表名:查看建表语句(有时需要吧表拿来写个相似的,可以看过源码直接粘贴)

2 修改表
    2.1修改表名:
        alter table 表名 rename to 新表名
    2.2表添加字段
        alter table 表名 add 列名 字段描述
        例如向stu添加pwd字段
        alter table student1 add pwd varchar(20);
     2.3修改字段名
              alter table 表名 change 字段名称 新字段描述
               例如吧stu表的pwd字段修改为password:
               alter table stu change pwd password varchar(20);  
               注意:修改字段名时字段描述也可以改,如上代码varchar(20)
               也可以写为 int(20),亦可以使用如下2.4代码修改
     2.4修改字段描述
              alter table 表名 modify 字段名称 字段类型[约束]
              例如 alter table stu modify password int;
              注意:这种方式不能修改字段名字 否则报错的
     2.5删除字段
           alter table 表名 drop 字段
           例如删除stu表的 password字段:
             alter table stu drop password;
         收获感觉2.4的语法更灵活可以取代2.5的功能。
  3 删除表:
       drop table 表名; 

二 数据操纵语言-DML

  • 操作对象记录(行)
  • 关键词: insert,update,delete

Demo表:


image.png
1 插入
  语法1:insert into 表名 values(字段值1,字段值2.....);

     注意:
     默认给全部字段插入值(上表id,username,pwd字段)
     必须保证values后面的值的类型和顺序与表结构中的一致

     例如:上表的id int类型,username字符类型,pwd字符类型,则你插入 的值必须为 int ,字符,字符类型。
 
      如向上表插入一些值:
      insert into stu values(10,'kate','123');
      注意:上表有三个字段 你value(xxx)xxx也要满足三个值,少一个就不行。

   语法2(常用):
   insert 表名 (字段1,字段2,...)values(值1,值2,...)
   
    注意:
    指定字段插入指定的值
    必须保证values后面的值的类型和顺序与表结构中的一致

    也就是如上表你要向id ,pwd 这两个字段插入值,则:

    insert into stu(id,pwd) values(30,15); 只要类型一致就行,username没 
    插入数据,查询时显示null。(但是你指定两个字段此处你插入三个值或者插入一个就报错,还是少一个也不行)

2 修改

语法:
update 表名 set 字段名1=字段值1,字段名2= 字段名2...[where 条件]

 例如 吧username为tom的用户名改为john
 update stu set username = 'john' where username = 'tom';
 注意:上代码如果不写where条件默认吧所有的用户名改为john
 当然你也可以根据id改变name字段:
 update stu set username = 'kate' where id = 10;吧id为10 的username 改 
 为kate

总结:修改就是修改字段值,根据某一字段值

3 删除
  语法:
 delete from 表名 [where 条件]
 例如删除id为30 的 某项
delete from stu where id = 30;
则id为30 的某一相关信息都会删除。

三 数据查询语言-DQL(非官方叫法)

关键词:select

  • 基本查询
  • 基本条件查询
  • 高级查询
完整的语法格式:
select 字段  from 表名 where条件  group by 分组字段 having 条件 order by 排序字段  ase|desc(增或者减顺序)
1基本查询:


1 简单的案例:查询表中所有字段信息
select * from products;
2 查看指定的字段信息
select 字段名1,字段名2,.... from table;
例如:
select pname from products;

3查询时还可以去掉重复的字段值:
例如
select distinct price from products;
(多个相同的price 只显示一个)
4 还可以在查询结果上进行运算(+ - *  / 等),但是不会影响数据库中的值。
例如:将所有商品的价格+10元进行显示
select price+10 from products;

5 还可以给查询的结果起个别名
格式 字段名 别名
例如:select price+10 ‘新价格’ from products;
注意 新的字段名最好用字符形式(‘’)否则容易出错(比如新*价格就出错,不用‘’时)


注意:sql的语法 查询的结果是一张新表,显示给你看的。

2 基本条件查询
1 查询所有:
 select * from 表名;
2 指定范围查询
    例如:查询商品价格>60元的所有的商品信息:
    select * from product where price>60;
3.模糊查询
  模糊匹配  格式: 字段名 like "匹配规则"

                 匹配规则:  内容匹配"%"
                            数字匹配"_":_ 代表占个位
 例如:"龙" 值为龙
      "%龙" 值以龙结尾
       "龙%" 值 以龙开头
       "%龙%" 值 包含龙

 案例 查询商品名称中包含”新”的商品:
 select *  from products where pname like "%新%";

4.查询价格为38,68,98的商品
 or 或者in的用法
 or: 或者
 in:(a,b,c):满足 含有a,或者b 或者 c的。
and 并且
例如:
select * from products where price=38 or price=68 or price = 98;
select * from products where price in(38,68,98);

5 查询所有薪资在 50 -70之间的
   select * from products where price between 50 and 70;
   select * from products where price >=50 and price<=70 ; 
小总结:
where后的条件写法:
     > ,<,=,>=,<=,<>
     like 使用占位符 _ 和 %  _代表一个字符 %代表任意个字符. 

      in:在某个范围中获得值.(值不一定连续)
      between num1 and num2 :代表在某一连续区间 例如[num1,num2]   

3 高级查询

  • 排序查询: order by
  • 聚合函数 sum() avg() max() min() count()
  • 分组:group by
案例驱动举例子:
1 排序查询
    查询所有的商品,按价格进行排序.(asc-升序,desc-降序)
      select * from products order by price desc;(降序)
    查询名称有“新”的商品的信息并且按价格降序排序.
      select * from products where pname like"%新%"order by price desc;
2 聚合函数
 sum(字段)求和
 avg(字段) 平均值
 max(字段) 最大值
 min(字段) 最小值
 count(字段) 总数
 round(数字,保留小数位数)  四舍五入
 
 注意:
  以前我们操作的都是行的数据,而聚合函数操作的是列的数据 并且返回 
  一个结果,但是聚合函数会忽略null的值。

  获得所有商品的价格的总和:
  select sum(price) from products ;

  获得商品表中价格的平均数:
   select round(avg(price),2) from products ;

  获得商品表中有多少条记录(多少个字段)
  select count(*) from products ;

3 分组
语法要求满足:在where的后面 在order by 前面
***一般分组伴随着聚合函数***

语法:
根据某字段分组,伴随聚合函数(一般分组都伴随聚合) from 表 group by 字段
select 字段,聚合函数 from table group by 字段

举个栗子:
根据cno字段分组,分组后统计商品的个数
select cno,count(cno) from products group by cno;

*******************************再举个重要的栗子******************************
根据cno分组,分组统计每组商品的总数量,并且总数量> 200;

select cno,sum(pnum) from products group by cno having sum(pnum)>200;
 
注意: where 与having 的区别:
           where是对分组前的数据进行过滤 having是对分组后的数据进行过滤
           where 后面不能使用聚合函数 having可以

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容