mysql數據庫語法_MySQL數據庫語法(一)

MySQL數據庫語法

數據庫管理系統(DBMS)的概述

什么是DBMS:數據的倉庫

方便查詢

可存儲的數據量大

保證數據的完整、一致

安全可靠

DBMS的發展:今天主流數據庫為關系型數據庫管理系統(RDBMS 使用表格存儲數據)

常見DBMS:Orcale、MySQL、SQL Server、DB2、Sybase

DBMS = 管理程序 + 多個數據庫(DB)

DB = 多個table(不只是table,但這里先不介紹其他組成部分)

table的結構(即表結構)和table的記錄(即表記錄)的區別!

應用程序與DBMS:應用程序使得DBMS來存儲數據!

學號 姓名 性別 年齡 學歷

str str str int

1001 張三 女 23

安裝MySQL

參數《MySQL安裝圖解.doc》安裝

MySQL安裝成功后會在兩個目錄中存儲文件:

D:\Program Files\MySQL\MySQL Server 5.1:DBMS管理程序

C:\ProgramData\MySQL\MySQL Server 5.1\data:DBMS數據庫文件(卸載MySQL時不會刪除這個目錄,需要自己手動刪除)

MySQL重要文件

D:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe:客戶端程序,用來操作服務器。但必須保證服務器已開啟才能連接上!

D:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld.exe:服務器程序,必須先啟動它,客戶端才能連接上服務器。

D:\Program Files\MySQL\MySQL Server 5.1\bin\my.ini:服務器配置文件

C:\ProgramData\MySQL\MySQL Server 5.1\data

該目錄下的每個目錄表示一個數據庫,例如該目錄下有一個mysql目錄,那么說明你的DBMS中有一個名為mysql的database。

在某個數據庫目錄下會有0~N個擴展名為frm的文件,每個frm文件表示一個table。你不要用文本編輯器打開它,它是由DBMS來讀寫的!

my.ini,MySQL最為重要的配置文件

配置MySQL的端口:默認為3306,沒有必要去修改它;

配置字符編碼:

* [client]下配置客戶端編碼:default-character-set=gbk

* [mysqld]下配置服務器編碼:character-set-server=utf8

配置二進制數據大小上限:

* 在[mysqld]下配置:max_allowed_packet=8M

C:\ProgramData\MySQL\MySQL Server 5.5\data目錄下:有一個目錄就有一個數據庫!!!

每個數據庫目錄下,有一個frm文件,就說明有一張表!

服務器操作

開啟服務器(必須保證mysql為windows服務):net start mysql

查看進程表中是否存在:mysqld.exe進程(存在)

關閉服務器(必須保證mysql為windows服務):net stop mysql

查看進程表中是否存在:mysqld.exe進程(不存在)

客戶登操作

cmd

登錄服務器:mysql -uroot -p123 -hlocalhost

-u:后面跟隨用戶名

-p:后面跟隨密碼

-h:后面跟隨IP

退出服務器:exit或quit

SQL

什么是SQL:結構化查詢語言(Structured Query Language)。

SQL的作用:客戶端使用SQL來操作服務器。

啟動mysql.exe,連接服務器后,就可以使用sql來操作服務器了。

將來會使用Java程序連接服務器,然后使用sql來操作服務器。

SQL標準(例如SQL99,即1999年制定的標準):

由國際標準化組織(ISO)制定的,對DBMS的統一操作方式(例如相同的語句可以操作:mysql、oracle等)。

SQL方言

某種DBMS不只會支持SQL標準,而且還會有一些自己獨有的語法,這就稱之為方言!例如limit語句只在MySQL中可以使用

SQL語法

SQL語句可以在單行或多行書寫,以分號結尾

可使用空格和縮進來增強語句的可讀性

MySQL不區別大小寫,建議使用大寫

SQL語句分類(*****)

DDL(Data Definition Language):數據定義語言,用來定義數據庫對象:庫、表、列等;

