您現在的位置是:首頁 > 音樂首頁音樂

sql入門基礎知識(經典)

由 玉米撩影視 發表于 音樂2023-01-24
簡介* 修改上面查詢顯示欄位名稱,用“姓名”表示姓名,用“及格”表示及格* 別名:欄位 [as] 別名* mysql> select id,concat(firstname,secondname) as 姓名 ,count - 60 及格

查詢有多少個班級sql

1。資料庫介紹

* 資料庫(DataBase,DB),資料庫用於存放資料的檔案系統

* 資料庫軟體系統(DBMS)

* 關係:用二維表描述實體與實體之間聯絡

* 記錄:元組,二維表中一個一行資料

* 欄位:列,屬性,域,二維表中一個一列

* 注意事項:

* 列名必須唯一

* 列沒有順序

* 行沒有順序

2。關係資料庫

* Oracle,oracle公司,資料庫的效能非常好。收費

* DB2,IBM公司,效能不錯。收費

* Sql server ,微軟 IIS

* Mysql,Oracle公司。mysql升級,效能最佳化

3。Mysql的安裝

* 安裝指定“資料庫檔案路徑” : %mysql%/data

* mysql資料的utf-8編碼為:utf8

* mysql的預設埠:3306

* mysql的超級管理員:root ,安裝只需要給root設定密碼

* %mysql%/my。ini檔案

* [mysql]

* default-character-set=utf8 ,預設編碼

* datadir=“C:/java/MySQL/MySQL Server 5。5/Data/” ,資料庫檔案路徑

4。mysql的登入

* 前提,必須啟動mysql服務

* windows啟動服務:“執行” services。msc

* 查詢mysql的命令引數:mysql -? 或 mysql ——help

* 設定使用者名稱

* 格式1:-u使用者名稱

* 格式2:——user=使用者名稱

* 設定密碼:

* 格式1:-p密碼

* 格式2:——password=密碼

* 設定主機

* 格式1:-hIP

* 格式2:——host=IP地址

* 設定埠號:

* 格式1:-P埠

* 格式2:——port=埠

* 登入格式:

* 指定書寫密碼:mysql -uroot -p1234 回車登入

* 先登入在書寫密碼:mysql -uroot -p 回車,輸入密碼回車,登入

5。常用命令

* 顯示所有的資料庫:mysql > show databases;

* 建立資料庫將%mysql%/data建立一個資料夾

* 預設資料庫

* mysql,mysql資料庫的核心資料庫,【不能刪除】

* performance_schema,mysql提供記錄資料的資料庫

* information_schema,檢視,虛擬表

* test,空資料庫

* 使用資料庫:mysql > use 資料庫名稱;

* 對資料庫操作之前必須使用

* 查詢當前資料庫中具有的表:mysql > show tables;

* 確定當前資料庫: mysql > select database();

* 查詢表結構:mysql > desc biaomingc:

* describe

* 查詢資料庫支援的字符集:mysql > show character set;

* 顯示當前系統的環境變數,並且只顯示編碼:mysql > show variables like ‘%char%’;

6。使用者管理

* 建立使用者

* mysql > create user 使用者名稱稱 [identified by ‘密碼’]

* 使用者名稱稱的格式:‘名稱’@‘主機’ ,對應user表,‘mysql。user’@‘mysql。host’

* 主機可以不指定,預設是%,表示所有人都可以訪問

* 建立使用者,就是給mysql資料庫的user表新增記錄

* 查詢使用者表的部分資訊

* mysql > select host,user,password from user;

* 例如:

* 新增itcast使用者

* mysql > create user ‘itcast’@‘192。168。1。100’ identified by ‘1234’;

* 修改使用者密碼

* 登入之後,使用set password進行修改

* mysql > set password for 使用者名稱稱 = password(‘1234’);

* 刪除使用者l

* 格式:drop user 使用者名稱稱

* mysql > drop user ‘itcast’@‘192。168。1。100’;

* 設定許可權

* 授權格式:grant 許可權 on 資料庫。表 使用者名稱稱 with grant option;

* 許可權:all表示所有的許可權

