搜尋
首頁資料庫mysql教程MySQ中基本文法與語句的介紹

MySQ中基本文法與語句的介紹

Jun 27, 2017 am 10:53 AM
mysql基本常用語句文法

將大量資料保存起來,透過電腦加工而成的可以進行高效存取的資料集合稱為資料庫(Database,DB)。

將姓名、住址、電話號碼、郵箱地址、嗜好和家庭組成等資料保存到資料庫中,就可以隨時迅速取得想要的資訊了。用來管理資料庫的電腦系統稱為資料庫管理系統(Database Management System,DBMS)。

DBMS有過資料的保存格式(資料庫的種類)來進行分類,現階段主要有五種類型:層次資料庫(Hierarchical Database,HDB),關係資料庫(Relational Database,RDB),物件導向資料庫(Object Oriented Database,OODB),XML 資料庫(XML Database,XMLDB),鍵值儲存系統(Key-Value Store,KVS)。

DBMS 稱為關聯式資料庫管理系統(Relational Database Management System,RDBMS)。比較具代表性的 RDBMS 有 Oracle Database :甲骨文公司;SQL Server :微軟公司;DB2 :IBM 公司;PostgreSQL :開源;MySQL :開源。

MySQL作為很好的 RDBMS 應用軟體之一,使用率也是upup的。因為懶,文中操作僅在MySQL5.7上加以驗證。

  • 零、準備

    • 1、安裝MySQL

    • 2 、服務端啟動

    • 3、客戶端連線

    • #4、SQL 語句分類

  • 一、資料庫操作

    • 1、顯示資料庫

    • #2、建立資料庫

    • 3、使用資料庫

    • 4、使用者管理

    • #5、授權管理

  • 二、資料表操作

    • 1、建立表格

    • 2、刪除表

    • #3、清空表格

    • 4、修改表格

  • 三、表格內容運算

    • #1、增

2、刪除

3、改


#4、查

5、條件查詢


## 1.安裝MySQL




2、服務端啟動

mysql.server start
  • 3、客戶端連線

    mysql -u username -p
    --退出
    QUIT 或者 Control+D



4、SQL 語句分類

DDL(Data Definition Language,資料定義語言)用來創建或刪除儲存資料用的資料庫以及資料庫中的表格等物件。 DDL 包含以下幾種指令。
  • DDL(資料定義語言)
CREATE:建立資料庫和表格等物件
DROP:刪除資料庫和表格等物件

ALTER:修改資料庫和表格等物件的結構



DML(Data Manipulation Language,資料操縱語言)用來查詢或變更表中的記錄。 DML 包含以下幾種指令。

DML(資料操縱語言)

SELECT:查詢表中的資料
INSERT:在資料表中插入新資料
UPDATE:更新表中的資料
DELETE:刪除表中的資料

DCL(Data Control Language,資料控制語言)用來確認或取消對資料庫中的資料進行的變更。除此之外,還可以對 RDBMS 的使用者是否有權限操作資料庫中的物件(資料庫表格等)進行設定。 DCL 包含以下幾種指令。

DCL(資料控制語言)

COMMIT:確認對資料庫中的資料進行的變更

ROLLBACK:取消對資料庫中的資料進行的變更

GRANT:賦予使用者操作權限

REVOKE:取消使用者的操作權限


一、資料庫操作

#1、顯示資料庫

SHOW DATABASES;

預設資料庫有以下:mysql - 使用者權限相關資料

test - 用於使用者測試資料

information_schema - MySQL本身架構相關資料######2、建立資料庫###
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
###一般是utf8。後續檢索、各種小工具都能用起來。 ######3、使用資料庫###
--使用数据库
USE 数据库名称;
--显示当前使用的数据库中所有表
SHOW TABLES;
###4、使用者管理###
--创建用户
create user '用户名'@'IP地址' identified by '密码';
--删除用户
drop user '用户名'@'IP地址';
--修改用户
rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';
--修改密码
set password for '用户名'@'IP地址' = Password('新密码');
###使用者權限相關資料保存在mysql資料庫的user表中,但不建議直接對其進行操作。 ######5、授權管理###
-- 查看权限
show grants for '用户'@'IP地址';
-- 授权
grant  权限 on 数据库.表 to   '用户'@'IP地址' ;
-- 取消权限
revoke 权限 on 数据库.表 from '用户'@'IP地址';
###經常使用的權限:###all privileges -除grant外的所有權限###select -僅查權限###select,insert -查和插入權限######使用* 匹配資料庫名稱和表名:###test.*     -test資料庫所有表###*.*    -所有資料庫所有表格#######使用%匹配IP位址###
--举个例子
grant all privileges on *.*TO '用户名'@'%';