創建、刪除、修改:庫、表結構!!!

DML(Data Manipulation Language):數據操作語言,用來定義數據庫記錄(數據);

增、刪、改:表記錄

DCL(Data Control Language):數據控制語言,用來定義訪問權限和安全級別;

DQL*****(Data Query Language):數據查詢語言,用來查詢記錄(數據)。

ddl:數據庫或表的結構操作()

dml:對表的記錄進行更新(增、刪、改)()

dql:對表的記錄的查詢(*****,難點)

dcl:對用戶的創建,及授權!

DDL

數據庫

查看所有數據庫:SHOW DATABASES

切換(選擇要操作的)數據庫:USE 數據庫名

創建數據庫:CREATE DATABASE [IF NOT EXISTS] mydb1 [CHARSET=utf8]

刪除數據庫:DROP DATABASE [IF EXISTS] mydb1

修改數據庫編碼:ALTER DATABASE mydb1 CHARACTER SET utf8

數據類型(列類型)

int:整型

double:浮點型,例如double(5,2)表示最多5位,其中必須有2位小數,即最大值為999.99;

decimal:浮點型,在表單錢方面使用該類型,因為不會出現精度缺失問題;

char:固定長度字符串類型; char(255),數據的長度不足指定長度,補足到指定長度!

varchar:可變長度字符串類型; varchar(65535), zhangSan

text(clob):字符串類型;

很小

blob:字節類型;

很小

date:日期類型,格式為:yyyy-MM-dd;

time:時間類型,格式為:hh:mm:ss

timestamp:時間戳類型;

創建表:

CREATE TABLE [IF NOT EXISTS] 表名(ITCAST_0001

列名 列類型,

列名 列類型,

...

列名 列類型

);

查看當前數據庫中所有表名稱:SHOW TABLES;

查看指定表的創建語句:SHOW CREATE TABLE 表名(了解);

查看表結構:DESC 表名;

刪除表:DROP TABLE 表名;

修改表:前綴:ALTER TABLE 表名

修改之添加列:

ALTER TABLE 表名 ADD (

列名 列類型,

列名 列類型,

...

);

修改之修改列類型(如果被修改的列已存在數據,那么新的類型可能會影響到已存在數據):ALTER TABLE 表名 MODIFY 列名 列類型;

修改之修改列名:ALTER TABLE 表名 CHANGE 原列名 新列名 列類型;

修改之刪除列:ALTER TABLE 表名 DROP 列名;

修改表名稱:ALTER TABLE 原表名 RENAME TO 新表名;

alter table 表名

add (

列名 列類型,

列名 列類型,

...

列名 列類型

)

alter table 表名

modify 列名 列新的類型

alter table 表名

rename to 新名

DQL:SELECT * FROM 表名

DML(數據操作語言,它是對表記錄的操作(增、刪、改)!)

插入數據

INTERT INTO 表名(列名1,列名2, ...) VALUES(列值1, 列值2, ...);

在表名后給出要插入的列名,其他沒有指定的列等同與插入null值。所以插入記錄總是插入一行,不可能是半行。

在VALUES后給出列值,值的順序和個數必須與前面指定的列對應

INTERT INTO 表名 VALUES(列值1, 列值2)

沒有給出要插入的列,那么表示插入所有列。

值的個數必須是該表列的個數。

值的順序,必須與表創建時給出的列的順序相同。

修改數據

UPDATE 表名 SET 列名1=列值1, 列名2=列值2, ... [WHERE 條件]

條件(條件可選的):

條件必須是一個boolean類型的值或表達式:UPDATE t_person SET gender='男', age=age+1 WHERE sid='1';

運算符:=、!=、<>、>、=、<=、BETWEEN...AND、IN(...)、IS NULL、NOT、OR、AND

WHERE age >= 18 AND age <= 80

WHERE age BETWEEN 18 AND 80

