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('主機','賬號','密碼');
2)、選擇數據庫作為默認的數據庫
mysql_select_db('數據庫名');
mysql_error(); //檢查上一步執行的MySQL的錯誤
3)、 設置字符集
mysql_set_charset('utf8');
做項目的時候亂碼的解決方法:
1、頁面的存儲字符集是否為UTF-8
2、瀏覽器是否解析為utf-8字符集 header() <meta />
3、是否設置了連接數據庫的字符集
4、數據庫的存儲字符集是否設置了utf8 default charset=utf8
4)、執行SQL語句
mysql_query(SQL語句);
5)、處理結果
一種是有結果集(select,desc)
mysql_fetch_row($reuslt);//得到的將是一個索引數組
mysql_fetch_assoc($result);//得到的將是一個關聯數組
mysql_fetch_array($result);//將得到的是一個關聯和索引數組
注意:結果集里面的數據使用上面的函數一次只能拿出來一條,沒有的時候將會返回false。
一種是沒有結果集(insert\delete\update)
mysql_affected_rows();//取得前一次 MySQL 操作所影響的記錄行數
6)、關閉資源
mysql_close();
其他的函數:
mysql_num_rows('結果集的資源'); //返回總共獲取到了多少跳數據
mysql_insert_id();//取得了上次insert操作所產生的自增id
授權
mysql> grant all on lamp.* to 'zhangsan@'192.168.141.249' identified by '123456';
刷新權限
mysql> flush privileges;
移除create 權限
mysql> revoke create on lamp.* from 'haha'@'localhost';
移除權限 revoke 權限 on 數據庫名.數據表名 from '用戶名'@'登錄主機'
mysql> revoke select on lamp.* from 'haha'@'localhost';
刪除用戶
刪除mysql數據庫下的user表中 user='haha'
mysql> delete from mysql.user where user = 'haha';
查詢當前stu表中所有的索引
mysql> show indexes from stu\G
數據定義語言(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('主機','賬號','密碼');
2)、選擇數據庫作為默認的數據庫
mysql_select_db('數據庫名');
mysql_error(); //檢查上一步執行的MySQL的錯誤
3)、 設置字符集
mysql_set_charset('utf8');
做項目的時候亂碼的解決方法:
1、頁面的存儲字符集是否為UTF-8
2、瀏覽器是否解析為utf-8字符集 header() <meta />
3、是否設置了連接數據庫的字符集
4、數據庫的存儲字符集是否設置了utf8 default charset=utf8
4)、執行SQL語句
mysql_query(SQL語句);
5)、處理結果
一種是有結果集(select,desc)
mysql_fetch_row($reuslt);//得到的將是一個索引數組
mysql_fetch_assoc($result);//得到的將是一個關聯數組
mysql_fetch_array($result);//將得到的是一個關聯和索引數組
注意:結果集里面的數據使用上面的函數一次只能拿出來一條,沒有的時候將會返回false。
一種是沒有結果集(insert\delete\update)
mysql_affected_rows();//取得前一次 MySQL 操作所影響的記錄行數
6)、關閉資源
mysql_close();
其他的函數:
mysql_num_rows('結果集的資源'); //返回總共獲取到了多少跳數據
mysql_insert_id();//取得了上次insert操作所產生的自增id
授權
mysql> grant all on lamp.* to 'zhangsan@'192.168.141.249' identified by '123456';
刷新權限
mysql> flush privileges;
移除create 權限
mysql> revoke create on lamp.* from 'haha'@'localhost';
移除權限 revoke 權限 on 數據庫名.數據表名 from '用戶名'@'登錄主機'
mysql> revoke select on lamp.* from 'haha'@'localhost';
刪除用戶
刪除mysql數據庫下的user表中 user='haha'
mysql> delete from mysql.user where user = 'haha';
查詢當前stu表中所有的索引
mysql> show indexes from stu\G
數據定義語言(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('主機','賬號','密碼');
2)、選擇數據庫作為默認的數據庫
mysql_select_db('數據庫名');
mysql_error(); //檢查上一步執行的MySQL的錯誤
3)、 設置字符集
mysql_set_charset('utf8');
做項目的時候亂碼的解決方法:
1、頁面的存儲字符集是否為UTF-8
2、瀏覽器是否解析為utf-8字符集 header() <meta />
3、是否設置了連接數據庫的字符集
4、數據庫的存儲字符集是否設置了utf8 default charset=utf8
4)、執行SQL語句
mysql_query(SQL語句);
5)、處理結果
一種是有結果集(select,desc)
mysql_fetch_row($reuslt);//得到的將是一個索引數組
mysql_fetch_assoc($result);//得到的將是一個關聯數組
mysql_fetch_array($result);//將得到的是一個關聯和索引數組
注意:結果集里面的數據使用上面的函數一次只能拿出來一條,沒有的時候將會返回false。
一種是沒有結果集(insert\delete\update)
mysql_affected_rows();//取得前一次 MySQL 操作所影響的記錄行數
6)、關閉資源
mysql_close();
其他的函數:
mysql_num_rows('結果集的資源'); //返回總共獲取到了多少跳數據
mysql_insert_id();//取得了上次insert操作所產生的自增id
授權
mysql> grant all on lamp.* to 'zhangsan@'192.168.141.249' identified by '123456';
刷新權限
mysql> flush privileges;
移除create 權限
mysql> revoke create on lamp.* from 'haha'@'localhost';
移除權限 revoke 權限 on 數據庫名.數據表名 from '用戶名'@'登錄主機'
mysql> revoke select on lamp.* from 'haha'@'localhost';
刪除用戶
刪除mysql數據庫下的user表中 user='haha'
mysql> delete from mysql.user where user = 'haha';
查詢當前stu表中所有的索引
mysql> show indexes from stu\G
數據定義語言(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('主機','賬號','密碼');
2)、選擇數據庫作為默認的數據庫
mysql_select_db('數據庫名');
mysql_error(); //檢查上一步執行的MySQL的錯誤
3)、 設置字符集
mysql_set_charset('utf8');
做項目的時候亂碼的解決方法:
1、頁面的存儲字符集是否為UTF-8
2、瀏覽器是否解析為utf-8字符集 header() <meta />
3、是否設置了連接數據庫的字符集
4、數據庫的存儲字符集是否設置了utf8 default charset=utf8
4)、執行SQL語句
mysql_query(SQL語句);
5)、處理結果
一種是有結果集(select,desc)
mysql_fetch_row($reuslt);//得到的將是一個索引數組
mysql_fetch_assoc($result);//得到的將是一個關聯數組
mysql_fetch_array($result);//將得到的是一個關聯和索引數組
注意:結果集里面的數據使用上面的函數一次只能拿出來一條,沒有的時候將會返回false。
一種是沒有結果集(insert\delete\update)
mysql_affected_rows();//取得前一次 MySQL 操作所影響的記錄行數
6)、關閉資源
mysql_close();
其他的函數:
mysql_num_rows('結果集的資源'); //返回總共獲取到了多少跳數據
mysql_insert_id();//取得了上次insert操作所產生的自增id
刷新權限
mysql> flush privileges;
移除create 權限
mysql> revoke create on lamp.* from 'haha'@'localhost';
移除權限 revoke 權限 on 數據庫名.數據表名 from '用戶名'@'登錄主機'
mysql> revoke select on lamp.* from 'haha'@'localhost';
刪除用戶
刪除mysql數據庫下的user表中 user='haha'
mysql> delete from mysql.user where user = 'haha';
查詢當前stu表中所有的索引
mysql> show indexes from stu\G
數據定義語言(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
mysql數據庫-第一版(待更新)轉載于:https://www.cnblogs.com/zhanghaiyang/p/7212798.html
總結
以上是生活随笔為你收集整理的Mysql学习总结(41)——MySql数据库基本语句再体会的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript的正则表达式实现邮箱
- 下一篇: ipmitool 中文 帮助 文档