二、数据表操作

1、创建表

create table 表名(
    列名  类型  NULL,
    列名  类型  NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8

基本数据类型
MySQL的数据类型大致分为:数字型、字符型、日期型。

  • INT型: 用来指定存储整数的列的数据类型(数字型),不能存储小数。

  • CHAR型: 用来指定存储字符串的列的数据类型(字符型)。可以像 CHAR(200) 这样,在括号中指定该列可以存储的字符串的长度(最大长度)。字符串超出最大长度的部分是无法输入到该列中的。当列中存储的字符串长度达不到最大长度的时候,使用半角空格进行补足。

  • VARCHAR型: 也可以通过括号内的数字来指定字符串的最大长度(字符型)。但该类型的列是以可变长字符串的形式来保存字符串。可变长字符串即使字符数未达到最大长度,也不会用半角空格补足。

  • DATE型: 用来指定存储日期(年月日)的列的数据类型(日期型)。

更多数据类型

默认值
创建列时可以指定默认。

create table tb1(
nid int not null default 2,
num int not null
)

自增
如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)。

create table tb1(
nid int not null auto_increment primary key,
num int null
)

create table tb1(
nid int not null auto_increment,
num int null,
index(nid)
)

注意:
1、对于自增列,必须是索引(含主键)。
2、对于自增可以设置步长和起始值
show session variables like 'auto_inc%';
set session auto_increment_increment=2;
set session auto_increment_offset=10;

show global  variables like 'auto_inc%';
set global auto_increment_increment=2;
set global auto_increment_offset=10;

主键
一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。

create table tb1(
nid int not null auto_increment primary key,
num int null
)

create table tb1(
nid int not null,
num int not null,
primary key(nid,num)
)

外键
一个特殊的索引,只能是指定内容

create table color(
nid int not null primary key,
name char(16) not null
)

create table fruit(
nid int not null primary key,
smt char(32) null ,
color_id int not null,
constraint fk_cc foreign key (color_id) references color(nid)
)

2、删除表

drop table 表名

3、清空表

delete from 表名
truncate table 表名

4、修改表

--添加列
alter table 表名 add column 列名 类型
--删除列
alter table 表名 drop column 列名

--修改列
-- 类型
alter table 表名 modify column 列名 类型; 
-- 列名,类型
alter table 表名 change 原列名 新列名 类型;
  
--添加主键
alter table 表名 add primary key(列名);
--删除主键
alter table 表名 drop primary key;
alter table 表名  modify  列名 int, drop primary key;
  
--添加外键
alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
--删除外键
alter table 表名 drop foreign key 外键名称
  
--修改默认值
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
--删除默认值
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

三、表内容操作

1、增

insert into 表 (列名,列名...) values (值,DEFAULT,值...)
insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)

insert into 表A (列名,列名...) select (列名,列名...) from 表B

2、删

--保留数据表,删除全部行
delete from 表
delete from 表 where id=1 and name='dyan';
truncate 表

3、改

update 表 set name = 'dyan' where id>1;

4、查

select * from 表
select * from 表 where id > 1
select nid,name,gender as 新表名 from 表 where id > 1

子查询的运算符 =,,>,>=,<h3 id="条件查询">5、条件查询</h3><pre class="brush:php;toolbar:false">1)条件
    select * from 表 where id > 1 and name != 'dyan' and num = 12;
 
    select * from 表 where id between 5 and 16;
 
    select * from 表 where id in (11,22,33);
    select * from 表 where id not in (11,22,33);
    select * from 表 where id in (select nid from 表);
    
2)聚合
    COUNT:计算表中的记录数(行数)
    SUM:计算表中数值列中数据的合计值
    AVG:计算表中数值列中数据的平均值
    MAX:求出表中任意列中数据的最大值
    MIN:求出表中任意列中数据的最小值
    
    --后者会得到NULL之外的数据行数
    select count(*),count() from 表名;
 
3)通配符
    select * from 表 where name like 'ale%'  - ale开头的所有(多个字符串)
    select * from 表 where name like 'ale_'  - ale开头的所有(一个字符)
 
4)限制
    select * from 表 limit 5;            - 前5行
    select * from 表 limit 4,5;          - 从第4行开始的5行
    select * from 表 limit 5 offset 4;   - 从第4行开始的5行
 
