認識mysql(2)

来源:https://www.cnblogs.com/python-sl/archive/2018/08/20/9508291.html
-Advertisement-
Play Games

1、表欄位的操作 1、語法 :alter table 表名 執行動作; 2、添加欄位(add) alter table 表名 add 欄位名 數據類型; alter table 表名 add 欄位名 數據類型 first; alter table 表名 add 欄位名 數據類型 after 欄位名; ...



1、表欄位的操作
1、語法 :alter table 表名 執行動作;
2、添加欄位(add)
alter table 表名 add 欄位名 數據類型;
alter table 表名 add 欄位名 數據類型 first;
alter table 表名 add 欄位名 數據類型 after 欄位名;
3、刪除欄位(drop)
alter table 表名 drop 欄位名;
4、修改數據類型(modify)
alter table 表名 modify 欄位名 新數據類型;
5、表重命名(rename)
alter table 表名 rename 新表名;
6、練習
1、創建庫 studb2
2、在庫中創建表 t1 ,欄位有3個:name、age、phnumber
use studb2;
create table t1(
name char(20),
age tinyint unsigned,
phnumber char(11)
);
3、查看表結構
desc t1;
4、在表中第一列添加一個 id 欄位
alter table t1 add id int first;
5、把 phnumber 的數據類型改為 bigint
alter table t1 modify phnumber bigint;
6、在表中最後一列添加一個欄位 address
alter table t1 add address varchar(50);
7、刪除表中的 age 欄位
alter table t1 drop age;
8、查看表結構
desc t1;
2、數據類型
1、數值類型
2、字元類型
1、字元類型寬度和數值類型寬度的區別
1、數值類型寬度為顯示寬度,只用於select查詢顯示,和占用存儲無關,可用zerofill查看效果
2、字元類型的寬度超過之後則無法存儲
3、枚舉類型
1、單選(enum) :欄位名 enum(值1,值2,...)
2、多選(set) :欄位名 set(值1,值2,...)
## 插入記錄時: "F,study,Python"
create table t5(
id int(3) zerofill,
name varchar(15),
sex enum("M","F","Secret"),
likes set("F","M","study","Python")
);
insert into t5(likes) values("F,study,Python");
4、日期時間類型
1、date :"YYYY-MM-DD"
2、time :"HH:MM:SS"
3、datetime :"YYYY-MM-DD HH:MM:SS"
4、timestamp :"YYYY-MM-DD HH:MM:SS"
5、註意
1、datetime :不給值預設返回NULL值
2、timestamp :不給值預設返回系統當前時間
create table t7(
id int,
name varchar(15),
birthday date,
money int,
shijian datetime
);
insert into t7 values(2,"王",date(now()),10000,now());
3、日期時間函數
1、now() 返回伺服器當前時間
2、curdate() 返回當前日期
3、curtime() 返回當前時間
4、year(date) 返回指定時間的年份
5、date(date) 返回指定時間的日期
6、time(date) 返回指定時間的時間
7、練習
1、在表中插入3條記錄
insert into t7 values
(3,"小昭",19000520,3000,20180630000000),
(4,"趙敏",19000521,4000,20180702000000),
(5,"周芷若",19010522,3500,20180702100000);
2、查找2018年7月2日有哪些用戶充值了
select * from t7 where date(shijian)="2018-07-02";

3、查找2018年7月份充值的信息
select * from t7
where
date(shijian)>="2018-07-01" and date(shijian)<="2018-07-31";

