回答

收藏

『 MySQL篇 』:MySQL表的CURD操作

知识点 知识点 31 人阅读 | 0 人回复 | 2023-01-19

帖子摘要: MySQL 系列专栏持续更新中 … MySQL专栏 ? 目录    目录一、SQL语句- SQL通用语法- 注释- SQL语句分类     二、 基础表操作- 创建表- 查看库中的表- 查看表结构-......
) `) x) r  D, @: d. b8 B* U; e/ r* Y) D( i4 F; W# V
大家好,欢迎来到Java吧(www.java8.com),交流、学习Java技术、获取Java资源无任何套路,今天说一说:“『 MySQL篇 』:MySQL表的CURD操作”
% T0 V4 T' ~' ^/ ?+ @* |- L

( V7 k& B  v% X: y
- X5 u7 s- q: j; M        
/ ]& c% f: c( s' [- y               
5 O" r0 g1 S( r+ J% f' W3 O                    ( Y4 q2 ~& S. ^6 w
                        ) q5 T+ q6 m% E- ~
                    ' @+ z7 O$ f1 k
                     MySQL 系列专栏持续更新中 … MySQL专栏  ~- D, [: T. ~" ^
?
4 D1 H) u+ p, f6 k6 X, q
) Q+ c% a! I1 H6 P. g. k* n, L
目录
& {' z9 J1 T8 S1 a! p4 ?6 {( v. ]- q/ s
  5 i8 R/ t" q+ Z) v8 |1 |9 r
  • 目录
  • 一、SQL语句
  • - SQL通用语法
  • - 注释
  • - SQL语句分类8 [  s0 c8 W" y3 E# w) r
         
  • 二、 基础表操作
  • - 创建表
  • - 查看库中的表
  • - 查看表结构
  • - 删除表
  • - 重命名表
    1 q9 ]$ T  T: `" ]% E  M     
  • 三、MySQL 中的增删查改操作
  • - 增加insert语句
  • - 查询(select语句)
  • - 修改(update)
  • - 删除(delete)3 o1 G' v7 o" q4 G6 Z, N
       

    # E2 j- t/ m, {# X' P   
    9 p  f8 P! B6 b- g
      ( T3 e1 y6 n6 \5 J  z. o

    : m! ^" d5 }# }+ N, b( N' x, O
    3 S/ j7 x5 b7 M2 }. e; |1 J( h) j
    " S* ]) f$ Y5 h7 m4 r9 V一、SQL语句 ; c* }$ W3 M+ \% T& g
    操作关系型数据库的编程语言定义了一套操作关系型数据库的统一标准简称SQL。, d& S  l  w2 T; e+ u2 }

    ) [" K' |& p3 B" O- SQL通用语法
    , y4 h5 e5 T) Y' r7 T* b* A  o. u1 . SQL语句可以单行或多行书写以分号结尾。
    * b4 N# A7 \1 j6 C " n# `$ `2 \/ K; @% b/ B' T
    2 . SQL语句可以使用空格/缩进来增强语句的可读性。6 V9 _+ S! k& V5 d9 d; |& f, r

      |& D! C1 r; T? 3 . MySQL数据库的SQL语句不区分大小写关键字建议使用大写。
    6 u, P0 c& P2 y" ` + r8 F; X5 `6 Z6 B9 d: p: A
    - 注释
    0 @. K# u3 f/ F
  • 单行注释 – 注释内容 或者使用 # 注释内容 。
  • 多行注释/* 注释内容 */
    - h* m  w; o3 C- G1 T- SQL语句分类
    ' I* a! ^" v& c3 [: Z! H
    分类说明
    DDLdeifnition数据定义语言用来定义数据库对象数据库表字段
    DML(manipulation)数据操纵语言对数据库 表中的是数据进行增删改
    DQL(query)数据查询语言用来查询数据库中表的记录
    DCL(control)数据控制语言用来创建数据库用户控制数据库的访问权限
    " r9 Z: W0 N6 D$ a
    二、 基础表操作 ' ]4 y0 F3 H, A  _) u3 i0 s
    - 创建表
    2 ^/ j  e: g7 P+ Z: l: }& n$ ]) n
  • 同一个数据库中不能有两个表的名字相同表名和列名不能和SQL的关键词重复。
    + j+ D4 [) ?* x& u# f% M
  • 语法
    4 g+ O4 B0 L1 y$ K& T# Z: h& f

    ) b4 Z; S: V; ~  z+ ^3 C/ w
    1. create table 表名(定义列1, 定义列2, .......); / ]0 n: }% p. k4 a" Q* a
    2. 列 -> 变量名 数据类型 # c: y  n9 d3 \' W
    复制代码
    ; S$ h: B2 k& z, U! ]0 m, s2 a
  • 举例 0 A0 g$ M7 S0 P
    1. mysql> create table if not exists book(
    2.     ->   book_name varchar(32) comment '图书名称',
    3.     ->   book_author varchar(32)comment  '图书作者' ,
    4.     ->   book_price decimal(12,2) comment '图书价格',
    5.     ->   book_category varchar(12) comment '图书分类', 1 c7 S3 a$ K) x. G( B9 R7 v  _2 e
    6.     ->   publish_data timestamp * R+ G6 |# D% W! m3 Y
    7.     -> )character set utf8mb4; 0 q$ `' P' i4 R1 O
    8.     8 {' w% ?4 C  {
    9. Query OK, 0 rows affected (0.04 sec) - i" n2 n/ p# g4 [% U
    复制代码

    ' ~& k7 \5 b& {5 L- 查看库中的表
    $ [- R6 o7 k8 r' D
  • 语法) @% |( p5 n/ V' @; s
    1. show tables;
    复制代码
  • 举例
    7 H2 x# e7 A# h& ~  @2 ?
    1. mysql> show tables;
    2. +--------------------+ 1 P5 _: ~( Z5 a* P9 h) {
    3. | Tables_in_mytestdb |
    4. +--------------------+ 9 A' Q$ y8 Y! g3 O/ P6 T- @8 L5 a* v
    5. | book               | 5 w7 \+ m; J' ~) p7 \, }
    6. +--------------------+
    7. 1 row in set (0.00 sec)
    复制代码
    0 o$ I0 j  j. w/ T) D. z- |# E
    - 查看表结构
    ' Z& e1 u% e+ k2 O% [2 k
  • 语法+ H, t$ [- ~4 b! `( O( z
    1. desc  表名
    复制代码
  • 举例
    ; `+ n2 u, \2 _0 }  f  b# C
    ! E  M: j; @/ p7 e2 s- N, F7 R9 T' m
    65d038af04994a03b12849164bb9a382.png (28.18 KB, 下载次数: 0, 售价: 6 金钱)
  • 语法 0 X& h% `$ D1 W% O3 J6 N7 f
    1. drop table 表名
    复制代码
    + t) t& L) o- k% K9 f
  • 举例 :
    4 h# v4 m4 M& r5 T# v
    1. mysql> desc test1;
    2. +-------+-------------+------+-----+---------+-------+
    3. | Field | Type        | Null | Key | Default | Extra |
    4. +-------+-------------+------+-----+---------+-------+ 8 o4 \, r+ X  K' S  Z/ I2 v+ e
    5. | name  | varchar(10) | YES  |     | NULL    |       | 7 B) |# R3 A' S, P
    6. | age   | int(11)     | YES  |     | NULL    |       | 7 C1 Q  \" O- {7 Q2 v1 l  k. X/ e
    7. +-------+-------------+------+-----+---------+-------+
    8. 2 rows in set (0.02 sec) * A1 \4 q- j$ I- N: |/ k6 y! X5 ~
    9. mysql> drop table test1; 0 f% k) m: }" ?7 I$ {) p" t# N
    10. Query OK, 0 rows affected (0.04 sec) % K+ D$ w. w; M
    11. mysql> desc test1; 3 P2 Y, r7 p% I+ {# R
    12. ERROR 1146 (42S02): Table 'mytestdb.test1' doesn't exist
    复制代码

    4 _- u6 i+ s/ X7 x+ ~- 重命名表 4 y# z/ \# v7 B
  • 语法+ }! K+ Z! H: j2 s9 m2 A% R
    1. rename table old_name to new_name; $ D) T( H5 B: f2 i' j9 u6 H7 K
    复制代码
  • 举例
      U" I# n5 Q2 ~8 j, \) c
    1. mysql> rename table book to eBook; 9 v: o8 D: s8 m- C; u0 z$ U7 a. p
    2. Query OK, 0 rows affected (0.05 sec)
    3. mysql> show tables;
    4. +--------------------+ 9 i1 d  Y" m0 c+ R
    5. | Tables_in_mytestdb |
    6. +--------------------+ 1 g1 h! {6 @1 k; [6 l/ a
    7. | ebook              |
    8. +--------------------+ 9 R3 p: N0 \" j* K6 Y& v
    9. 1 row in set (0.00 sec) - b5 S0 c8 j$ e1 L
    复制代码

      |8 m; B1 H' F8 Q/ c( ]! z三、MySQL 中的增删查改操作 5 g0 F7 J' ?3 N' ]1 r
    & x( V. A& W( N: w- ^- f1 E
    CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写5 j8 ], L+ B2 q# u7 ^7 P! @) T" n
    " n2 ^. X! A5 l7 w5 \

    9 L$ a$ \' _: P5 q案例:% i% k( j$ Q. ]. y& r4 }9 @
    4 m) A# K% o3 q% \+ Y+ Z
    1. -- 创建一张图书表
    2. mysql> create table if not exists book(
    3.     ->   book_name varchar(32) comment '图书名称', 2 y+ ]1 }4 o1 U
    4.     ->   book_author varchar(32)comment  '图书作者' , 0 E, H" z2 s; l* ^% k& i* J% m/ q
    5.     ->   book_price decimal(12,2) comment '图书价格', / P! n5 d$ U  m; l; t3 p8 Y
    6.     ->   book_category varchar(12) comment '图书分类',
    7.     ->   publish_data timestamp ! N+ a3 l) N6 Q4 r
    8.     -> )character set utf8mb4;
    复制代码

    ; O% W3 }, `' z0 j- 增加insert语句 6 x0 J1 {1 o2 R6 y2 T0 d3 l1 D
  • 单行插入(全列)
    3 q* x" D+ ^# |. l: u3 p/ r  D( Z' [
    1. insert into 表名 values(对应列的参数列表); 0 i$ \! t  b( c9 p# p( k* C" Q
    2. -- 一次插入一行
    复制代码
  • 多行插入(全列)$ S& P# t+ g1 |2 E
    1. insert into 表名 values(对应列的实参列表), (对应列的参数列表), (对应列的参数列表);               $ z: I3 I' C5 t! }+ q! v$ U8 }
    2. -- 一次插入多行 1 t3 }6 d: w+ x% ~: ^& ~
    复制代码
  • 指定列插入
    2 m. _6 U& I& Y / Q9 y) i+ r; A" h7 O9 W0 f9 I
      
    # z1 t0 {( {' j; _   
  • values 后面( )中的内容, 个数和类型要和表名后面( )中指定的结构匹配.
  • 未被指定的列会以默认值进行填充.
    ! ~5 a' _: U" l! i. A) G# c8 D' X  
    1. insert into 表名 (需要插入的列) values(对应列的参数列表); ( b+ W: y0 v% K' Q9 \4 Y1 D
    2. -- 一次插入一行 . z: Q6 Y, F5 n; m
    3. insert into 表名 (需要插入的列) values(对应列的参数列表), (), ().... ; b  l" G$ `" k' y7 v
    4. -- 一次插入多行 ) n+ N9 x4 I8 G4 k& [" q% \+ Q: ?
    复制代码
  • 案例
    % g7 {5 w0 d) d0 B: v7 z
    1. # 单行输入
    2. mysql> . T5 P7 q  _( D. A
    3. insert into book values('计算机网络','谢希仁',45,'计算机类','2020-12-25 12:51:00'); & r" t* K% h& t0 f5 K% c3 R
    4. Query OK, 1 row affected (0.01 sec)
    5. #多行输入
    6. mysql> 5 P+ `% c, J7 y' Z9 p! w$ ?, G
    7. insert into book values('计算机组成原理','王峰',45,'硬件类','2020-12-12 12:00:00'),
    8.     -> ('微机原理','李华',97,'硬件类','2000-12-19 20:00:00'); 9 v; V; t$ S* p  b8 @3 P. F
    9.    
    10. Query OK, 2 rows affected (0.04 sec)
    11. Records: 2  Duplicates: 0  Warnings: 0   ~. @3 M3 v1 e6 h% h) P
    12. #指定列插入
    13. mysql> * Y- S* f& Q( h" j
    14. insert into book(book_name,book_author,publish_data) values ('软件工程','张三','2020-05-06 12:00:00');
    15. Query OK, 1 row affected (0.02 sec)
    复制代码
  • 插入数据后的表如图所示:  K, w" J8 V; o6 d. e- n
    ( N! P. |: }- v$ ^) v: f
    1e9e777dafd6459026e084a6e8385c3a.png (30.91 KB, 下载次数: 0, 售价: 2 金钱)
  • 网络请求和响应时间开销 , 每次插入都会有一定的时间开销.
  • 数据库服务器是把数据保存在硬盘上的 , IO操作时,操作的次数带来的影响大于数据量.
  • 每一次sql操作,内部开启的事务也会占据一定的开销.
    + g. S. x: W( i- L* b

    4 g! P2 Y- B& @! g- C) o, v- 查询(select语句)
    ! p4 e( L: E+ e2 x  m# w
  • 全列查询 & n1 k. Q( M/ {5 y1 n

    1 u8 H- h0 f! Z, t  i  s; W 语法
    / O+ J$ ~  n* U6 z/ }
    + H! Y. \' h' A6 Q7 ~8 Y

    5 h2 y4 B) J) }. H
    1. select * from 表名
    2. --  * 表示通配符, 可以匹配表中的所有列.
    复制代码
    & b. C& u7 v* b4 @
    1 n5 }0 ^% O! v* c
    企业级别的数据库中慎用, 容易把I/O或者网络带宽吃满如果有外边的用户客户端要通过宽带访问服务器时服务器就无法做出正确的响应
    8 G! I! {8 ]6 M, L/ |
    1 O( s% E' p4 o% f+ w" \
    7 P5 }' y. ?! o! X! N5 S
    ; X6 L, q) H  w0 {: O5 M
    示例
    " T& L/ u- w. h6 I/ V
    9 u9 C/ Z0 i* X. q

    / @4 Y4 a  e1 l5 e6 x6 Q
    1. select * from book;
    复制代码
    ( X5 D8 h% ^0 ~. h" P, a
    b59ec1f8469a4efaab5f57e08bb457c7.png (33.72 KB, 下载次数: 0, 售价: 3 金钱)
  • 指定列查询
    3 s  i- F" c7 f/ }; l+ @8 ]
    1. select 列名...  from  表名
    复制代码
    & \8 [/ t! r( |8 Y% K" R! b
  • 示例 5 z4 U4 M* R! r, Q* v: w4 O
    1. )mysql> select book_name from book;
    2. +----------------+
    3. | book_name      | # |* |0 w; @+ _, s: m$ ~( y$ d5 h
    4. +----------------+ % A8 M  d1 P# T, D8 R
    5. | 计算机网络     |
    6. | 计算机组成原理 |
    7. | 微机原理       |
    8. | 软件工程       |
    9. +----------------+ , W* k7 F8 S/ r- U* m* V' w2 f
    10. 4 rows in set (0.01 sec)
    11. mysql> select book_author,book_price from book; 4 O/ k# [, Z6 x& u/ O  \
    12. +-------------+------------+ + f( L, g5 {/ D4 C" Z/ g/ J# C# v
    13. | book_author | book_price | * d4 Y# w  S) I% U
    14. +-------------+------------+ * Q" u  l; l+ l9 t) s
    15. | 谢希仁      |      45.00 |
    16. | 王峰        |      45.00 | 7 Y/ i7 @7 j! A& v6 V5 b2 \; k
    17. | 李华        |      97.00 |
    18. | 张三        |       NULL |
    19. +-------------+------------+
    20. 4 rows in set (0.00 sec)                   : s& Y2 G; h4 t# b! n
    复制代码
    - s/ i3 [5 k2 e% u4 ~* z
  • 查询你字段为表达式 9 h* T9 X/ ]0 k/ s0 z- d% k
    1. select 字段或表达式, 字段或表达式... from 表名;
    复制代码
    ' I" f: q2 f5 W8 m1 j
  • 示例 . d% U8 H4 j5 ?
    1. -- 查询图书涨价10元后所有图书的名称作者和价格
    2. mysql> select book_name ,book_author,book_price + 10 from book; 7 n; X! n6 e2 w
    3. +----------------+-------------+-----------------+ % Y4 _- ^+ C6 I! ~4 a1 W9 c
    4. | book_name      | book_author | book_price + 10 | . k# A+ e% D0 L) i
    5. +----------------+-------------+-----------------+
    6. | 计算机网络     | 谢希仁      |           55.00 | 1 u8 M- J7 t8 u4 m& j$ m
    7. | 计算机组成原理 | 王峰        |           55.00 | ) M/ E& t4 q) P2 T* [# T
    8. | 微机原理       | 李华        |          107.00 | & d6 x$ C: }6 f2 u9 U2 N" x
    9. | 软件工程       | 张三        |            NULL | $ a& O2 p0 {8 Q+ x
    10. +----------------+-------------+-----------------+
    11. 4 rows in set (0.00 sec) ( }- k$ T# E- S2 d
    复制代码

    ( J! r: c* Z, H- [& V, H0 ~3 W+ i/ D
  • 将表达式或者字段指定别名查询
    * ~' U4 c. w: T6 W% o& ?( p' ?
    0 l) E: w+ ]; X% v" C. N mysql中支持给所查询的表达式取一个别名 , 使用 as 可以使查询结果更加直观 , 代码的可读性也会更强.- D5 i% Y1 A/ L8 f$ k: u6 l; L
    % A  y  y* I7 L( l

    * M) B+ a4 u9 z; n/ R! Q$ X& T& k
    1. select 列名或表达式 as 别名, ... from 表名; " T5 M0 ^2 E3 U$ Z( a2 ^7 v
    复制代码

    0 s, T6 ^/ X( ^
  • 示例 ' M8 d) d3 t2 V2 {+ J" Z& h
    1. -- 将涨价20元后的图书价格取为别名newprice
    2. mysql> select book_name,book_author,book_price + 20 as newprice from book; 5 {* c: F9 C$ l
    3. +----------------+-------------+----------+ + u6 r% c, {3 W! k4 M2 v
    4. | book_name      | book_author | newprice |
    5. +----------------+-------------+----------+
    6. | 计算机网络     | 谢希仁      |    65.00 | / ]0 z0 o: q) `, O- v
    7. | 计算机组成原理 | 王峰        |    65.00 |
    8. | 微机原理       | 李华        |   117.00 |
    9. | 软件工程       | 张三        |     NULL | & `; x' H  n3 a2 A2 N
    10. +----------------+-------------+----------+
    11. 4 rows in set (0.00 sec)
    复制代码

    ) ?" _! q9 L! W6 K* k3 t/ U9 `+ F
  • 去重查询 2 P3 \! p' h1 i& G5 O9 W7 S
    1. select distinct 列名 from 表名
    复制代码

    ' y. K# _% c' a+ L
  • 示例
    ! S; l$ P7 @* B
    1. --book 表中插入一条重复的book_name数据
    2. mysql> insert into book values('计算机网络','张华',89,'计算机类','2020-11-23 11:00:00'); # e* p' b0 j, u) W- K: Y
    3. Query OK, 1 row affected (0.00 sec)
    4. mysql> select book_name from book;
    5. +----------------+ . ~  z! R5 X* w5 G  z# Q+ s  _+ L5 c
    6. | book_name      |
    7. +----------------+
    8. | 计算机网络     | % W3 O  Z" n# ]$ B7 v; n! ]
    9. | 计算机组成原理 | : D* e, w- n- A# H
    10. | 微机原理       |
    11. | 软件工程       |
    12. | 计算机网络     | / Q0 S) ?* W8 L  c) O- C
    13. +----------------+
    14. 5 rows in set (0.00 sec) ( s9 P! \+ J4 [
    15. mysql> select distinct book_name from book; 1 T( }$ F8 N' G+ D- L
    16. +----------------+ 1 S% T/ J! v8 Q5 c  j5 p( C( l9 X* D6 ~2 [
    17. | book_name      |
    18. +----------------+
    19. | 计算机网络     | - G! e& |" V: i1 Q3 ?# l: N
    20. | 计算机组成原理 |
    21. | 微机原理       | % L4 s/ Y* v7 D$ a; z
    22. | 软件工程       |
    23. +----------------+
    24. 4 rows in set (0.00 sec) & j" k4 J  y* a! |9 @- C
    复制代码

    ) n6 y# n3 l/ G! j
    / b: ~& `6 d( c% s. Q' L! u# t 查询结果当中,没有了重复的book _ name 元素,达到了去重效果.' l$ H7 m. ~1 \0 z  D

    , H0 i5 B* A# s! v0 D
    + s# P3 r. m* |5 c! `# _
  • 排序查询 7 C8 J/ N- r4 P
    1. select 列名
    2. from 表名
    3. order by 列名 asc(升序)/desc(降序); 8 o; R, n: [( h
    4. #  想要排序的列
    复制代码
    ! g% N+ s3 e; w7 |
  • 示例 - h) R! C( P* U" l" W5 P5 c
    1. # 按照书的价格升序进行排列
    2. mysql> select book_name,book_price from book order by book_price asc;
    3. +----------------+------------+
    4. | book_name      | book_price |
    5. +----------------+------------+ & B( o6 I+ ]/ O  u8 W' b7 @
    6. | 软件工程       |       NULL |
    7. | 计算机网络     |      45.00 |
    8. | 计算机组成原理 |      45.00 | & I6 @$ c/ J3 W( C, s9 @$ d
    9. | 计算机网络     |      89.00 | 7 l/ J8 }+ [7 |5 j: C
    10. | 微机原理       |      97.00 |
    11. +----------------+------------+ " W* ^0 m; J! g/ M
    12. 5 rows in set (0.00 sec)
    13. #按照书的价格降序进行排列 # N# \" N7 y1 N
    14. mysql> select book_name,book_price from book order by book_price desc; # {/ Q7 }2 e: {$ Q* U1 _+ j
    15. +----------------+------------+
    16. | book_name      | book_price |
    17. +----------------+------------+
    18. | 微机原理       |      97.00 |
    19. | 计算机网络     |      89.00 |
    20. | 计算机网络     |      45.00 |
    21. | 计算机组成原理 |      45.00 | 7 n7 m. H9 _! ]) Q- n
    22. | 软件工程       |       NULL |
    23. +----------------+------------+
    24. 5 rows in set (0.00 sec) 4 s, \, E7 B, |: V) p# W- y
    复制代码

    ' Q; F7 B; r8 K% b/ }% R) V1 s0 @( x) a . e1 j& `: s  f9 U+ [
  • 使用排序查询时 , 升序查询 asc 可以省略, 即默认为升序排列, null值一定为其中最小的.
  • 可以对多个字段进行排序,优先级按照书写的顺序进行. 7 }- E2 ~1 t6 L+ \! F1 _

    - v  Y* A( o" I! a
  • 示例
    ) [5 D0 X# g1 [3 X8 g0 Z
    1. # 查询按照价格升序 ,年份降序
    2. select name,price,age from book order by price asc,age desc;
    3. #查询按照总成绩进行降序 ! y9 w/ d  G5 N- E" Q1 [8 y
    4. select name,english+math+chinese as total from grade order by total desc; 7 P4 i" l8 |3 J5 j
    复制代码

    9 y# T* T3 e# f" x- M+ r
  • 条件查询 ! v5 |" h, d: G- v  w; X

    . g3 W& P; `( _( u$ S1 r 当我们使用查询时, 通常具有各种各样的前提条件 , 此时就需要使用条件查询来完成./ ~) ^* Z" I, K* T: b4 Y& Y9 q
    7 G, E; d6 a* l5 {

    , C4 M$ J0 [8 F/ v; E; V
    1. select 列名.. from 表名..where + 条件 1 Y) N9 M; d3 V# p
    复制代码

    7 C; C! ]: Y  Y2 g- R8 q. y- G
    " g6 U: _$ b- I 比较运算符' @1 ^8 ^, j9 M% @

    4 @% U) C) c" q/ }/ G# X/ \2 w
    8 Y3 t: I' t6 w- h* j) L7 Z2 J
    运算符说明>, >=, 等于null 安全例如 null  null 的结果是 true(1)!=, 不等于between a0 and a1范围匹配[a0, a1]如果 a0+ R+ [7 s3 p$ i: J0 @8 g

    ' m5 ?; M' |9 I1 y8 Y" O1 v! n 逻辑运算符" \: v1 }. `, i3 |. q  A
    $ C7 z% B+ }3 ~& ?. ?2 D7 @
    7 ~! `0 {' u+ C; o
    运算符说明and多个条件必须为 true , 结果才为trueor任意一个条件为true 结果才为truenot条件为true , 结果为false
    7 g( Z1 O& W5 t& g! h4 T9 o0 k$ Q " J% Z" z8 V8 @- k

    0 m' Z$ O) z  m6 \, i" ]( T. C $ F2 y! E% e& c
  • WHERE条件可以使用表达式但不能使用别名。
    5 A# O" N9 u! u% n, w7 {# s
  • AND的优先级高于OR在同时使用时需要使用小括号()包裹优先执行的部分6 k8 u* a$ n" U$ y" {; Z+ @5 {8 M

    # V9 ~. j6 a4 R3 K; g) L; L* ~$ m
    8 s' Z4 h. j" o# w5 U
  • 案例
    # h- w# X. N  p
    1. -- 查询图书价格低于50的图书作者和图书名称
    2. mysql> select book_name,book_author from book where book_price  select book_name ,book_author from book where book_price = 97;
    3. +-----------+-------------+ 5 f5 e, r7 Z! Y; _$ Q& |- P
    4. | book_name | book_author | , a9 r& O! L- m; M
    5. +-----------+-------------+ ( z9 N0 ]: T7 O% K0 m
    6. | 微机原理  | 李华        | 5 g& D* \4 D2 }8 S' K1 u8 @  h( b
    7. +-----------+-------------+ . M/ I) `5 f( y( E  K9 w
    8. 1 row in set (0.00 sec) / G% Z1 @: z& l6 H% z: l* [2 E
    9. -- 查询图书价格在50 - 100 之间的图书名称
    10. mysql> select book_name from book where book_price between 50 and 100; $ {. i: ?: G" n- X9 _0 y- L1 X& P2 Y
    11. +------------+
    12. | book_name  | . u. T- U3 J# ?* Q8 U+ B  m1 @0 r
    13. +------------+
    14. | 微机原理   |
    15. | 计算机网络 |
    16. +------------+ $ M( I) \5 v& {5 U3 O
    17. 2 rows in set (0.02 sec)\ 5 n1 Y. z6 g) c( i$ w
    18. -- 查询图书价格在此范围内的图书名称 & y6 K) u7 M, t8 j( C( S
    19. mysql> select book_name from book where book_price in (12,45); ' d; B* A1 Y# r: z5 m
    20. +----------------+ + p7 {3 s0 k" k: |" N
    21. | book_name      |
    22. +----------------+
    23. | 计算机网络     |
    24. | 计算机组成原理 | ) o* f, p0 N$ k  p) G) i
    25. +----------------+ 9 V- d( z" s# j% B+ a6 t
    26. 2 rows in set (0.00 sec) " u' D3 x: t$ n, \$ t  n
    复制代码

    8 y1 w% s$ M$ p( C; F, t$ ` 5 O$ G- ~- h0 H- }( R
    模糊查询8 O+ k5 d$ H- n. O) d
    5 y  C4 e7 ~/ T/ `: C& [) u
  • % 匹配任意多个包括 0 个字符
  • _ 匹配严格的一个字符
    0 N1 S0 m& B. h! `( P
    & J" M# p, s1 C) o( g6 V
    1. #查询姓张的作者的书本价格书名. * _6 f8 l+ f$ K- z0 C0 q
    2. mysql> select book_price,book_name,book_author from book where book_author like '张%'; ( S. D; O# {+ L: H9 {
    3. +------------+------------+-------------+   J: J( Z0 B+ S6 }
    4. | book_price | book_name  | book_author |
    5. +------------+------------+-------------+
    6. |       NULL | 软件工程   | 张三        | 1 v' G: H* {: [2 K
    7. |      89.00 | 计算机网络 | 张华        | ( v5 l2 Z  }' i  g9 X. l
    8. +------------+------------+-------------+
    9. 2 rows in set (0.00 sec) & w# o1 z3 `; W% y
    10. # 查询前缀为'计算机'后缀为七个字的书籍名称
    11. mysql> select book_name from book where book_name like '计算机____';
    12. +----------------+ 1 |( j# k' f$ i
    13. | book_name      |
    14. +----------------+
    15. | 计算机组成原理 | 2 N+ m- e2 V6 T. C7 c
    16. +----------------+ / ?+ r& ^4 o3 o
    17. #查询前缀为'计算机'的书籍名称并去重
    18. mysql> select distinct book_name from book where book_name like '计算机%';
    19. +----------------+ # p$ A, R* C( P+ q) P
    20. | book_name      |
    21. +----------------+ , R0 q" Y" E$ W; ?0 }% k
    22. | 计算机网络     | ! o" }& |$ c$ H% T  L* A7 r- P; p
    23. | 计算机组成原理 | ! V! v" F7 r5 @( c" d) u6 v
    24. +----------------+ 5 P% c) s; g9 ^
    25. 2 rows in set (0.00 sec)
    复制代码

    ' N4 Y8 X9 ]- D8 ~
  • 分页查询
    ; `- W+ g7 L, [
    ; u* ?+ K) [. o% x9 Y' m5 N 分页查询即将查询出的结果 , 按页进行呈现,并不是一次性展现出来,这种模式就是分页查询, mysql当中使用limit来实现分页查询.' f; g- j& [  `
    # z- [& K' y+ s% _! ^
  • limit 子句当中接受一个或者两个参数 , 这两个参数的值为0 或者正整数 8 H) z4 c, S! r

    ' j6 b8 q) a( t1 I0 t- C) g两个参数的limit子句的用法
    2 Q  K) h4 g! a, S
    6 x$ K; G5 E) e5 }
    1. select 元素1,元素2  from 表名  limit offset,count; 4 S  d2 L. y9 A
    2. #offset参数指定要返回的第一行的偏移量。第一行的偏移量为0而不是1。
    3. #count指定要返回的最大行数。 4 c$ U, G; F9 W) |* m4 @9 N- e9 P5 d
    复制代码
    ' U6 r' d% ^1 N+ R! N4 p$ j
    afcf4df6b58d7cc4d6ddac4e440f0517.jpeg (14.27 KB, 下载次数: 0, 售价: 6 金钱)
  • limit 结合 order by 语句 和其他条件可以获取n个最大或者最小值( x$ y$ m1 x8 O# W5 O) K- G
    1. select book_name,book_price from book order by book_price desc limit 3;
    2. #获取价格前三高的图书名称和图书价格
    3. mysql> select book_price,book_name from book order by book_price desc limit 3;
    4. +------------+------------+
    5. | book_price | book_name  | / U5 K* O5 P: [+ A( h( b0 T: V
    6. +------------+------------+ 7 U8 p8 Y  {. t( X! r' `
    7. |      97.00 | 微机原理   | 2 r5 i) n# Y! l1 v" ?8 d/ v, ]
    8. |      89.00 | 计算机网络 |
    9. |      45.00 | 计算机网络 |
    10. +------------+------------+
    11. 3 rows in set (0.01 sec)
    复制代码
  • 使用limit 获取第n高个最大值% m1 v: r& C) ~# L7 n$ q
    6 ~, x! L( U9 {  b" [
    . `8 T: M% N6 P& J! Z2 b2 F
    偏移量从
    1. 0
    复制代码
    开始所以要指定从n - 1 开始然后取一行记录
    - U! E9 ~$ E( l; A9 A
    0 L: P% A3 w8 ]* Q, k7 y  [" w1 z
    5 j5 @( [, W7 o8 q) d: M
    1. #示例:获取价格第二高的图书名称
    2. mysql> select book_name from book order by book_price desc limit 1,1; 5 R& l$ L+ D, K6 I5 @
    3. +------------+ 5 A# s6 c* w( a2 J% ]
    4. | book_name  |
    5. +------------+
    6. | 计算机网络 | * a' M6 j, X; \0 }: ~
    7. +------------+
    8. 1 row in set (0.00 sec) 7 ~' C7 t% e* f
    复制代码

    7 z( V3 \5 a, j- 修改(update) 9 i5 H/ f2 y0 P3 o- {! w, H
    MySQL当中使用update关键字来对数据进行修改 , 既可以修改单列又可以修改多列.& K& T  w7 S# U  f

    + w' w$ w. o8 `$ Q2 n
    1. update 表名 set 列名1 = 值 , 列名2 = 值 ... where 限制条件下修改 # I5 \. A; z5 Z) q/ t
    复制代码
    8 O% ?9 n# {( {6 [) W$ l0 L
    5 s- m, @+ P; D& V4 P
    1. SET
    复制代码
    子句指定要修改的列和新值。要更新多个列请使用以逗号分隔的列表。以字面值表达式或子查询的形式在每列的赋值中来提供要设置的值。
  • 第三使用WHERE子句中的条件指定要更新的行。
    1. WHERE
    复制代码
    子句是可选的。 如果省略
    1. WHERE
    复制代码
    子句则
    1. UPDATE
    复制代码
    语句将更新表中的所有行。

    6 ^: W" q% ^0 \5 D- i4 N1 F, ~6 E
    , x) X! j" a  F( V+ b$ A
    示例:0 q: `  ~) f  ~5 d* K
    6 ]3 y; K& L, \1 x
    1. #将书名为'软件工程'的图书价格修改为66元 7 ?( z& _. G( e
    2. mysql> update book set book_price = 66 where book_name = '软件工程'; & L, U$ [. H; O
    3. Query OK, 1 row affected (0.05 sec)
    4. Rows matched: 1  Changed: 1  Warnings: 0 4 V5 Z  I/ q& l7 p
    5. mysql> select book_price from book where book_name = '软件工程'; # k0 S6 j* X2 u; z8 K! e% u+ o# l! V
    6. +------------ 0 k  O1 q1 D' J( H% h4 G
    7. | book_price | ) P# _0 `% R7 G
    8. +------------+ 8 E2 v! \. f! }% a. h" q
    9. |      66.00 |
    10. +------------+ ) |/ X1 {- c" H$ @3 G' R$ v
    11. 1 row in set (0.00 sec) . A6 W( R; I# H3 i
    12. #将所有的图书价格修改为原来的二倍
    13. mysql> update book set book_price = 2 * book_price; 1 h" w) l9 T( o2 d/ W1 x/ [
    14. Query OK, 5 rows affected (0.02 sec)
    15. Rows matched: 5  Changed: 5  Warnings: 0
    16. #更新成功 & i. r$ S8 A( j9 ~) G. ?5 Y/ \
    17. mysql> select book_price from book;
    18. +------------+ ! ^8 W. N9 @  y& [* j; y9 n
    19. | book_price | ' b  Z! C# s8 {  C2 a; B
    20. +------------+ " u( p5 d! A1 C
    21. |      90.00 | 6 L8 {# ^0 ]' p
    22. |      90.00 | ( i% w/ V; x. Q3 J5 G# }4 F) E/ I6 u
    23. |     194.00 | 7 i- b/ c- ]( u5 g6 `! w
    24. |     132.00 | + q5 j" w/ \+ o: n
    25. |     178.00 |
    26. +------------+ $ M0 C$ g. s2 M
    27. 5 rows in set (0.00 sec)
    复制代码

    * @7 E  a2 B3 x9 n  g& v2 a5 X2 {- T- 删除(delete) * j9 D) ]6 l% A; Y6 x+ a
    要从表中删除数据,需要使用delete 语句, delete 语句的 用法如下! c* ~% u; {( O8 h% R9 F# j

    6 p4 [- j  Q7 P8 Y2 D4 b* ~
    1. delete from 表名 where + 条件
    复制代码
    - H5 F4 }* B$ J3 r. c1 Q$ L
    首先指定需要删除数据的表,其次使用条件指定where子句中删除的行记录, 如果行匹配条件,这些行记录将会删除.
    & X  q4 L. N7 ]0 k 7 |$ f/ j. W+ d. Q! Z- |
    ' t5 F! V! _. q. |. Q
    1. WHERE
    复制代码
    子句是可选的。如果省略
    1. WHERE
    复制代码
    子句
    1. DELETE
    复制代码
    语句将删除表中的所有行 , 请注意一旦删除数据它就会永远消失。因此在执行
    1. DELETE
    复制代码
    语句之前应该先备份数据库以防万一要找回删除过的数据。. I, `. Y* _  J  q# A  K0 T" p8 F# i
    . x4 [; r# P6 a# ]8 r
    ! ?' Y* g* `- N; x7 b
    示例0 S5 ]: p+ t' N- ?7 y- _
    4 a9 M) |- B4 N) p# d* n
    1. #删除图书表中图书单价大于150的图书记录
    2. mysql> delete from book where book_price > 150;
    3. Query OK, 2 rows affected (0.01 sec)
    4. mysql> select book_price from book; * s' c) k/ e2 |! G
    5. +------------+
    6. | book_price | 1 \6 M" B. C2 ~2 d) E) V( M
    7. +------------+
    8. |      90.00 |
    9. |      90.00 | * v1 }0 J! v6 D+ _3 W7 x, G# k
    10. |     132.00 |
    11. +------------+ % p6 F  l2 f. w3 \
    12. 3 rows in set (0.00 sec) ( @* e. C8 C7 ^0 B, L
    复制代码

    ) k# b( n7 E1 j+ M4 V, o4 ]$ c
    + ?5 O% P' |3 M* _$ {' F MySQL中delete 语句也可以结合limit语句 和 order by 语句来控制删除的数量和条件" K0 X6 B# y  I5 y
    6 A6 K* k; v1 g7 j7 |
    - j! E4 a- R1 I, @) `' q; a9 b# a
                    5 O, b, ~0 L- e% ~  N& ^$ X& g4 X" Y
                   
    0 v% w/ V3 C4 G; ]; G4 y                . X" q/ g( I' r6 a" X% T7 W: F
    本文来源csdn,由Java吧转载发布,观点不代表Java吧的立场,转载请标明来源出处:https://www.java8.com
  • 分享到:
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则