WHERE name='zhangSan' OR name='liSi'

WHERE name IN ('zhangSan', 'liSi')

WHERE age IS NULL, 不能使用等號

WHERE age IS NOT NULL

刪除數據

DELETE FROM 表名 [WHERE 條件];

TRUNCATE TABLE 表名:TRUNCATE是DDL語句,它是先刪除drop該表,再create該表。而且無法回滾!!!

在數據庫中所有的字符串類型,必須使用單引,不能使用雙引!

日期類型也要使用單引!

// 插入所有列

INSERT INTO stu(

number, name, age, gender

)

VALUES(

'ITCAST_0001', 'zhangSan', 28, 'male'

);

// 插入部分列,沒有指定的列默認為NULL值

INSERT INTO stu(

number, name

) VAKLUES(

'ITCAST_0002', 'liSi'

)

// 不給出插入列,那么默認為插入所有列!值的順序要與創建表時列的順序相同

INSERT INTO stu VALUES(

'ITCAST_0003', 'wangWu', 82, 'female'

);

UPDATE

UPDATE stu SET name='xxx', age=102

DCL(理解)

一個項目創建一個用戶!一個項目對應的數據庫只有一個!

這個用戶只能對這個數據庫有權限,其他數據庫你就操作不了了!

創建用戶

CREATE USER 用戶名@IP地址 IDENTIFIED BY '密碼';

用戶只能在指定的IP地址上登錄

CREATE USER 用戶名@'%' IDENTIFIED BY '密碼';

用戶可以在任意IP地址上登錄

給用戶授權

GRANT 權限1, … , 權限n ON 數據庫.* TO 用戶名@IP地址

權限、用戶、數據庫

給用戶分派在指定的數據庫上的指定的權限

例如;GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;

給user1用戶分派在mydb1數據庫上的create、alter、drop、insert、update、delete、select權限

GRANT ALL ON 數據庫.* TO 用戶名@IP地址;

給用戶分派指定數據庫上的所有權限

撤銷授權

REVOKE 權限1, … , 權限n ON 數據庫.* FROM 用戶名@IP地址;

撤消指定用戶在指定數據庫上的指定權限

例如;REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;

撤消user1用戶在mydb1數據庫上的create、alter、drop權限

查看權限

SHOW GRANTS FOR 用戶名@IP地址

查看指定用戶的權限

刪除用戶

DROP USER 用戶名@IP地址

*****DQL -- 數據查詢語言

查詢不會修改數據庫表記錄!

一、 基本查詢

字段(列)控制

查詢所有列

SELECT * FROM 表名;

SELECT * FROM emp;

--> 其中“*”表示查詢所有列

查詢指定列

SELECT 列1 [, 列2, ... 列N] FROM 表名;

SELECT empno, ename, sal, comm FROM 表名;

完全重復的記錄只一次

當查詢結果中的多行記錄一模一樣時,只顯示一行。一般查詢所有列時很少會有這種情況,但只查詢一列(或幾列)時,這總可能就大了!

SELECT DISTINCT * | 列1 [, 列2, ... 列N] FROM 表名;

SELECT DISTINCT sal FROM emp;

--> 保查詢員工表的工資,如果存在相同的工資只顯示一次!

列運算

I 數量類型的列可以做加、減、乘、除運算

SELECT sal*1.5 FROM emp;

SELECT sal+comm FROM emp;

II 字符串類型可以做連續運算

SELECT CONCAT('$', sal) FROM emp;

III 轉換NULL值

有時需要把NULL轉換成其它值,例如com+1000時,如果com列存在NULL值,那么NULL+1000還是NULL,而我們這時希望把NULL當前0來運算。

SELECT IFNULL(comm, 0)+1000 FROM emp;

--> IFNULL(comm, 0):如果comm中存在NULL值,那么當成0來運算。

IV 給列起別名