* 資料庫。表:*。*所有資料庫的所有表;mysql。*,mysql資料庫的所有表;mysql。user,mysql資料庫的user表

* with grant option:表示當前使用者可以將自己所具有的許可權,再次授權給其他人。

* 例如:grant all on *。* to ‘demo’@‘%’ with grant option;

* 取消許可權:revoke all privileges ,grant option from 使用者名稱稱;

* 思考:如果mysql,root使用者的密碼忘記?

* 關閉mysql伺服器(mysqld。ext結束)

* 使用命令啟動mysql伺服器

* cmd > mysqld ——console ——skip-grant-tables ,可以不使用密碼登入,之後將可以設定密碼

* 注意:如果set password不能設定,可以使用update

* update user set password = password(“1234”) where user=“root” and host=“%”

7。mysql異常

* 伺服器沒有啟動

* ERROR 2003 (HY000): Can‘t connect to MySQL server on ’localhost‘ (10061)

* 沒有使用資料庫,及當前資料庫為null

* ERROR 1046 (3D000): No database selected

* 解決辦法:mysql > use 資料庫名;

* 沒有許可權

* ERROR 1044 (42000): Access denied for user ’demo‘@’%‘ to database ’mysql‘

* 啟動mysql服務:net start mysql

* 發生系統錯誤 3。

* 系統找不到指定的路徑。

* 原因:沒有在新增服務時,將目錄切換到bin目錄下

* win7系統是net無法啟動

* 發生系統錯誤 5。

* 解決辦法:使用超級管理員執行cmd(cmd右鍵)

8。綠色版mysql的安裝

* 解壓mysql-5。5。27-win32。zip

* 複製my-small。ini,並將名稱修改為my。ini

* 透過命令啟動:mysqld ——console

* ——console 控制檯,將啟動資訊列印

* 指令碼位置:%mysql%/bin/mysqld。exe

* 需要配置系統環境變數path,任意位置都可以使用指令碼

* 將mysql配置成windows系統服務

* 注意:如果要配置系統服務,必須將命令列的目錄切換到%mysql%/bin

* 註冊服務:cmd > mysqld ——install

* 移除服務:cmd > mysqld ——remove

* 啟動已經成為系統服務服務項(作業系統的命令)

* 啟動服務:cmd > net start mysql

* 停止服務:cmd > net stop mysql

9。sql介紹

* sql : SQL被稱為結構化查詢語言(structured query language)

* SQL分類

* DDL,資料定義語言。(結構)

* 建立:create

* 修改:alter

* 刪除:drop

* DML,資料操縱語言(內容)

* 錄入:insert

* 修改:update

* 刪除:delete

* DQL,資料查詢語言

* 查詢:select

### 資料庫中存放表,表中存放的資料

10。DDL——資料定義語言

* 資料庫(itcast)

* 建立1:mysql > create database 資料庫名稱;

* 建立2:mysql > create database 資料庫名稱 character set 字符集;

* 刪除: mysql > drop database 資料庫名稱;

* 注意:

* 在建立的資料庫目錄中db。opt檔案

* default-character-set=latin1 ,資料庫使用的預設編碼為ISO-8859-1,所以不支援中文

* 表(users)

* 注意:先使用資料庫

* 建立:mysql > create table 表名(欄位名稱1 欄位型別1,欄位名稱2 欄位型別2,。。。);

* 在幫助文件中可以“data types”

* 建立user表

create table users(

id varchar(32),

username varchar(50),

age int ,

count double(4,1)

);

* 修改表名:alter table 表名 rename 新表名;

* 將表名修改成users

* mysql > alter table user rename users;

* 刪除表: drop table 表名

* 欄位(id,firstname,secondname,age,count)

* 新增 : alter table 表名 add [column] 欄位名稱 欄位型別;

* users表新增一個firstname欄位

* 修改:alter table 表名 change 舊欄位名稱 欄位名稱 欄位型別;

* 將欄位username重新命名為secondname

* 刪除:alter table 表名 drop [column] 欄位名稱

* 型別

* 字元:(java String)

* char(n),定長字元

* varchar(n),變長字元

* 例如:fengjie ——> char(10) 將原有資料,再加3個空格 ; varchar(10) 具體資料的長度

