mysql的基礎運用及代碼(mysql基礎知識筆記)

本文目錄一覽:

15個MySQL常用基本SQL語句

在學習SQL語句之前,首先需要區分幾個概念,我們常說的資料庫是指資料庫軟體,例如MySQL、Oracle、SQL Server等,而本文提到的資料庫是指資料庫軟體中的一個個用於存儲數據的容器。

在MySQL中,資料庫稱為database,數據表稱為table,一個資料庫軟體中有多個資料庫(databases),每個資料庫中又可以有多個數據表(tables),最終,數據是存儲在數據表中。

資料庫和數據表之間的關係可以用下面這個圖來表示,對於一個資料庫來說,有多個數據表。

在正式開始寫SQL語句之前,需要說明兩點。

這裡通過MySQL Workbench來寫SQL代碼,在Workbench中,執行一條SQL語句的方式有兩種。

了解了這之後,接下來介紹一些常見的命令,分兩部分:資料庫常用命令和數據表常用命令。

1、查看有哪些資料庫

2、創建資料庫

創建一個名為Testdb的資料庫。

3、創建資料庫並指定編碼格式

有些時候,為了防止中文亂碼,創建資料庫的時候需要指定編碼格式。

4、使用某個資料庫

使用mydb這個資料庫,或者進入mydb這個資料庫。

5、刪除資料庫

刪除Testdb這個資料庫。

1、查看有哪些數據表

進入某個資料庫之後,想查看有哪些數據表,SQL語句為:

mydb是一個新建的資料庫,所以自然是沒有數據表。

2、創建數據表

建表SQL語句格式為:

說明: 每個欄位以逗號分隔,最後一個欄位不加逗號。

例如,給定一個學員信息表,如下表所示。

根據以上表格,建表SQL語句如下。

以上語句中,primary key表示主鍵,意思是這個欄位作為記錄的唯一標識,就像每個人的身份證號,都是唯一確定的。

3、查看錶結構

查看錶結構的SQL命令為:

執行該命令會顯示錶stuinfo的基本結構,例如有哪些欄位,每個欄位是什麼類型,誰是主鍵等。

4、修改數據表

修改數據表通過drop子句進行,比如,建完表後,想增加一個欄位,SQL語句的格式為:

想在指定位置增加一個欄位,例如,在某個欄位後增加一個欄位,SQL語句的格式為:

如果在某個欄位之前增加欄位,用before即可。

例如,在欄位age後增加一個欄位major(專業),SQL語句為:

執行這個命令,再通過describe查看錶結構,會發現表中多了一個欄位major。

如果要刪除major這個欄位,通過drop子句,SQL語句為:

5、重命名表

重命名表通過alter+rename來實現,SQL語句格式為:

這裡為了不影響之前創建的表,我們創建一個新表,SQL語句如下。

以上創建一個名為stuInfoTest的表,現在想將它的名稱改成stuinfotest1,SQL語句為:

6、刪除數據表

刪除數據表通過drop進行,SQL語句格式為:

例如,刪除數據表stuinfotest1,SQL語句為:

7、插入記錄

此時的表stuinfo是空的,沒有數據,我們要向表中插入記錄。

插入記錄通過insert into進行,SQL語句格式為:

例如,向表stuinfo插入一條記錄,SQL語句為:

注意:上方是一條SQL語句,為了可讀性換行,記住一條SQL語句默認以分號結尾。

如果需要一次性插入多條記錄,SQL語句格式為:

例如,向表stuinfo再插入兩條記錄,SQL語句為:

注意:如果設置了主鍵,插入記錄的主鍵欄位是不能重複的,也就是不能插入重複的記錄。

作業:大家可以按照上述方法將上面的學員信息表中的所有記錄都插入表stuinfo中。

8、查詢記錄

有了數據之後,就可以查詢記錄了,查詢記錄通過select子句進行。

例如,想查詢表stuinfo中的所有記錄,SQL語句為:

執行之後,就可以看到表stuinfo中的所有記錄了。

如果想查詢符合某個條件的記錄,就要用到where子句了,SQL格式為:

例如,想查詢stuid為20161001的記錄,SQL語句為:

9、刪除記錄

刪除記錄通過delete子句進行,SQL語句格式為:

例如,想刪除stuid為20161002的記錄,SQL語句為:

10、修改記錄

修改記錄通過update子句進行,update就是更新的意思,SQL語句格式為:

例如,想將學號(stuid)為20161001的記錄的姓名(stuname)更新為Jack,SQL語句為:

以上,就是MySQL中的基本SQL語句。

零基礎如何學習數據分析?查看下方專欄。

mysql中的一些稍微複雜用法實例代碼

前言

mysql的語法相信對大家來說都不是難事,但是本文主要給分享了一些mysql複雜用法的相關內容,通過這篇文章相信大家會對mysql更深的了解一些,下面話不多說了,來一起看看詳細的介紹吧

一對多數據顯示成一行

GROUP_CONCAT(expr)

1、涉及的表關係:teacher表、teacher_subject_rel表(教師所能教的學科表)、subject表

2、業務場景:

需要拉取所有教師的編號(teacher_no)、學科名(subject_name)。

nbsp

教師表(teacher)和學科(teacher_subject_rel)是一對多關係,

往往查詢出現的是同一教師多條

數據。我們希望得到每個教師一條數據

學科拼接成一條

1、基本語法

group_concat(

[DISTINCT]

要連接的欄位

[Order

BY

排序欄位

ASC/DESC]

[Separator

‘分隔符’]

)

2、例子

SELECT

t.teacher_id

as

‘教師id’,

t.teacher_no

‘教師編號’,

(

SELECT

GROUP_CONCAT(s.subject_name)

FROM

teacher_subject_rel

tsr

LEFT

JOIN

`subject`

s

ON

tsr.subject_id

=

s.subject_id

WHERE

t.teacher_id

=

tsr.teacher_id

)

AS

‘學科’

FROM

teacher

t

子查詢、查詢臨時表、EXISTS

例子

SELECT

*

FROM

(

SELECT

o.id,

o.student_intention_id,

s.

NAME,

s.area_id,

a.area_name,

s.exam_year,

o.

STATUS,

CASE

o.

STATUS

WHEN

‘1’

THEN

‘待提交’

WHEN

‘2’

THEN

‘待指派’

WHEN

‘3’

THEN

‘已完成’

WHEN

‘4’

THEN

‘處理中’

END

statusName,

CASE

o.emergency_degree

WHEN

‘1’

THEN

‘正常’

WHEN

‘2’

THEN

‘緊急’

WHEN

‘3’

THEN

‘非常緊急’

END

emergencyDegreeName,

o.emergency_degree,

o.update_time,

(

SELECT

first_lesson_time

FROM

jx_strategy

WHERE

jx_lesson_plan_order_id

=

o.id

AND

STATUS

IN

(2,

7)

AND

first_lesson_time

now()

ORDER

BY

first_lesson_time

ASC

LIMIT

1

)

AS

first_time,

(

SELECT

deal_user_id

FROM

jx_strategy

WHERE

jx_lesson_plan_order_id

=

o.id

AND

STATUS

7

AND

deal_user_id

ORDER

BY

id

DESC

LIMIT

1

)

AS

deal_user_id

FROM

jx_lesson_plan_order

o

LEFT

JOIN

student

s

ON

s.student_intention_id

=

o.student_intention_id

LEFT

JOIN

area

a

ON

s.area_id

=

a.id

WHERE

o.

STATUS

1

AND

s.phone

=

‘18501665888’

AND

o.emergency_degree

=

1

AND

o.

STATUS

=

2

AND

s.exam_year

=

‘2015’

AND

o.update_time

=

‘2018-08-14

20:28:55′

AND

o.update_time

=

‘2018-08-14

20:28:55′

)

AS

a

WHERE

1

=

1

AND

a.deal_user_id

=

145316

AND

a.first_time

=

‘2018-08-17

00:00:00′

AND

a.first_time

=

‘2018-08-30

00:00:00′

AND

EXISTS