你也許已經注意到了,當使用列運算后,查詢出的結果集中的列名稱很不好看,這時我們需要給列名起個別名,這樣在結果集中列名就顯示別名了

SELECT IFNULL(comm, 0)+1000 AS 獎金 FROM emp;

--> 其中AS可以省略

條件控制

條件查詢

與前面介紹的UPDATE和DELETE語句一樣,SELECT語句也可以使用WHERE子句來控制記錄。

SELECT empno,ename,sal,comm FROM emp WHERE sal > 10000 AND comm IS NOT NULL;

SELECT empno,ename,sal FROM emp WHERE sal BETWEEN 20000 AND 30000;

SELECT empno,ename,job FROM emp WHERE job IN ('經理', '董事長');

模糊查詢

當你想查詢姓張,并且姓名一共兩個字的員工時,這時就可以使用模糊查詢

SELECT * FROM emp WHERE ename LIKE '張_';

--> 模糊查詢需要使用運算符:LIKE,其中_匹配一個任意字符,注意,只匹配一個字符而不是多個。

--> 上面語句查詢的是姓張,名字由兩個字組成的員工。

SELECT * FROM emp WHERE ename LIKE '___'; /姓名由3個字組成的員工/

如果我們想查詢姓張,名字幾個字可以的員工時就要使用“%”了。

SELECT * FROM emp WHERE ename LIKE '張%';

--> 其中%匹配0~N個任意字符,所以上面語句查詢的是姓張的所有員工。

SELECT * FROM emp WHERE ename LIKE '%阿%';

--> 千萬不要認為上面語句是在查詢姓名中間帶有阿字的員工,因為%匹配0~N個字符,所以姓名以阿開頭和結尾的員工也都會查詢到。

SELECT * FROM emp WHERE ename LIKE '%';

--> 這個條件等同與不存在,但如果姓名為NULL的查詢不出來!

二、排序

升序

SELECT * FROM WHERE emp ORDER BY sal ASC;

--> 按sal排序,升序!

--> 其中ASC是可以省略的

降序

SELECT * FROM WHERE emp ORDER BY comm DESC;

--> 按comm排序,降序!

--> 其中DESC不能省略

使用多列作為排序條件

SELECT * FROM WHERE emp ORDER BY sal ASC, comm DESC;

--> 使用sal升序排,如果sal相同時,使用comm的降序排

三、聚合函數

聚合函數用來做某列的縱向運算。

COUNT

SELECT COUNT(*) FROM emp;

--> 計算emp表中所有列都不為NULL的記錄的行數

SELECT COUNT(comm) FROM emp;

--> 云計算emp表中comm列不為NULL的記錄的行數

MAX

SELECT MAX(sal) FROM emp;

--> 查詢最高工資

MIN

SELECT MIN(sal) FROM emp;

--> 查詢最低工資

SUM

SELECT SUM(sal) FROM emp;

--> 查詢工資合

AVG

SELECT AVG(sal) FROM emp;

--> 查詢平均工資

四、分組查詢

分組查詢是把記錄使用某一列進行分組,然后查詢組信息。

例如:查看所有部門的記錄數。

SELECT deptno, COUNT(*) FROM emp GROUP BY deptno;

--> 使用deptno分組,查詢部門編號和每個部門的記錄數

SELECT job, MAX(SAL) FROM emp GROUP BY job;

--> 使用job分組,查詢每種工作的最高工資

組條件

以部門分組,查詢每組記錄數。條件為記錄數大于3

SELECT deptno, COUNT() FROM emp GROUP BY deptno HAVING COUNT() > 3;

五、limit子句(方言)

LIMIT用來限定查詢結果的起始行,以及總行數。

例如:查詢起始行為第5行,一共查詢3行記錄

SELECT * FROM emp LIMIT 4, 3;

--> 其中4表示從第5行開始,其中3表示一共查詢3行。即第5、6、7行記錄。

select * from emp limit 0, 5;