4、查找7月30日10:00-12:00充值的信息
select * from t7
where
date(shijian)="2018-07-31" and
time(shijian)>="10:00:00" and
time(shijian)<="12:00:00";
4、日期時間運算
1、語法格式
select * from 表名
where 欄位名 運算符 (時間-interval 時間間隔單位);
時間間隔單位:
1 day | 2 hour | 1 minute | 2 year | 3 month
2、練習
1、查詢1天以內的記錄
select * from t7
where shijian > (now()-interval 1 day);
age > 20
2、查詢1年以前的記錄
select * from t7
where shijian < (now()-interval 1 year);
3、查詢1天以前,3天以內的記錄
select * from t7
where
shijian < (now()-interval 1 day) and
shijian > (now()-interval 3 day);
5、表記錄管理
1、刪除表記錄
1、delete from 表名 where 條件;
2、註意
delete語句後如果不加where條件,所有記錄全部清空
2、更新表記錄
1、update 表名 set 欄位1=值1,欄位2=值2,... where 條件;
2、註意
必須加where條件
3、練習(表hero)
1、查找所有蜀國人的信息
select * from hero where country="蜀國";
2、查找所有女英雄的姓名、性別和國家
select name,sex,country from hero
where sex="女";
3、把id為2的記錄改為典韋,性別男,國家魏國
update hero set name="典韋",sex="男",country="魏國" where id=2;
4、刪除所有蜀國英雄
delete from hero where country="蜀國";
5、把貂蟬的國籍改為魏國
update hero set country="魏國"
where name="貂蟬";
6、刪除所有表記錄
delete from hero;
4、運算符操作
1、數值比較/字元比較
1、數值比較 := != > >= < <=
2、字元比較 := !=
3、練習
1、查找攻擊力高於150的英雄的名字和攻擊值
select name,gongji from sanguo where gongji>150;
2、將趙雲的攻擊力設置為360,防禦力設置為68
update sanguo set gongji=360,fangyu=68
where name="趙雲";
2、邏輯比較
1、and (兩個或多個條件同時成立)
2、or (任意一個條件成立即可)
3、練習
1、找出攻擊值高於200的蜀國英雄的名字、攻擊力
select name as n,gongji as g from sanguo
where gongji>200 and country="蜀國";
2、將吳國英雄中攻擊值為110的英雄的攻擊值改為100,防禦力改為60
update sanguo set gongji=100,fangyu=60
where country="吳國" and gongji=110;
3、查找蜀國和魏國的英雄信息
select * from sanguo
where country="蜀國" or country="魏國";
3、範圍內比較
1、between 值1 and 值2
2、where 欄位名 in(值1,值2,...)
3、where 欄位名 not in(值1,值2,...)
4、練習
1、查找攻擊值100-200的蜀國英雄信息
select * from sanguo
where gongji between 100 and 200 and
country="蜀國";
2、找到蜀國和吳國以外的國家的女英雄信息
select * from sanguo
where country not in("蜀國","吳國")
and sex="女";
3、找到id為1、3或5的蜀國英雄 和 貂蟬的信息
select * from sanguo
where
(id in(1,3,5) and country="蜀國") or name="貂蟬";
4、匹配空、非空
1、空 :where name is null
2、非空:where name is not null
3、示例
1、姓名為NULL值的蜀國女英雄信息
select * from sanguo
where
name is null and country="蜀國" and sex="女";
2、姓名為 "" 的英雄信息
select * from sanguo where name="";
4、註意
1、NULL :空值,只能用 is 或者 is not 去匹配
2、"" :空字元串,用 = 或者 != 去匹配
5、模糊比較
1、where 欄位名 like 表達式
2、表達式
1、_ : 匹配單個字元
2、% : 匹配0到多個字元
3、示例
select name from sanguo where name like "_%_";
select name from sanguo where name like "%";
## NULL不會被統計,只能用is、is not去匹配
select name from sanguo where name like "___";
select name from sanguo where name like "趙%";
5、SQL查詢
1、總結
3、select ...聚合函數 from 表名
1、where ...
2、group by ...
4、having ...
5、order by ...
6、limit ...;
2、order by
1、給查詢結果進行排序
2、... order by 欄位名 ASC/DESC
3、升序:ASC(預設)
降序:DESC
4、示例
1、將英雄按防禦值從高到低排序

2、將蜀國英雄按攻擊值從高到低排序

3、將魏蜀兩國英雄中名字為三個字的按防禦值升序排列
select * from sanguo
where
country in("蜀國","魏國") and name like "___"
order by fangyu ASC;

select * from sanguo
where
(country="魏國" or country="蜀國") and name like "___"
order by fangyu;
3、limit (永遠放在SQL語句的最後寫)
1、作用 :限制顯示查詢記錄的個數
2、用法
1、limit n -> 顯示 n 條記錄
2、limit m,n
m 表示 從第m+1條記錄開始顯示,顯示 n 條
limit 2,3 : 第 3、4、5 三條記錄
3、示例
1、在蜀國英雄中,查找防禦值倒數第二名至倒數第四名的英雄的記錄
select * from sanguo
where country="蜀國"
order by fangyu asc
limit 1,3;
2、在蜀國英雄中,查找攻擊值前3名且名字不為 NULL 的英雄的姓名、攻擊值和國家
select name,gongji,country from sanguo
where
country="蜀國" and name is not NULL
order by gongji DESC
limit 3;
4、分頁
每頁顯示5條記錄,顯示第4頁的內容

