1. 程式人生 > >Mysql學習總結(41)——MySql資料庫基本語句再體會

Mysql學習總結(41)——MySql資料庫基本語句再體會

1、資料定義語言(DDL):定義和管理資料物件,比如建立資料庫、資料表

資料操作語言(DML):用於操作資料庫物件中的包含的資料。

資料查詢語言(DQL):用於查詢資料庫物件中包含的資料,能夠對錶進行查詢。

資料控制語言(DCL):管理資料庫的語言。

2、進入資料庫的方式

開始-》執行-》cmd-》mysql -u root -p

Mysql -h 主機地址 -u 使用者名稱 -p

Mysql -h localhost -u root -p

3、資料庫的操作:

a.建立資料庫 create database 資料庫名;

b.檢視所有的資料庫 show databases;

c.選擇資料庫 use 資料庫名;

d.檢視自己選擇的資料庫 select database();

e.刪除資料庫 drop database 資料庫名;

如果不存在則建立:create database if not exists 庫名

如果不存在則建立並設定字符集:

Create database if not exists 資料庫名 default charset utf8

4、資料表的操作:

a.檢視資料庫中的資料表: show tables;

b.建立資料表::create table 資料表名;

c.檢視資料表的結構: desc 資料表名;

describe stu 描述表結構

【DESCRIBE TABLE 用於列出指定表或檢視中的所有列

DESCRIBE INDEXFOR TABLE 用於列出指定表的所有索引。

所以 DESCRIBE是用來顯示資料結構資訊的

而desc是descend ,是用於查詢出結果時候對結果進行排序,是降序排序】

d.檢視建立資料表的語句:show create table 資料表名;

e.刪除資料表:drop table 資料表名;

F.如果存在則刪除drop database if exists lamp

5、資料的操作:

1)、插入資料:

方法1:插入指定的欄位:

insert into 資料表名(欄位名1,欄位名2....) values(值1,值2....);

方法2:插入所有欄位:

insert into 資料表名 values(值1,值2,值3....)

方法3:插入多條語句:

insert into 資料表名 (欄位名1,欄位名2....) values (值1,值2),(值3,值4),........;

方法4:插入單條語句:

insert into 資料表名 set 欄位名1 = 值1,欄位名2 = 值2....

方法5:插入某些查詢的結果:

insert into 資料表名(欄位名1,欄位名2....) select 欄位名1, 欄位名2.....from 資料表名;

2)、檢視資料:

方法1:select 欄位名1,欄位名2,欄位名3.... from 資料表名

方法2:select * from 資料表名

A. select主句

查詢當前的資料庫 select database();

查詢版本 select version();

select 1 + 2;

B. from子句--從指定的資料表裡面查詢資料

select 欄位名1,欄位名2,欄位名3.... from 資料表名

select * from 資料表名

C. where子句--查詢資料的條件(可選)

select語句裡面使用where子句指定過濾條件。 where條件中可以用:

1. 算數運算子(+ - * / %)

2 比較運算子( < >= > <= != =)

3. 邏輯運算子(not and or )

4. in操作符,指定條件範圍,範圍中的每個條件都可以進行匹配;

格式:in(值1,值2.....)

5. between操作符,在指定的兩個值之間;

格式:between 起始值 and 結束值

6. not,否定後面的操作

7. like或 not like 兩個操作符要使用包含萬用字元的字串

萬用字元:

%:表示任意字元出現任意次數,可以放在任意位置

_:下劃線,使用者和%一樣,但是表示任意字元出現一次

格式:欄位名 like '字串'

%值% :包含值 %值:以值結尾的 值%:以值開頭的

D. order by子句----對欄位進行排序

格式1:order by 欄位名[asc | desc]

注意:asc(預設排列順序)是升序排序,desc降序排序

格式2:order by 欄位名1[asc | desc],欄位名2[asc | desc]

注意:指的是欄位名1完全相同的情況下按照欄位名2進行排序

E. limit 子句---限制結果集

格式1:limit m(返回多少行資料)

