久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      一文詳解MySQL表的CURD操作

      本篇文章帶大家詳細(xì)了解MySQL表的CURD操作,希望對(duì)大家有所幫助!

      一文詳解MySQL表的CURD操作

      一、SQL語句

      操作關(guān)系型數(shù)據(jù)庫的編程語言,定義了一套操作關(guān)系型數(shù)據(jù)庫的統(tǒng)一標(biāo)準(zhǔn),簡(jiǎn)稱SQL。

      – SQL通用語法

      1 . SQL語句可以單行或多行書寫,以分號(hào)結(jié)尾。

      2 . SQL語句可以使用空格/縮進(jìn)來增強(qiáng)語句的可讀性。

      3 . MySQL數(shù)據(jù)庫的SQL語句不區(qū)分大小寫,關(guān)鍵字建議使用大寫。

      – 注釋
      • 單行注釋: – 注釋內(nèi)容 或者使用 # 注釋內(nèi)容 。
      • 多行注釋:/* 注釋內(nèi)容 */
      – SQL語句分類
      分類 說明
      DDL(deifnition) 數(shù)據(jù)定義語言(用來定義數(shù)據(jù)庫對(duì)象,數(shù)據(jù)庫,表,字段)
      DML(manipulation) 數(shù)據(jù)操縱語言(對(duì)數(shù)據(jù)庫 表中的是數(shù)據(jù)進(jìn)行增刪改)
      DQL(query) 數(shù)據(jù)查詢語言,用來查詢數(shù)據(jù)庫中表的記錄
      DCL(control) 數(shù)據(jù)控制語言,用來創(chuàng)建數(shù)據(jù)庫用戶,控制數(shù)據(jù)庫的訪問權(quán)限

      二、 基礎(chǔ)表操作

      – 創(chuàng)建表
      • 同一個(gè)數(shù)據(jù)庫中,不能有兩個(gè)表的名字相同,表名和列名不能和SQL的關(guān)鍵詞重復(fù)。

      • 語法:

      create table 表名(定義列1, 定義列2, .......); 列 -> 變量名 數(shù)據(jù)類型
      登錄后復(fù)制

      • 舉例:

      mysql> create table if not exists book(     ->   book_name varchar(32) comment '圖書名稱',     ->   book_author varchar(32)comment  '圖書作者' ,     ->   book_price decimal(12,2) comment '圖書價(jià)格',     ->   book_category varchar(12) comment '圖書分類',     ->   publish_data timestamp     -> )character set utf8mb4;      Query OK, 0 rows affected (0.04 sec)
      登錄后復(fù)制

      – 查看庫中的表
      • 語法:

        show tables;
        登錄后復(fù)制

      • 舉例:

        mysql> show tables; +--------------------+ | Tables_in_mytestdb | +--------------------+ | book               | +--------------------+ 1 row in set (0.00 sec)
        登錄后復(fù)制

      – 查看表結(jié)構(gòu)
      • 語法:

        desc  表名;
        登錄后復(fù)制

      • 舉例:
        一文詳解MySQL表的CURD操作

      MySQL數(shù)據(jù)庫中的表結(jié)構(gòu)主要包含以下幾種信息: 字段名稱,字段類型,是否允許為空,索引類型。默認(rèn)值,擴(kuò)充信息

      – 刪除表
      • 語法:

      drop table 表名
      登錄后復(fù)制

      • 舉例 :

      mysql> desc test1; +-------+-------------+------+-----+---------+-------+ | Field | Type        | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name  | varchar(10) | YES  |     | NULL    |       | | age   | int(11)     | YES  |     | NULL    |       | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.02 sec)  mysql> drop table test1; Query OK, 0 rows affected (0.04 sec)  mysql> desc test1; ERROR 1146 (42S02): Table 'mytestdb.test1' doesn't exist
      登錄后復(fù)制

      – 重命名表
      • 語法:

        rename table old_name to new_name;
        登錄后復(fù)制

      • 舉例:

        mysql> rename table book to eBook; Query OK, 0 rows affected (0.05 sec)  mysql> show tables; +--------------------+ | Tables_in_mytestdb | +--------------------+ | ebook              | +--------------------+ 1 row in set (0.00 sec)
        登錄后復(fù)制

      三、MySQL 中的增刪查改操作

      CRUD 即增加(Create)、查詢(Retrieve)、更新(Update)、刪除(Delete)四個(gè)單詞的首字母縮寫

      案例:

      -- 創(chuàng)建一張圖書表 mysql> create table if not exists book(     ->   book_name varchar(32) comment '圖書名稱',     ->   book_author varchar(32)comment  '圖書作者' ,     ->   book_price decimal(12,2) comment '圖書價(jià)格',     ->   book_category varchar(12) comment '圖書分類',     ->   publish_data timestamp     -> )character set utf8mb4;
      登錄后復(fù)制

      – 增加(insert語句)
      • 單行插入(全列)

        insert into 表名 values(對(duì)應(yīng)列的參數(shù)列表);  -- 一次插入一行
        登錄后復(fù)制

      • 多行插入(全列)

        insert into 表名 values(對(duì)應(yīng)列的實(shí)參列表), (對(duì)應(yīng)列的參數(shù)列表), (對(duì)應(yīng)列的參數(shù)列表);               -- 一次插入多行            -- 一次插入多行
        登錄后復(fù)制

      • 指定列插入

        • values 后面( )中的內(nèi)容, 個(gè)數(shù)和類型要和表名后面( )中指定的結(jié)構(gòu)匹配.
        • 未被指定的列會(huì)以默認(rèn)值進(jìn)行填充.

        insert into 表名 (需要插入的列) values(對(duì)應(yīng)列的參數(shù)列表);  -- 一次插入一行 insert into 表名 (需要插入的列) values(對(duì)應(yīng)列的參數(shù)列表), (), ()....  -- 一次插入多行
        登錄后復(fù)制

      • 案例

        # 單行輸入  mysql>  insert into book values('計(jì)算機(jī)網(wǎng)絡(luò)','謝希仁',45,'計(jì)算機(jī)類','2020-12-25 12:51:00'); Query OK, 1 row affected (0.01 sec)  #多行輸入  mysql>  insert into book values('計(jì)算機(jī)組成原理','王峰',45,'硬件類','2020-12-12 12:00:00'),     -> ('微機(jī)原理','李華',97,'硬件類','2000-12-19 20:00:00');      Query OK, 2 rows affected (0.04 sec) Records: 2  Duplicates: 0  Warnings: 0  #指定列插入  mysql> insert into book(book_name,book_author,publish_data) values ('軟件工程','張三','2020-05-06 12:00:00'); Query OK, 1 row affected (0.02 sec)
        登錄后復(fù)制

      • 插入數(shù)據(jù)后的表如圖所示:

        一文詳解MySQL表的CURD操作

      在MySQL當(dāng)中 , 多條記錄逐次插入的效率是要低于一次把多條紀(jì)錄一起插入的 ,原因如下:

      • 網(wǎng)絡(luò)請(qǐng)求和響應(yīng)時(shí)間開銷 , 每次插入都會(huì)有一定的時(shí)間開銷.
      • 數(shù)據(jù)庫服務(wù)器是把數(shù)據(jù)保存在硬盤上的 , IO操作時(shí),操作的次數(shù)帶來的影響大于數(shù)據(jù)量.
      • 每一次sql操作,內(nèi)部開啟的事務(wù)也會(huì)占據(jù)一定的開銷.
      – 查詢(select語句)
      • 全列查詢

      語法

      select * from 表名  --  * 表示通配符, 可以匹配表中的所有列.
      登錄后復(fù)制

      企業(yè)級(jí)別的數(shù)據(jù)庫中慎用, 容易把I/O或者網(wǎng)絡(luò)帶寬吃滿,如果有外邊的用戶客戶端要通過寬帶訪問服務(wù)器時(shí),服務(wù)器就無法做出正確的響應(yīng).

      示例

      select * from book;
      登錄后復(fù)制

      一文詳解MySQL表的CURD操作

      • 指定列查詢

      select 列名...  from  表名
      登錄后復(fù)制

      • 示例

      mysql> select book_name from book; +----------------+ | book_name      | +----------------+ | 計(jì)算機(jī)網(wǎng)絡(luò)     | | 計(jì)算機(jī)組成原理 | | 微機(jī)原理       | | 軟件工程       | +----------------+ 4 rows in set (0.01 sec)  mysql> select book_author,book_price from book; +-------------+------------+ | book_author | book_price | +-------------+------------+ | 謝希仁      |      45.00 | | 王峰        |      45.00 | | 李華        |      97.00 | | 張三        |       NULL | +-------------+------------+ 4 rows in set (0.00 sec)
      登錄后復(fù)制

      • 查詢你字段為表達(dá)式

      select 字段或表達(dá)式, 字段或表達(dá)式... from 表名;
      登錄后復(fù)制

      • 示例

      -- 查詢圖書漲價(jià)10元后所有圖書的名稱作者和價(jià)格 mysql> select book_name ,book_author,book_price + 10 from book; +----------------+-------------+-----------------+ | book_name      | book_author | book_price + 10 | +----------------+-------------+-----------------+ | 計(jì)算機(jī)網(wǎng)絡(luò)     | 謝希仁      |           55.00 | | 計(jì)算機(jī)組成原理 | 王峰        |           55.00 | | 微機(jī)原理       | 李華        |          107.00 | | 軟件工程       | 張三        |            NULL | +----------------+-------------+-----------------+ 4 rows in set (0.00 sec)
      登錄后復(fù)制

      • 將表達(dá)式或者字段指定別名查詢

      mysql中支持給所查詢的表達(dá)式取一個(gè)別名 , 使用 as 可以使查詢結(jié)果更加直觀 , 代碼的可讀性也會(huì)更強(qiáng).

      select 列名或表達(dá)式 as 別名, ... from 表名;
      登錄后復(fù)制

      • 示例

      -- 將漲價(jià)20元后的圖書價(jià)格取為別名newprice mysql> select book_name,book_author,book_price + 20 as newprice from book; +----------------+-------------+----------+ | book_name      | book_author | newprice | +----------------+-------------+----------+ | 計(jì)算機(jī)網(wǎng)絡(luò)     | 謝希仁      |    65.00 | | 計(jì)算機(jī)組成原理 | 王峰        |    65.00 | | 微機(jī)原理       | 李華        |   117.00 | | 軟件工程       | 張三        |     NULL | +----------------+-------------+----------+ 4 rows in set (0.00 sec)
      登錄后復(fù)制

      • 去重查詢

      select distinct 列名 from 表名
      登錄后復(fù)制

      • 示例

      --book 表中插入一條重復(fù)的book_name數(shù)據(jù)  mysql> insert into book values('計(jì)算機(jī)網(wǎng)絡(luò)','張華',89,'計(jì)算機(jī)類','2020-11-23 11:00:00'); Query OK, 1 row affected (0.00 sec)  mysql> select book_name from book; +----------------+ | book_name      | +----------------+ | 計(jì)算機(jī)網(wǎng)絡(luò)     | | 計(jì)算機(jī)組成原理 | | 微機(jī)原理       | | 軟件工程       | | 計(jì)算機(jī)網(wǎng)絡(luò)     | +----------------+ 5 rows in set (0.00 sec)  mysql> select distinct book_name from book; +----------------+ | book_name      | +----------------+ | 計(jì)算機(jī)網(wǎng)絡(luò)     | | 計(jì)算機(jī)組成原理 | | 微機(jī)原理       | | 軟件工程       | +----------------+ 4 rows in set (0.00 sec)
      登錄后復(fù)制

      查詢結(jié)果當(dāng)中,沒有了重復(fù)的book _ name 元素,達(dá)到了去重效果.

      • 排序查詢

      select 列名  from 表名  order by 列名 asc(升序)/desc(降序);  #  想要排序的列
      登錄后復(fù)制

      • 示例

      # 按照書的價(jià)格升序進(jìn)行排列 mysql> select book_name,book_price from book order by book_price asc; +----------------+------------+ | book_name      | book_price | +----------------+------------+ | 軟件工程       |       NULL | | 計(jì)算機(jī)網(wǎng)絡(luò)     |      45.00 | | 計(jì)算機(jī)組成原理 |      45.00 | | 計(jì)算機(jī)網(wǎng)絡(luò)     |      89.00 | | 微機(jī)原理       |      97.00 | +----------------+------------+ 5 rows in set (0.00 sec)  #按照書的價(jià)格降序進(jìn)行排列 mysql> select book_name,book_price from book order by book_price desc; +----------------+------------+ | book_name      | book_price | +----------------+------------+ | 微機(jī)原理       |      97.00 | | 計(jì)算機(jī)網(wǎng)絡(luò)     |      89.00 | | 計(jì)算機(jī)網(wǎng)絡(luò)     |      45.00 | | 計(jì)算機(jī)組成原理 |      45.00 | | 軟件工程       |       NULL | +----------------+------------+ 5 rows in set (0.00 sec)
      登錄后復(fù)制

      • 使用排序查詢時(shí) , 升序查詢 asc 可以省略, 即默認(rèn)為升序排列, null值一定為其中最小的.
      • 可以對(duì)多個(gè)字段進(jìn)行排序,優(yōu)先級(jí)按照書寫的順序進(jìn)行.
      • 示例

      # 查詢按照價(jià)格升序 ,年份降序 select name,price,age from book order by price asc,age desc; #查詢按照總成績(jī)進(jìn)行降序 select name,english+math+chinese as total from grade order by total desc;
      登錄后復(fù)制

      • 條件查詢

      當(dāng)我們使用查詢時(shí), 通常具有各種各樣的前提條件 , 此時(shí)就需要使用條件查詢來完成.

      select 列名.. from 表名..where + 條件
      登錄后復(fù)制

      比較運(yùn)算符

      運(yùn)算符 說明
      >, >=, <, <= 大于,大于等于,小于,小于等于
      = 等于,null 不安全,例如 null = null 的結(jié)果是 null(false)
      <=> 等于,null 安全,例如 null <=> null 的結(jié)果是 true(1)
      !=, <> 不等于
      between a0 and a1 范圍匹配,[a0, a1],如果 a0 <= value <= a1,返回 true(1)
      in (option, …) 如果是 option 中的任意一個(gè),返回 true(1)
      is null 是 null
      is not null 不是 null
      like 模糊匹配; % 表示任意多個(gè)(包括 0 個(gè))任意字符;_ 表示任意一個(gè)字符

      邏輯運(yùn)算符

      運(yùn)算符 說明
      and 多個(gè)條件必須為 true , 結(jié)果才為true
      or 任意一個(gè)條件為true 結(jié)果才為true
      not 條件為true , 結(jié)果為false

      • WHERE條件可以使用表達(dá)式,但不能使用別名。

      • AND的優(yōu)先級(jí)高于OR,在同時(shí)使用時(shí),需要使用小括號(hào)()包裹優(yōu)先執(zhí)行的部分

      • 案例

      -- 查詢圖書價(jià)格低于50的圖書作者和圖書名稱 mysql> select book_name,book_author from book where book_price < 50; +----------------+-------------+ | book_name      | book_author | +----------------+-------------+ | 計(jì)算機(jī)網(wǎng)絡(luò)     | 謝希仁      | | 計(jì)算機(jī)組成原理 | 王峰        | +----------------+-------------+ 2 rows in set (0.05 sec)   -- 查詢圖書價(jià)格等于97的圖書作者 mysql> select book_name ,book_author from book where book_price = 97; +-----------+-------------+ | book_name | book_author | +-----------+-------------+ | 微機(jī)原理  | 李華        | +-----------+-------------+ 1 row in set (0.00 sec) -- 查詢圖書價(jià)格在50 - 100 之間的圖書名稱 mysql> select book_name from book where book_price between 50 and 100; +------------+ | book_name  | +------------+ | 微機(jī)原理   | | 計(jì)算機(jī)網(wǎng)絡(luò) | +------------+ 2 rows in set (0.02 sec) -- 查詢圖書價(jià)格在此范圍內(nèi)的圖書名稱 mysql> select book_name from book where book_price in (12,45); +----------------+ | book_name      | +----------------+ | 計(jì)算機(jī)網(wǎng)絡(luò)     | | 計(jì)算機(jī)組成原理 | +----------------+ 2 rows in set (0.00 sec)
      登錄后復(fù)制

      模糊查詢

      • % 匹配任意多個(gè)(包括 0 個(gè))字符
      • _ 匹配嚴(yán)格的一個(gè)字符

      #查詢姓張的作者的書本價(jià)格書名. mysql> select book_price,book_name,book_author from book where book_author like '張%';  +------------+------------+-------------+ | book_price | book_name  | book_author | +------------+------------+-------------+ |       NULL | 軟件工程   | 張三        | |      89.00 | 計(jì)算機(jī)網(wǎng)絡(luò) | 張華        | +------------+------------+-------------+ 2 rows in set (0.00 sec) # 查詢前綴為'計(jì)算機(jī)'后綴為七個(gè)字的書籍名稱 mysql> select book_name from book where book_name like '計(jì)算機(jī)____'; +----------------+ | book_name      | +----------------+ | 計(jì)算機(jī)組成原理 | +----------------+ #查詢前綴為'計(jì)算機(jī)'的書籍名稱并去重 mysql> select distinct book_name from book where book_name like '計(jì)算機(jī)%'; +----------------+ | book_name      | +----------------+ | 計(jì)算機(jī)網(wǎng)絡(luò)     | | 計(jì)算機(jī)組成原理 | +----------------+ 2 rows in set (0.00 sec)
      登錄后復(fù)制

      • 分頁查詢

      分頁查詢即將查詢出的結(jié)果 , 按頁進(jìn)行呈現(xiàn),并不是一次性展現(xiàn)出來,這種模式就是分頁查詢, mysql當(dāng)中使用limit來實(shí)現(xiàn)分頁查詢.

      • limit 子句當(dāng)中接受一個(gè)或者兩個(gè)參數(shù) , 這兩個(gè)參數(shù)的值為0 或者正整數(shù)

      兩個(gè)參數(shù)的limit子句的用法

      select 元素1,元素2  from 表名  limit offset,count;  #offset參數(shù)指定要返回的第一行的偏移量。第一行的偏移量為0,而不是1。 #count指定要返回的最大行數(shù)。
      登錄后復(fù)制

      一文詳解MySQL表的CURD操作

      示例:

      mysql> select book_author from book limit 2, 3; +-------------+ | book_author | +-------------+ | 李華        | | 張三        | | 張華        | +-------------+ 3 rows in set (0.02 sec)  #表示獲取列表當(dāng)中偏移量為2(表示從第3行開始), 最大行數(shù)為3的作者名稱
      登錄后復(fù)制

      帶有一個(gè)參數(shù)的limit子句的用法

      select 列名1.列名2 from 表名 limit count; #  表示從結(jié)果集的開頭返回的最大行數(shù)為count; #  獲取前count行的記錄
      登錄后復(fù)制

      等同于

      select 列名1 ,列名2 from 表名 limit 0 , count;# 第一行的偏移量為0
      登錄后復(fù)制

      示例

      mysql> select book_price from book limit 5; +------------+ | book_price | +------------+ |      45.00 | |      45.00 | |      97.00 | |       NULL | |      89.00 | +------------+ 5 rows in set (0.00 sec)  # 獲取表中前五行的圖書價(jià)格 , 最大行數(shù)為5
      登錄后復(fù)制

      • limit 結(jié)合 order by 語句 和其他條件可以獲取n個(gè)最大或者最小值

        select book_name,book_price from book order by book_price desc limit 3;  #獲取價(jià)格前三高的圖書名稱和圖書價(jià)格 mysql> select book_price,book_name from book order by book_price desc limit 3; +------------+------------+ | book_price | book_name  | +------------+------------+ |      97.00 | 微機(jī)原理   | |      89.00 | 計(jì)算機(jī)網(wǎng)絡(luò) | |      45.00 | 計(jì)算機(jī)網(wǎng)絡(luò) | +------------+------------+ 3 rows in set (0.01 sec)
        登錄后復(fù)制

      • 使用limit 獲取第n高個(gè)最大值

      偏移量從0開始,所以要指定從n – 1 開始,然后取一行記錄

      #示例:獲取價(jià)格第二高的圖書名稱  mysql> select book_name from book order by book_price desc limit 1,1; +------------+ | book_name  | +------------+ | 計(jì)算機(jī)網(wǎng)絡(luò) | +------------+ 1 row in set (0.00 sec)
      登錄后復(fù)制

      – 修改(update)

      MySQL當(dāng)中使用update關(guān)鍵字來對(duì)數(shù)據(jù)進(jìn)行修改 , 既可以修改單列又可以修改多列.

      update 表名 set 列名1 = 值 , 列名2 = 值 ... where 限制條件下修改
      登錄后復(fù)制

      • SET子句指定要修改的列和新值。要更新多個(gè)列,請(qǐng)使用以逗號(hào)分隔的列表。以字面值,表達(dá)式或子查詢的形式在每列的賦值中來提供要設(shè)置的值。
      • 第三,使用WHERE子句中的條件指定要更新的行。WHERE子句是可選的。 如果省略WHERE子句,則UPDATE語句將更新表中的所有行。

      示例:

      #將書名為'軟件工程'的圖書價(jià)格修改為66元 mysql> update book set book_price = 66 where book_name = '軟件工程'; Query OK, 1 row affected (0.05 sec) Rows matched: 1  Changed: 1  Warnings: 0  mysql> select book_price from book where book_name = '軟件工程'; +------------ | book_price | +------------+ |      66.00 | +------------+ 1 row in set (0.00 sec)  #將所有的圖書價(jià)格修改為原來的二倍 mysql> update book set book_price = 2 * book_price; Query OK, 5 rows affected (0.02 sec) Rows matched: 5  Changed: 5  Warnings: 0 #更新成功 mysql> select book_price from book; +------------+ | book_price | +------------+ |      90.00 | |      90.00 | |     194.00 | |     132.00 | |     178.00 | +------------+ 5 rows in set (0.00 sec)
      登錄后復(fù)制

      – 刪除(delete)

      要從表中刪除數(shù)據(jù),需要使用delete 語句, delete 語句的 用法如下

      delete from 表名 where + 條件
      登錄后復(fù)制

      首先指定需要?jiǎng)h除數(shù)據(jù)的表,其次使用條件指定where子句中刪除的行記錄, 如果行匹配條件,這些行記錄將會(huì)刪除.

      WHERE子句是可選的。如果省略WHERE子句,DELETE語句將刪除表中的所有行 , 請(qǐng)注意,一旦刪除數(shù)據(jù),它就會(huì)永遠(yuǎn)消失。因此,在執(zhí)行DELETE語句之前,應(yīng)該先備份數(shù)據(jù)庫,以防萬一要找回刪除過的數(shù)據(jù)。

      示例

      #刪除圖書表中圖書單價(jià)大于150的圖書記錄 mysql> delete from book where book_price > 150; Query OK, 2 rows affected (0.01 sec)  mysql> select book_price from book; +------------+ | book_price | +------------+ |      90.00 | |      90.00 | |     132.00 | +------------+ 3 rows in set (0.00 sec)
      登錄后復(fù)制

      MySQL中delete 語句也可以結(jié)合limit語句 和 order by 語句來控制刪除的數(shù)量和條件

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)