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
操作步驟
-
建立資料庫(支援中文)
-
建立表
-
錄入資料
-
查詢
轉載出處:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69911024/viewspace-2639952/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript 基礎知識入門JavaScript
- MySql入門--基礎知識MySql
- css 入門基礎知識CSS
- JavaScript入門①-基礎知識築基JavaScript
- Dubbo基礎入門知識點
- Java基礎知識入門-JDKJavaJDK
- Java入門基礎知識點Java
- Linux驅動入門基礎基礎知識Linux
- SQL與NoSQL資料庫入門基礎知識詳解SQL資料庫
- Python基礎知識入門(二)Python
- Python入門基礎知識(二)Python
- 【LaTeX入門】01、LaTeX基礎知識
- GO基礎知識分享Go
- Python入門必知的知識點!Python基礎入門Python
- OpenSSL 入門:密碼學基礎知識密碼學
- Python入門基礎知識例項,Python
- Python入門之基礎知識(一)Python
- WebSocket系列之基礎知識入門篇Web
- Python類的基礎入門知識Python
- GO基礎知識分享2Go
- Python基礎知識分享Python
- MySQL基礎知識分享(一)MySql
- JavaSE基礎知識分享(一)Java
- JavaSE基礎知識分享(二)Java
- MySQL基礎知識分享(二)MySql
- JavaSE基礎知識分享(三)Java
- JavaSE基礎知識分享(四)Java
- JavaSE基礎知識分享(五)Java
- JavaSE基礎知識分享(六)Java
- JavaSE基礎知識分享(七)Java
- JavaSE基礎知識分享(八)Java
- JavaSE基礎知識分享(九)Java
- JavaSE基礎知識分享(十)Java
- JavaSE基礎知識分享(十一)Java
- JavaSE基礎知識分享(十二)Java
- JavaSE基礎知識分享(十四)Java
- JavaSE基礎知識分享(十五)Java
- zookeeper基礎知識分享(一)