一頁的記錄數:10行

查詢第3頁

select * from emp limit 20, 10;

(當前頁-1) * 每頁記錄數

(3-1) * 10

(17-1) * 8, 8

==============================

select

from

where

group by

having

order by

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396554.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396554.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396554.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

作業1---四則運算

一.需求分析&#xff1a; 除了整數以外&#xff0c;還要支持真分數的四則運算&#xff0c;真分數的運算&#xff0c;例如&#xff1a;1/6 1/8 7/24 運算符為 , ?, , 并且要求能處理用戶的輸入&#xff0c;并判斷對錯&#xff0c;打分統計正確率。 要求能處理用戶輸入的真分…

python有序數組中刪除元素_python刷LeetCode:26. 刪除排序數組中的重復項

題目描述&#xff1a;給定一個排序數組&#xff0c;你需要在原地刪除重復出現的元素&#xff0c;使得每個元素只出現一次&#xff0c;返回移除后數組的新長度。不要使用額外的數組空間&#xff0c;你必須在原地修改輸入數組并在使用 O(1) 額外空間的條件下完成。示例 1:給定數組…

mysql數據庫修改數據庫名稱_MySQL數據庫之MySQL 修改數據庫名稱的一個新奇方法...

本文主要向大家介紹了MySQL數據庫之MySQL 修改數據庫名稱的一個新奇方法 &#xff0c;通過具體的內容向大家展現&#xff0c;希望對大家學習MySQL數據庫有所幫助。MySQL在5.1引入了一個rename database操作&#xff0c;但在MySQL5.1.23后又不支持這個命令。可以說是一個實驗性的…

Lesson 001 —— 數據

Lesson 001 —— 數據 數據&#xff08;data&#xff09;是事實或觀察的結果&#xff0c;是對客觀事物的邏輯歸納&#xff0c;是用于表示客觀事物的未經加工的原始素材。數據是信息的表現形式和載體&#xff0c;可以使符號、文字、數字、語音、圖像、視頻等。 進制 進制也就是進…

工作記錄四-etcd與flanneld

######################### etcd用來做flannld的數據中心&#xff0c;記錄flannld各主機子網的配置## flannld使各容器實例處于同一子網內&#xff0c;可以相互訪問####################### ### 一、etcd安裝及使用## 1. 下載編譯二進制包git clone https://github.com/coreos…

C#獲取剛插入的數據的id

在開發程序中我們經常會遇到兩個表或多個表關聯同時插入數據的需求。 那么我們剛給主表插入一條數據&#xff0c;接著給副表插入數據時其中一個字段要存儲與主表關聯的id&#xff0c;那么我們該怎么獲取剛插入的那條數據的id呢&#xff1f; insert infor values(,) ;SELECT Ide…

感謝您的提問_感謝您的反饋,我們正在改進的5種方法

感謝您的提問by freeCodeCamp通過freeCodeCamp 感謝您的反饋&#xff0c;我們正在改進的5種方法 (5 Ways We’re Improving Thanks to Your Feedback) This was originally published on our now-defunct blog on September 17, 2015.該文章最初于2015年9月17日發布在我們現已…

sql三個表join_「數據蔣堂」第 31 期:JOIN 簡化 – 維度對齊

【數據蔣堂】第 31 期&#xff1a;JOIN 簡化 – 維度對齊我們先把上一期中雙子表對齊例子的 SQL 寫出來&#xff1a;SELECT Orders.id, Orders.customer, A.x, B.y FROM Orders LEFT JOIN (SELECT id,SUM(price) x FROM OrderDetail GROUP BY id ) A ON Orders.idA.id LEFT J…

radius

radius協議使用的是UDP傳輸協議&#xff0c;UDP協議相對于TCP更快速&#xff0c;無連接的不可靠。radius協議的包格式&#xff1a;0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1-----------…

apt-get常用命令及工作原理

