MySQL 操作資料庫、數據表

来源:https://www.cnblogs.com/chy18883701161/archive/2020/03/06/12423244.html
-Advertisement-
Play Games

通過mysql-client連接到mysql-server,sql語句要以分號結尾,這樣按Enter才會執行sql語句。 mysql關鍵字不區分大小寫 字元串、時間日期類型的值要引起來 資料庫操作 show databases; #顯示已有的資料庫 create database db_studen ...


 

通過mysql-client連接到mysql-server,sql語句要以分號結尾,這樣按Enter才會執行sql語句。

mysql關鍵字不區分大小寫

字元串、時間日期類型的值要引起來

 

 

資料庫操作

show databases;  #顯示已有的資料庫

create database db_student character set utf8;  #新建資料庫並指定使用的字元集
create database db_student;  #新建資料庫,使用預設的字元集

drop database db_studrnt; #刪除資料庫

use db_student; #使用指定的資料庫。要先使用此語句,才能使用該資料庫中的表

 

 

 

數據表操作

show tables;  #查看當前資料庫中的表

drop table 表名; #刪除表

desc 表名; #查看該表的定義

show create table 表名; #查看該表的建表語句

rename table 原表名 to 新表名;

 create table tb_user(
    id int not null auto_increment,  #欄位名 數據類型 【約束】

    name varchar(20) not null, 
    primary key (id)   #設置主鍵  

  );

 

 alter table 表名 add 欄位名 數據類型 [約束];  #添加一列

  alter table 表名 drop 欄位名;  #刪除一列

 alter table 表名 modify 欄位名 數據類型 [約束] ;  #修改某列的定義

  alter table 表名 character set utf8;  #修改字元集

 

 

  

欄位名寫成`欄位名`的形式,可以防止欄位名和mysql關鍵字衝突(欄位名和mysql關鍵字相同)

 

 

 

記錄操作

select 列名1,列名2 from 表名;  #返會的結果集是一張虛擬的表
select * from 表名;




insert into 表名 (列名1,列名2) values (值1,值2); #插入一條記錄
insert into 表名 (列名1,列名2) values (值1,值2),(值11,值22);  #同時插入多條記錄,()之間逗號分隔

insert into 表名 values (值1,值2,...); #插入所有欄位




delete from 表名 where ... #刪除記錄

delete from 表名; #刪除表中所有記錄
truncate table 表名; #刪除表中的所有記錄
#delete是逐條刪除表中的所有記錄,truncate是直接將原表刪除,再根據表定義新建一張空表。truncate速度比delete快



update 表名 set 列名1=值1,列名2=值2 where... #更新一條記錄
update tb_user set age=age+2 where name='chy'; #在原值的基礎上


時間日期類型、字元串類型的值都要引起來,比如where name='chy'

插入、更新操作如果要寫的欄位、值很多,自己寫很麻煩、還容易出錯,在navicat、datagrip等工具中插入、更新一條記錄,複製控制台代列印出來的sql語句,粘到項目中改下即可。

 

 

 

where子句

where子句select、update、delete都可以使用。

where id=1  #等於

where id!=1  #不等於
where id<>1  #不等於也可以這樣寫

#> >= < <= 不一一寫了


where id between 1 and 10 #id在[1,10]上,是閉區間

where id in (1,3,9) #id=1或id=3或id=9


where score is null
where score is not null


where score>60 and score<90
where score<60 or score>90
where score not



#模糊匹配,用於匹配字元串。常見於模糊查詢,但delete、update也可以用
where name like '張%' #以張開頭。pattern要引起來
where name like '%偉' #以偉結尾
where name like '%國%' #含有國字就ok

% #一個或多個字元
_ #任意一個字元
[abcd] #abcd中的任意一個字元,只代表一個字元。比如 '張[傑偉]' 匹配張傑或張偉
[!abcd] #不是abcd中的任意一個字元就行,只代表一個字元,比如'張[!傑偉]' 只要不是張傑、張偉就ok
[^abcd] #!也可以寫成^,同上

 

 

 

查詢專用

select distinct 列名 from 表名;  #去重。如果結果集中有完全相同的記錄,只保留一條


select 列名1*列名2 from 表名; #可以進行數學運算,但要求參與運算的列都是數值型


select 列名 as 別名 from 表名; #別名,常用於原列名較長、難記的情況
select 列名1+列名2 as 別名 from 表名; #或者要進行運算




#order by子句,結果集排序
select 列名 from 表名 order by 列名; #預設按升序(asc)排列

select 列名 from 表名 order by 列名 desc; #可指定序別,desc是降序
select 列名 from 表名 order by 列名1 asc,列名2 desc;  #先按列名1排序,列名1相同記錄再按列名2排序。列名1叫做第一排序關鍵字,列名2叫做第二排序關鍵字

#排序的列結果集中要有




#聚合函數。所謂聚合函數,就是mysql自帶的對結果集進行統計、分析的函數。在聚合函數中,值是null的記錄均不參與統計。

select count(*) from 表名; #統計記錄數
select count(列名) from 表名; #統計某一列的記錄數
select count(distinct 列名) from 表名; #去重,結果集中重覆的記錄只算做一條
#
null不計算在內