(

SELECT

*

FROM

jx_strategy

js

WHERE

js.jx_lesson_plan_order_id

=

a.id

AND

js.

STATUS

IN

(2,

7)

AND

js.subject_id

IN

(2,

3)

)

ORDER

BY

a.update_time

DESC

LIMIT

0,

10

update

關聯變數條件修改

1、涉及的表關係:

user_info表中的

id_number(身份證號)

teacher表中的birth欄位、

關聯關係usrer_id

=

teacher_id

2、業務場景:獲取用戶身份證上的出生日期將出生日期更新在birth欄位

UPDATE

teacher

t

INNER

JOIN

(

SELECT

t.teacher_id,

t.birth,

u.id_number,

CONCAT(SUBSTRING(u.id_number,

7,

4),

‘-‘,

SUBSTRING(u.id_number,

11,

2),

‘-‘,

SUBSTRING(u.id_number,

13,

2))

as

birth1,

u.reg_date,

t.exit_time

from

teacher

t

INNER

JOIN

user_info

u

ON

u.user_id

=

t.teacher_id

)

info

on

info.teacher_id

=

t.teacher_id

SET

t.birth

=

info.birth1

WHERE

info.reg_date

‘2018-08-20

00:00:00′

and

info.id_number

is

not

NULL

and

(info.birth

is

NULL

or

t.birth

=

”)

and

t.is_train

=

1

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:MySQL在關聯複雜情況下所能做出的一些優化Mysql一些複雜的sql語句(查詢與刪除重複的行)深入mysql

“ON

DUPLICATE

KEY

UPDATE”

語法的分析MySQL

最基本的SQL語法/語句MySQL與Oracle的語法區別詳細對比淺析Mysql

Join語法以及性能優化MySQL

ALTER語法的運用方法MySQL

prepare語句的SQL語法MySQL進階SELECT語法篇MySQL

SQL

語法參考

高分求mysql創建資料庫及表的代碼?

創造並使用一個資料庫

mysql SHOW DATABASES;

+———-+

| Database |

+———-+

| mysql |

| test |

| tmp |

+———-+

mysql USE test

Database changed

mysql GRANT ALL ON menagerie.* TO your_mysql_name;

mysql CREATE DATABASE menagerie;

mysql USE menagerie

Database changed

shell mysql -h host -u user -p menagerie

Enter password: ********

8.4.2 創建一個資料庫表

創建資料庫是容易的部分,但是在這時它是空的,正如SHOW TABLES將告訴你:

mysql SHOW TABLES;

Empty set (0.00 sec)

使用一個CREATE TABLE語句指定你的資料庫表的布局:

mysql CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),

– species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

VARCHAR對name、owner和species列是個好的選擇,因為列值將會是變長的。這些列的長度都不必是相同的,而且不必是20。你可以挑選從1到255的任何長度,無論哪個對你來說好象最合理。(如果你做了較差的選擇,以後會變得你需要一個更長的欄位,MySQL提供一個ALTER TABLE語句。)

動物性表可以用許多方法表示,例如,”m”和”f”,或也許”male”和”female”。使用單個字元”m”和”f”是最簡單的。

為birth和death列使用DATE數據類型是相當明顯的選擇。

求這幾個步驟的MySQL操作代碼

3.

SELECT count(*)as count , s.cno ,c.cname

 FROM `score` as s left join course as c on s.cno = c.cno group  by

 

 s.cno  order by count desc limit 1;

4.SELECT

max(s.score),

s.cno,

c.cname

FROM

`score` AS s

LEFT JOIN course AS c on s.cno = c.cno

GROUP BY

s.cno

;

5.

SELECT

sum(s.score),

s.cno,

d.sname

FROM

`score` AS s

LEFT JOIN student AS d on s.sno = d.sno

GROUP BY

s.sno;

6.SELECT

avg(s.score),

s.cno,

c.cname

FROM

`score` AS s

LEFT JOIN course AS c on s.cno = c.cno

GROUP BY

s.cno;

7.

SELECT count(*) FROM `teacher` where tname like “李%”    ;