格式2:limit n,m

注意:1、n表示從多少行開始取值(第一條資料結果是從0開始 的),m表示返回的行數。

2、如果沒有足夠的行數,有多少行就顯示多少行。

E. group by 子句--用於分組

格式1: group by 欄位名(按照欄位名進行分組)

格式2:group by 欄位名 having 條件(按照分組完成之後的結果 再次進行過濾)

注意順序:select=>from=>where=>group by =>having=>order by =>limit

3)、修改資料:

update 資料表名 set 欄位名1=值1,欄位名2=值2.... where 欄位名=值;

所有的班級是null的學員的班級設定為天庭 is null 是null的值會被選中

mysql> update stu set class = '天庭' where class is null;

4)、刪除資料:

delete from 資料表名 where 欄位名=值

注意:1、一定要加上條件。2、在做大量的刪除之前,一般會將條件先進行測試,使用select先測試出要刪除的東西,然後再刪除。3、要刪除所有資料的時候不要使用delete而是使用 truncate table表名(他比delete要快,將表刪除,然後再重新建立)

6、對欄位的操作

1)、更改欄位

方法1: alter table 資料表名 change 原欄位名 新欄位名 型別 約束條件

方法2: alter table 資料表名 modify 欄位名 型別 約束條件

注意:change可以修改欄位名,modify不可以修改欄位名

2)、新增欄位

方法1:alter table 資料表名 add 欄位名 型別 約束條件

方法2:alter table 資料表名 add 欄位名 型別 約束條件 first 放在最前面

方法3:alter table 資料表名 add 欄位名 型別 約束條件 after 放在哪個欄位名後面

3)、刪除欄位

alter table 資料表名 drop 欄位名

4)、修改資料表名

alter table 資料表名 rename as 新表資料名

7、索引的分類:

顯示所有的索引

mysql> show indexes from test\G

1)、常規索引(index),最基本的索引,沒有任何限制

A. 1-建立索引:

create table 表名(

欄位.....,

index 索引名 (要索引的欄位)

);

2--資料表已經建立的情況下:

create index 索引名 on 資料表名(要加索引的欄位);

B. 刪除索引:

drop index 索引名 on 資料表名

alter table test(表名) drop index username;(索引名)

C.刪除主鍵索引時,該欄位不能是自增

mysql> alter table demo drop primary key;

2)、唯一索引(unique)--索引列裡面的值必須是唯一的,允許有空值

A .1--建立索引:

create table 表名(

欄位....,

unique 索引名(要索引的欄位)

);

2--資料表已經建立的情況下:

create unique index 索引名 on 資料表名(要索引的欄位)

B. 刪除索引:

drop index 索引名 on 資料表名

3)、主鍵索引(primary key) 一個表只能有一個主鍵

A. 1--建立索引:

create table 表名(

id int unsigned auto_increment primary key,

name char(32)

);

B. 刪除索引:

alter table 表名 drop primary key

注意:如果主鍵的欄位上面有自增(auto_increment)需要先將auto_increment去掉,再刪除。

alter table 表名 change 自增的列 自增的列 型別

8、1) 預設情況下,建立表的時候不指定表的儲存引擎,將使用預設的儲存引擎。

show variables like 'default_storage_engine';

2)檢視當前資料庫支援的儲存引擎

show engines;

3) 資料表定義儲存引擎

mysql> create table t2(

-> id int unsigned auto_increment primary key,

-> name char(32)

-> )engine=myisam;

9、資料型別

整型-- int tinyint 浮點型-- float(M,D) double(M,D) 定點型-- decimal(M,D)

字串-- char(M) varchar(M) text blod 日期--時間戳 列舉型--enum 集合型別--set

10、約束條件(通用)

1)、null---欄位中沒有插入值時,預設為null。

not null--必須在插入值時,在該欄位中插入一個值。如果不插入值那麼為”空“

2)、default 值 在不插入該欄位時預設插入的值。

11、 整型的約束條件:

1)、zerofill表示0填充。一般和整型後面設定的寬度一起使用,如果數值長度小於指定的長度那麼將會在前面補充相對應的0進行填充。

2)、unsigned(無符號)如果要在欄位裡面儲存非負數,或者較大上限的值時可使用該約束條件,將從0開始,需要在欄位型別後面緊跟著定義unsigned。

3)、auto_increment,自增,在產生一個唯一的標識或順序值的時候,可以利用這個約束條件。這個約束條件只能用於整數型別,值一般從1開始。每行加1,插入一個null到一個auto_increment列時,MySQL將插入一個比出現過的最大值+1的值。一個表中只能有一個auto_increment列,並且必須定義為primary key或unique才能夠使用。

12、統計查詢

1)、count()用來進行計數。

獲取該表中一共有多少條資料

mysql> select count(*) from test

count(*)資料行的條數。

count(欄位名) 來進行統計,但是它只會統計全體非null值的個數。

2)、min()最小值

3)、max()最大值

4)、sum()和

5)、avg()平均數 計算的時候不會將null的列計算在內

13、完全限定

select 表名.欄位名 from 庫名. 表名

14、起別名

欄位名和表名都可以起別名 as

select count(*) as 別名 from 表名;

15、 拼接欄位

concat(欄位,欄位)

16、關聯查詢

1、找關係

2、就先寫出 select * from 表1,表2

3、 寫where 條件

4、將*替換成你想要的資料

17、子查詢----在查詢裡面再包含一個查詢

注意:子查詢總是從內向外進行處理.實際上他執行了2個SQL語句

1)、select name,(select name from level where user.level=level.id) from user;

2)、後置用法:當作條件來用

現在我要找出所有翠紅樓裡面管理層人員。

mysql> select name from user where level in (select id from level where name in( '翠紅樓老鴇','翠紅樓龜公','翠紅樓老闆'));

18、匯出mysql資料庫

1)、匯出資料庫及裡面的結構和資料:C:\Documents and Settings\admin>mysqldump -u root -p lamp > C:\xampp\htdocs\test.sql

2)、匯出指定庫裡面的表 C:\Documents and Settings\admin>mysqldump -uroot -p lamp test> C:\xampp\ht docs\test1.sql

3)、匯出資料庫的結構的:mysqldump -u 使用者名稱 -p -d 資料庫名 > 匯出的檔名

4)、匯出指定庫的指定表的結構:mysqldump -u 使用者名稱 -p -d 資料庫名 表名 > 匯出的檔名

19、匯入資料庫

1)、在退出資料庫的情況下 mysql -u 使用者名稱 -p 資料庫名 < 資料庫檔案

2)、在進入到資料庫並且選中的情況下 source 資料庫檔案

20、修改密碼

1、C:\Documents and Settings\admin>mysqladmin -u root -p password 要設定的密碼

2、set password for '使用者名稱'@'登入主機'=password('新密碼');

21、mysql忘記密碼

步驟:

1、關閉正在執行的MySQL

2、開啟dos跳轉到mysql的bin目錄下

C:\Documents and Settings\lgzhyan>cd C:\xampp\mysql\bin

3、輸入C:\xampp\mysql\bin>mysqld --skip-grant-tables

4、再開啟一個視窗進入到mysql的bin目錄下

5、輸入mysql回車,這個時候可以使用root的身份強行進去。

6、進入到mysql這個庫 use mysql

7、update user set password=password('新密碼') where user='root'

8、重新整理許可權 flush privileges

22、刪掉匿名使用者

drop user ''@'localhost';

23、退出MySQL 1)、quit 2)、exit 3)、\q

24、常見的一些操作

\g 可以代替分號。

\c 取消未完成的操作。

-b 關閉蜂鳴器

-P 埠號

’回車

\G 讓資料豎起來

25、進入資料庫伺服器在不選擇資料庫的情況下選擇lamp庫中的goods表中的所有資料

mysql> select * from lamp.goods;

26、PHP連線資料庫步驟:

1)、連線資料庫

mysql_connect('主機','賬號','