* 數字

* int,表示整型

* double(m,n),表示雙精度,m表示所有數字的個數,n表示小數位數。例如:double(5,2), 最大值999。99

* decimal,表示所有的數字

* 約束??

11。DML,資料操縱語言

* 插入資料:insert into 表名[(欄位名稱1,欄位名稱2,。。。) ] values(值1,值2,。。。);

* 給users表新增一條記錄:u001 張 飛 28 97

* mysql > insert into users values(’u001‘,’飛‘,28,97,’張‘);

* mysql > insert into users(id,firstname,secondname,age,count) values(’u002‘,’張‘,’飛2‘,85,100);

* mysql > insert into users(id) values(’u003‘);

* 注意:

* 如果使用字串,資料必須使用引號括起來。建議使用單引號

* 欄位與值必須匹配

* 如果沒有指定欄位,則欄位將使用預設值,預設值null ,不是“null”

* 修改資料: update 表名 set 欄位名稱 = 值 , 欄位名稱2 = 值2 , 。。。 [ where 條件 ]

* 將u003成績修改成20

* mysql > update users set count = 20; # 將所有的程式修改成功20

* mysql > update users set count = 20 where id = ’u003‘;

* 刪除資料: delete from 表名 [where 條件]

* 刪除u003

* mysql > delete from users where id = ’u003‘;

* 注意:不要隨意執行 delete from 表名;

12。DQL——資料查詢語言

* 準備資料

* insert into `users`(`id`,`firstname`,`age`,`secondname`,`count`) values (’u001‘,’張‘,18,’飛‘,60),(’u002‘,’趙‘,20,’雲‘,58),(’u003‘,’關‘,22,’羽‘,80),(’u004‘,’劉‘,25,’備‘,98),(’u006‘,’黃‘,18,’蓋‘,NULL),(’u005‘,’王‘,12,’子云‘,20),(’u007‘,’諸葛‘,24,’亮‘,100);

* 使用幫助文件搜尋:lock

* 格式:select 欄位1,欄位2,。。。 from 表名 [where 條件]

* 沒有條件查詢

* 查詢所有

* mysql > select * from users;

* mysql > select id,firstname,secondname,age,count from users;

* 查詢部分資訊

* mysql > select firstname,secondname from users;

* 查詢使用者編號、姓名,及格(60差值)

* mysql > select id,firstname,secondname ,count from users;

* mysql > select id,firstname,secondname ,count - 60 from users;

* mysql> select id,concat(firstname,secondname) ,count - 60 from users;

* 修改上面查詢顯示欄位名稱,用“姓名”表示姓名,用“及格”表示及格

* 別名:欄位 [as] 別名

* mysql> select id,concat(firstname,secondname) as 姓名 ,count - 60 及格 from users;

* mysql> select id,concat(firstname,secondname) as ’姓 名‘ ,count - 60 ’及 格‘ from users;

* 注意:別名可以不使用引號,但如果別名之間存在空格則必須使用引號

* 帶有條件查詢

* 查詢分數等於60的學生

* mysql > select * from users where count = 60;

* 查詢姓“張”學生

* mysql > select * from users where firstname = ’張‘;

* 查詢年齡大於18的學生

* mysql > select * from users where age > 18;

* 顯示分數在60-80的學生 [60,80]

* mysql > select * from users where count >= 60 and count <= 80;

* mysql > select * from users where count between 60 and 80;

* 查詢編號為u001和u002的學生

* mysql > select * from users where id = ’u001‘ or id = ’u002‘;

* mysql > select * from users where id in (’u001‘,’u002‘);

* 查詢年齡是18或20的學生

* mysql > select * from users where age = 18 or age = 20;

* 查詢名中含有“雲”的學生

* mysql > select * from users where secondname like ’%雲%‘;

* %表示,某一邊字元個數不限定

* 查詢名中第二字還有“雲”的學生

* mysql > select * from users where secondname like ’_雲%‘;

* _表示,一個任意字元

# 新增資料:mysql> update users set secondname=’備備雲‘ where id = ’u004‘;

* 查詢名中第三字還有“雲”的學生

