1.數據庫介紹java
數據庫(DataBase,DB),數據庫用於存放數據的文件系統mysql
數據庫軟件系統(DBMS)sql
關係:用二維表描述實體與實體之間聯繫數據庫
記錄:元組,二維表中一個一行數據windows
字段:列,屬性,域,二維表中一個一列性能優化
注意事項:服務器
列名必須惟一oracle
列沒有順序ide
行沒有順序函數
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 > select * from users where secondname like ‘__雲%’;
查詢包含%特殊符號
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;
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
操做步驟
建立數據庫(支持中文)
建立表
錄入數據
查詢