5)分组
    --group by 必须在where之后,order by之前
    select num from 表 group by num
    select num,nid from 表 group by num,nid
    select num,nid from 表  where nid > 10 group by num,nid order nid desc
    select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
 
    --取出符合指定条件的组having
    --SELECT → FROM → WHERE → GROUP BY → HAVING
    select num from 表 group by num having max(id) > 10
    
6)排序
    select * from 表 order by 列                  - 根据 “列” 从小到大排列,默认asc升序
    select * from 表 order by 列 desc             - 根据 “列” 从大到小排列
    select * from 表 order by 列1 desc,列2 asc    - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
    select 列名1,count(*) from 表 group by 列名1 order by count(*)
 
7)连表
    无对应关系则不显示
    select A.num, A.name, B.name
    from A,B
    Where A.nid = B.nid
 
    无对应关系则不显示
    select A.num, A.name, B.name
    from A inner join B
    on A.nid = B.nid
 
    A表所有显示,如果B中无对应关系,则值为null
    select A.num, A.name, B.name
    from A left join B
    on A.nid = B.nid
 
    B表所有显示,如果B中无对应关系,则值为null
    select A.num, A.name, B.name
    from A right join B
    on A.nid = B.nid
 
8)组合
    组合,自动处理重合
    select nickname
    from A
    union
    select name
    from B
 
    组合,不处理重合
    select nickname
    from A
    union all
    select name
    from B

以上是MySQ中基本文法與語句的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL索引基數如何影響查詢性能?MySQL索引基數如何影響查詢性能?Apr 14, 2025 am 12:18 AM

MySQL索引基数对查询性能有显著影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

MySQL:新用戶的資源和教程MySQL:新用戶的資源和教程Apr 14, 2025 am 12:16 AM

MySQL學習路徑包括基礎知識、核心概念、使用示例和優化技巧。 1)了解表、行、列、SQL查詢等基礎概念。 2)學習MySQL的定義、工作原理和優勢。 3)掌握基本CRUD操作和高級用法,如索引和存儲過程。 4)熟悉常見錯誤調試和性能優化建議,如合理使用索引和優化查詢。通過這些步驟,你將全面掌握MySQL的使用和優化。

現實世界Mysql:示例和用例現實世界Mysql:示例和用例Apr 14, 2025 am 12:15 AM

MySQL在現實世界的應用包括基礎數據庫設計和復雜查詢優化。 1)基本用法:用於存儲和管理用戶數據,如插入、查詢、更新和刪除用戶信息。 2)高級用法:處理複雜業務邏輯,如電子商務平台的訂單和庫存管理。 3)性能優化:通過合理使用索引、分區表和查詢緩存來提升性能。

MySQL中的SQL命令:實踐示例MySQL中的SQL命令:實踐示例Apr 14, 2025 am 12:09 AM

MySQL中的SQL命令可以分為DDL、DML、DQL、DCL等類別,用於創建、修改、刪除數據庫和表,插入、更新、刪除數據,以及執行複雜的查詢操作。 1.基本用法包括CREATETABLE創建表、INSERTINTO插入數據和SELECT查詢數據。 2.高級用法涉及JOIN進行表聯接、子查詢和GROUPBY進行數據聚合。 3.常見錯誤如語法錯誤、數據類型不匹配和權限問題可以通過語法檢查、數據類型轉換和權限管理來調試。 4.性能優化建議包括使用索引、避免全表掃描、優化JOIN操作和使用事務來保證數據一致性

InnoDB如何處理酸合規性?InnoDB如何處理酸合規性?Apr 14, 2025 am 12:03 AM

InnoDB通過undolog實現原子性,通過鎖機制和MVCC實現一致性和隔離性,通過redolog實現持久性。 1)原子性:使用undolog記錄原始數據,確保事務可回滾。 2)一致性:通過行級鎖和MVCC確保數據一致。 3)隔離性:支持多種隔離級別,默認使用REPEATABLEREAD。 4)持久性:使用redolog記錄修改,確保數據持久保存。

MySQL的位置:數據庫和編程MySQL的位置:數據庫和編程Apr 13, 2025 am 12:18 AM

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

MySQL:從小型企業到大型企業MySQL:從小型企業到大型企業Apr 13, 2025 am 12:17 AM

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。

幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?Apr 13, 2025 am 12:16 AM

InnoDB通過Next-KeyLocking機制有效防止幻讀。 1)Next-KeyLocking結合行鎖和間隙鎖,鎖定記錄及其間隙,防止新記錄插入。 2)在實際應用中,通過優化查詢和調整隔離級別,可以減少鎖競爭,提高並發性能。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中