* mysql > select * from users where secondname like ’__雲%‘;

# 新增資料:mysql> update users set secondname =’%‘ where id = ’u007‘;

* 查詢包含%特殊符號

* mysql> select * from users where secondname like ’%\%%‘;

* 注意:可以使用跳脫字元\

* 查詢分數小於60 或 大於90分的學生

* mysql> select * from users where count < 60 or count > 90;

* 查詢分數等於60 或者 分數大於90並且年齡大於23

* mysql> select * from users where count = 60 or count > 90 and age > 23;

* mysql> select * from users where count = 60 or ( count > 90 and age > 23 ); #建議使用

* 總結:運算子的優先順序, 條件運算子 > and > or

* 查詢沒有考試的學生

* mysql> select * from users where count is null;

* 聚合函式的使用

* 有多少條記錄

* mysql > select count(*) from users;

* mysql > select count(count) from users; # 不計算null值

* mysql > select count(1) from users; # 推薦

* 平均成績

* mysql > select avg(count) from users;

* 注意:

* avg中使用的數字欄位

* 不計算null值

* 資料準確:mysql > select sum(count)/count(1) from users;

* 最高成績

* mysql > select max(count) from users;

* 最小年齡

* mysql > select min(age) from users;

* 班級總成績

* mysql > select sum(count) from users;

* 查詢所有的年齡數

* mysql> select age from users order by age asc ;

* order by用於排序:格式:order by 欄位 asc | desc

* mysql> select distinct age from users order by age asc ;

* 分組

* 新增班級欄位(classes)

* mysql> alter table users add column classes varchar(3);

# 新增資料

* update users set classes = ’1‘ where id in (’u001‘,’u002‘,’u003‘,’u004‘);

* update users set classes = ’2‘ where id in (’u005‘,’u006‘,’u007‘);

* 查詢1班和2班的平均成績

* 平均成績:select sum(count)/count(1) from users;

* group by進行分組,格式:group by 欄位

* mysql > select sum(count)/count(1) from users group by classes;

* mysql > select sum(count)/count(1) , classes from users group by classes;

* mysql > select sum(count)/count(1) as ’平均成績‘ , classes as ’班級‘ from users group by classes;

* 錯誤資料:mysql > select sum(count)/count(1) as ’平均成績‘ , classes as ’班級‘ ,id from users group by classes;

* 注意:

* 如果使用分組,在select查詢的欄位中,只能使用分組的欄位和聚合函式

* 查詢班級的平均成績為不及格的

select sum(count)/count(1) as avg ,classes from users group by classes having avg <=60

* 分組的條件需要使用having

* mysql > select sum(count)/count(1) , classes from users group by classes having sum(count)/count(1) <=60 ;

* mysql > select sum(count)/count(1) as avg , classes from users group by classes having avg <=60 ;

* 如果不是having

* 錯誤資料:mysql > select sum(count)/count(1) <= 60 , classes from users group by classes ;

+——————————————-+————-+

| sum(count)/count(1) <= 60 | classes |

+——————————————-+————-+

| 0 | 1 |

| 1 | 2 |

+——————————————-+————-+

* 所有的平均成績:select sum(count)/count(1) as avg , classes from users group by classes;

* 虛擬的查詢結果:select * from demo where avg < 60;

* 合併

select * from (select sum(count)/count(1) as avg , classes from users group by classes) as demo where demo。avg < 60;

13。中文處理

* 1。建立資料庫時,指定編號:mysql > create database itcast3 character set UTF8;

* use itcast3;

# 準備表: create table demo(name varchar(30));

# 準備資料:insert into demo values(’鳳姐‘);

* 2。臨時設定編碼:mysql > set names gbk;

* 總結

* 查詢 mysql> show variables like ’%char%‘;

* 1。資料庫必須支援中文 ,character_set_database | utf8

* 2。三個編碼統一,並且需實際客戶端的編碼相同(cmd預設編碼為gbk)

character_set_client | gbk

character_set_connection | gbk

character_set_results | gbk

操作步驟

* 建立資料庫(支援中文)

* 建立表

* 錄入資料

* 查詢

sql入門基礎知識(經典)