java連接資料庫mysql代碼及簡單訪問資料庫

import java.sql.*;

public class DataBasePractice {

public static void main(String[] args) {

//聲明Connection對象

Connection con;

//驅動程序名

String driver = “com.mysql.jdbc.Driver”;

//URL指向要訪問的資料庫名mydata

String url = “jdbc:mysql://localhost:3306/mydata”;

//MySQL配置時的用戶名

String user = “root”;

//MySQL配置時的密碼

String password = “root”;

//遍歷查詢結果集

try {

//載入驅動程序

Class.forName(driver);

//1.getConnection()方法,連接MySQL資料庫!!

con = DriverManager.getConnection(url,user,password);

if(!con.isClosed())

System.out.println(“Succeeded connecting to the Database!”);

//2.創建statement類對象,用來執行SQL語句!!

Statement statement = con.createStatement();

//要執行的SQL語句

String sql = “select * from student”;

//3.ResultSet類,用來存放獲取的結果集!!

ResultSet rs = statement.executeQuery(sql);

System.out.println(“—————–“);

System.out.println(“執行結果如下所示:”);

System.out.println(“—————–“);

System.out.println(” 學號” + “\t” + ” 姓名”);

System.out.println(“—————–“);

String name = null;

String id = null;

while(rs.next()){

//獲取stuname這列數據

name = rs.getString(“stuname”);

//獲取stuid這列數據

id = rs.getString(“stuid”);

//首先使用ISO-8859-1字符集將name解碼為位元組序列並將結果存儲新的位元組數組中。

//然後使用GB2312字符集解碼指定的位元組數組。

name = new String(name.getBytes(“ISO-8859-1″),”gb2312”);

//輸出結果

System.out.println(id + “\t” + name);

}

rs.close();

con.close();

} catch(ClassNotFoundException e) {

//資料庫驅動類異常處理

System.out.println(“Sorry,can`t find the Driver!”);

e.printStackTrace();

} catch(SQLException e) {

//資料庫連接失敗異常處理

e.printStackTrace();

}catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}finally{

System.out.println(“資料庫數據成功獲取!!”);

}

}

}

在上面while代碼段後面添加以下代碼段:

String name = null;

String id = null;

while(rs.next()){

//獲取stuname這列數據

name = rs.getString(“stuname”);

//獲取stuid這列數據

id = rs.getString(“stuid”);

//首先使用ISO-8859-1字符集將name解碼為位元組序列並將結果存儲新的位元組數組中。

//然後使用GB2312字符集解碼指定的位元組數組。

name = new String(name.getBytes(“ISO-8859-1″),”gb2312”);

//輸出結果

System.out.println(id + “\t” + name);

}

PreparedStatement psql;

ResultSet res;

//預處理添加數據,其中有兩個參數–「?」

psql = con.prepareStatement(“insert into student values(?,?)”);

psql.setInt(1, 8); //設置參數1,創建id為5的數據

psql.setString(2, “xiaogang”); //設置參數2,name 為小明

psql.executeUpdate(); //執行更新

//預處理更新(修改)數據

psql = con.prepareStatement(“update student set stuname = ? where stuid = ?”);

psql.setString(1,”xiaowang”); //設置參數1,將name改為王五

psql.setInt(2,10); //設置參數2,將id為2的數據做修改

psql.executeUpdate();

//預處理刪除數據

psql = con.prepareStatement(“delete from student where stuid = ?”);

psql.setInt(1, 5);

psql.executeUpdate();

//查詢修改數據後student表中的數據

psql = con.prepareStatement(“select*from student”);

res = psql.executeQuery(); //執行預處理sql語句

System.out.println(“執行增加、修改、刪除後的數據”);

while(res.next()){

name = res.getString(“stuname”);

id = res.getString(“stuid”);

name = new String(name.getBytes(“ISO-8859-1″),”gb2312”);

System.out.println(id + “\t” + name);

}

res.close();

psql.close();

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240749.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:22
下一篇 2024-12-12 12:22

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 數據結構與演算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與演算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序演算法、字元串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29

發表回復

登錄後才能評論