第1頁 :limit 0,5 # 1 2 3 4 5
第2頁 :limit (2-1)*5,5 # 6 7 8 9 10
第3頁 :limit (3-1)*5,5 # 11 12 13 14 15
第4頁 :limit (4-1)*5,5 # 16 17 18 19 20

每頁顯示n條記錄,顯示第m頁 :limit (m-1)*n,n
4、聚合函數
1、分類
avg(欄位名) : 求該欄位平均值
sum(欄位名) : 求和
max(欄位名) : 最大值
min(欄位名) : 最小值
count(欄位名) : 統計該欄位記錄的個數
2、示例
1、攻擊力最強值是多少
select max(gongji) from MOSHOU.sanguo;
2、統計id 、name 兩個欄位分別有幾條記錄
select count(id),count(name) from sanguo;
## 空值 NULL 不會被統計,""會被統計

3、計算蜀國英雄的總攻擊力
select sum(gongji) from MOSHOU.sanguo
where country="蜀國";
4、統計蜀國英雄中攻擊值大於200的英雄的數量
select count(*) from MOSHOU.sanguo
where gongji>200 and country="蜀國";

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 將PDF轉換成HTML,是打造專業網站最快速便捷的方法之一,不過,當小伙伴們找來一堆詳細的PDF資料,想將它轉換為網頁格式,重新手動開發會消耗大量的時間和精力,非常的麻煩。此時如果有一種快速、批量將PDF轉換為HTML的方法,工作效率就會大大提升。 所以,今天小編就給大伙兒介紹一種快速將PDF轉換成 ...
  • 今天,在使用fedora時,需要修改防火牆規則,一時間忘記了命令是什麼,這裡進行記錄一下。 目前 fedora 28/ centos 7 使用 firewalld 作為防火牆軟體;下麵我就怎麼簡單管理防火牆規則進行記錄,網上的例子很多,這裡我列舉我經常使用的命令,來進行備忘: 基本使用(使用這些命令 ...
  • 一個網站項目,肯定是避免不了404頁面的,通常使用Nginx作為Web伺服器時,有以下集中配置方式,一起來看看。 第一種:Nginx自己的錯誤頁面 Nginx訪問一個靜態的html 頁面,當這個頁面沒有的時候,Nginx拋出404,那麼如何返回給客戶端404呢? 看下麵的配置,這種情況下不需要修改任 ...
  • 今天在使用 httpd 做文件伺服器的時候,發現 png 圖像沒有打開,但是原本www/html 文件夾內部的文件就可以打開。後來猜測是selinux 的問題,之前一直想寫一篇關於selinux 的博文,現在先在這裡提到一點吧。 欲詳細解決 (13) Permission Denied 問題, 可以 ...
  • 本文轉載自網路 1.1 shell家族 shell:命令解釋器,根據輸入的命令執行相應命令。 察看當前系統下有哪些shell: 察看當前系統正在使用的shell 常見shell: 1.2 bash bash 是一個為GNU計劃編寫的Unix shell。它的名字是一系列縮寫:Bourne-Again ...
  • #timedatectl set-timezone Asia/Shanghai 關閉SELinux vi /etc/sysconfig/selinux #SELINUX=enforcing SELINUX=disabled setenforce 0 getenforce #yum install - ...
  • 1、mysql幾個重要的文件 每個資料庫新建後,會產生資料庫文件夾,在該文件夾下每張表均對應以下三個文件: xx.frm 存放表結構 xx.MYD 存放表數據 xx.MYI 存放表索引 mysq非常重要的配置文件 my.ini 全局配置文件 2、mysql的邏輯架構 連接層 服務層 引擎層:存儲引擎 ...
  • 數據列定義 表中數據行的數據插入和數據類型都是基於數據列的,學會添加數據列在開發過程中是必不可少的。 使用SSMS資料庫管理工具添加數據列 在數據表中添加一列或者多列步驟相同 1、連接資料庫,選擇數據表-》右鍵點擊-》選擇設計。 2、在新打開的視窗中輸入中-》輸入列名,數據類型,是否可空-》在下麵輸 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...