https://blog.csdn.net/mosquito_zm/article/details/63684608轉載于:https://www.cnblogs.com/diyunpeng/p/9772866.html

day10_控制文件

---------------------驗證互為鏡像功能---------------------窗口1cd /oracle/app/oradata/ecomrm control03.ctl 窗口2SQL> startup force;ORACLE instance started.Total System Global Area 285212672 bytesFixed Size 1218992 bytesVariable Size …

堆疊自編碼器中的微調解釋_25種深刻漫畫中的編碼解釋

堆疊自編碼器中的微調解釋by freeCodeCamp通過freeCodeCamp 25種深刻漫畫中的編碼解釋 (Coding Explained in 25 Profound Comics) We asked our open source community to share the comics they found most profoundly described coding, via our news site. Here are their…

linux和mysql重點哪個_重要的MySQL 文檔存儲知識點掃盲

MySQL 文檔存儲 可以跳過底層數據結構創建、數據規范化和其它使用傳統數據庫時需要做的工作&#xff0c;直接存儲數據。MySQL 可以提供 NoSQL JSON 文檔存儲Document Store 了&#xff0c;這樣開發者保存數據前無需 規范化normalize 數據、創建數據庫&#xff0c;也無需在開發之…

python端口掃描工具_Python實現的多線程端口掃描工具分享

# -*- coding: utf-8 -*-__author__ Phtih0nimport threading, socket, sys, cmd, os, Queue#掃描常用端口PortList [21, 22, 23, 25, 80, 135, 137, 139, 445, 1433, 1502, 3306, 3389, 8080, 9015]#得到一個隊列def GetQueue(list):PortQueue Queue.Queue(65535)for p in …

Linux系統啟動全過程

分為兩部分&#xff0c;第一部分是硬件本身需要加載的信息&#xff0c;之后才是加載Linux相關信息&#xff0c;因為有裝有雙系統的機器嘛 1.計算機加電 2.BIOS開始運行&#xff0c;檢測硬件&#xff1a;cpu、內存、硬盤等 3.BIOS讀取CMOS存儲器中的參數&#xff0c;選擇啟動設備…

day09_讀寫分離_Atlas小記

GRANT ALL PRIVILEGES ON *.* TO root% identified by mysql;FLUSH PRIVILEGES;主從庫上全做--------------------------------------------------------------------yum install -y gcc*rpm -ivh Atlas-2.2.1.el5.x86_64.rpm 【rpm包直接安裝】rpm -ql Atlas 【查看安裝路徑…

Free Code Camp現在有本地組

by freeCodeCamp通過freeCodeCamp Free Code Camp現在有本地組 (Free Code Camp now has Local Groups) Our open source community was born online. And our campers are adept at using the internet to communicate. Most of this communication is just short text messa…

二十四點游戲python_[求助]關于二十四點游戲python

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓24點紙牌游戲的開發24點是一種老少咸宜的游戲&#xff0c;它的具體玩法如下&#xff1a;給玩家4張牌&#xff0c;每張牌的面值在1&#xff5e;13之間&#xff0c;允許其中有數值相同的牌。采用加、減、乘、除四則運算&#xff0c;允…

python-3.6.2安裝

1、下載python-3.6.2-amd64.exe安裝包 官網下載地址&#xff1a;https://www.python.org/ 2、Python安裝&#xff0c;雙擊傻瓜式安裝&#xff08;用英文路徑&#xff0c;不要有空格&#xff09;&#xff0c; 特別要注意勾上Add Python 3.6 to PATH&#xff08;勾選后&#xff0…

Siege壓力工具

Siege官方&#xff1a;http://www.joedog.org/ Siege下載&#xff1a;http://www.joedog.org/pub/siege/siege-latest.tar.gz Siege解壓并安裝&#xff1a;# tar -zxvf siege-latest.tar.gz # cd siege-latest/ #./configure #make #make installSiege使用:# siege -h 查看相關…