select max(列名) from 表名;
select min(列名) from 表名;

select sum(列名) from 表名;
select avg(列名) from 表名;

select sum(列名),avg(列名) from 表名; #都可以配合使用





#group by 子句,結果集分組

select * from tb_student group by dep; #對結果集按指定的列進行分組,比如此處把dep相同的記錄分為一組,顯示分好的組

select count(*) from tb_student group by dep; #單獨使用group by沒多大意義,一般都是和聚合函數搭配使用,用於統計每組的數據。比如此處計算每個系的學生人數
select avg(score) from tb_student group by class;  #計算每個班的平均分





#having子句
select * from user_tb having id>10; #having的作用和where差不多,都是對記錄進行過濾
#但過濾時機不同,where是在資料庫中過濾,將符合要求的記錄放到結果集中
#having是對結果集中的記錄進行過濾,將過濾好的結果返回給客戶端


select * from student_tb [where子句] group by class having avg(score)<80 #having一般和group by配合使用
#因為group by後面不能使用where,且where子句中不能使用聚合函數
#此處是先根據where從資料庫中獲取結果集,再將結果集按班級分組,去掉平均分<80的班級,最終返回給客戶端的是平均分>=80的班級





#分頁,常見的分頁方式有三種:
#1、where只取出指定區間上的記錄,比如where id>0 and where id<10,或者where id between 1 and 9
#2、limit對結果集進行限制
#3、查詢、返回所有記錄,由客戶端自己實現分頁


#limit子句 結果集分頁
select * from user_tb [where子句] [order by子句] limit 10; #只取出結果集的前10條記錄。註意是對結果集進行限制,從結果集中取
select * from user_tb [where子句] [order by子句] limit 9,19;  #只取出結果集的第[10,20]條記錄。都+1,再取閉區間




#多個子句常見的書寫、執行順序

select ... from ... [where子句] [group by子句] [having子句] [order by子句] [limit子句]

#先執行select ... from ... [where子句] 將匹配的記錄放到結果集中
#再group by將結果集中的記錄分組
#having對分組進行過濾,去掉不滿足要求的分組
#orderby排序
#limit只取出結果集某個區間的記錄,返回給客戶端

#和書寫順序一致
#一般不會這麼長,常見的是以下2種:
select ... from ... [where子句] [group by子句] [having子句]
select ... from ... [where子句] [order by子句] [limit子句]

字元串類型的排序、比較均按碼值比較,先按第一個字元的碼值排序、比較,如果相同則再比較第二個字元的碼值

 

 

 

表別名

select user.name from tb_user user;

如果表名很長、難記,可以取別名,使用別名來操作

 


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

-Advertisement-
Play Games
更多相關文章
  • 一、目錄的認識 https://www.runoob.com/aspnet/mvc-folders.html 二、約定大於配置 1、方法的名稱與視圖的名稱一致。 2、視圖要放在Views文件下的當前方法所在控制器名稱一致的文件夾內。 三、添加數據 1、如果方法的參數與表單元素name屬性的值一致的話 ...
  • Github是一個面向開源及私有軟體項目的托管平臺,擁有4000萬開發者,超過210萬企業和組織使用,有1億個項目(github.com 2019年8月),如此多的開發者,如此多的項目,如何使用更好的學習這些項目,如何跟著大牛學習,下麵將介紹Github的探索功能,幫助你更好的使用項目和學習。 1. ...
  • 匿名用戶 anonymous_enable=YES anon_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_root=/var/ftp anon_max_ra ...
  • 以下是我對IAR軟體使用的快捷鍵配置cc2530以及配置環境的總結,如下圖所示 ​ ​ ​ 彈出保存視窗 ​ 工程生成完畢——生成.c文件 ​ 快捷鍵ctrl+s保存.c文件 ​ ​ ​ ​ ​ 選擇Linker ​ ​ ​ ...
  • 近日天眼查數據顯示,上海靈動微電子股份有限公司的工商發生了變更,註冊資本由原來的4728萬人民幣,新增至人民幣5668萬,增幅接近20%。新增董事為王曉波。公開資料顯示王曉波是小米產業基金管理合伙人。 這次的主角為何會是靈動微電子?靈動微電子成立於公元2011年,作為一家立足本土、展望世界的MCU芯 ...
  • 分享下,虛擬機VMware下CentOS6.6安裝教程圖文詳解。 CentOS 6.6 發佈下載 地址: http://www.linuxidc.com/Linux/2014-10/108554.htm 1、首先要下載一個centos的iso鏡像,我是用虛擬機VMware來安裝的,用VMware最好 ...
  • 1 SELECT to_timestamp('2020-02-27 12:12:12','yyyy-MM-dd hh24:mi:ss') ; 2 SELECT to_date('2020-02-27 12:12:12','yyyy-MM-dd hh24:mi:ss') ; to_timestamp返 ...
  • 剛開始時,有一臺伺服器的ORACLE 11G資料庫連接不上,報錯:ORA-12541:TNS:無監聽程式,解決之後碰到ORA-01034:ORACLE not available ORA-27101:shared memory realm does not exist,最後又碰到ora-00119:... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...