mysql總結

set names gbk;dos解決亂碼 臨時方案

命令下操作數據庫語句
創建數據庫 create database 數據庫名;
查看數據庫 show databases;
刪除數據庫 drop database 數據庫名稱;
查詢正在使用的數據庫 select database();
使用數據庫 use 數據庫名;

創建表create table 表名(
字段名類型(長度) [約束],
字段名類型(長度) [約束],
...
);
刪除表 drop table 表名;

關鍵字
primary key
foreign key
references
constraint
Unique
auto_increment

=========================創建數據庫
* create database 數據庫名;
* create database 數據庫名 character set 字符集;

===============================查看數據庫

show databases;

=======================================刪除數據庫
drop database 數據庫名稱;

=============================查看正在使用的數據庫
select database();

創建表==================================================
###創建分類表
CREATE TABLE category (
cid INT primary key, #分類ID
cname VARCHAR(100) #分類名稱
);

=========================================查看錶
show tables;

=======================================查看錶結構
desc 表名;

==================================刪除表

drop table 表名;

=================================================修改表結構
#1,爲分類表添加一個新的字段爲分類描述 varchar(20)
ALTER TABLE category ADD `desc` VARCHAR(20);

#2, 爲分類表的描述字段進行修改,類型varchar(50) 添加約束 not null
ALTER TABLE category MODIFY `desc` VARCHAR(50) NOT NULL;

#3, 爲分類表的分類名稱字段進行更換更換爲 snamesname varchar(30)
ALTER TABLE category CHANGE `desc`description VARCHAR(30);

#4, 刪除分類表中snamename這列
ALTER TABLE category DROP description;

#5, 爲分類表category改名成 category2
RENAME TABLE category TO category2;

#6, 爲分類表 category 的編碼表進行修改,修改成 gbk
ALTER TABLE category CHARACTER SET gbk;


==================================================插入語句

-- 向表中插入某些字段
insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..);

--向表中插入所有字段,字段的順序爲創建表時的順序
insert into 表 values (值1,值2,值3..);


===============================================================更新表
--更新所有記錄的指定字段
update 表名 set 字段名=值,字段名=值,...;

--更新符號條件記錄的指定字段
update 表名 set 字段名=值,字段名=值,... where 條件;

===========================================================刪除表記錄
delete from 表名 [where 條件];
或者
truncate table 表名;

=============================================================查詢

簡單查詢#####
1.查詢所有的商品 select * from product;

2.查詢商品名和商品價格. select pname,price from product;

3.別名查詢.使用的關鍵字是 as(as可以省略的).
3.1表別名: select * from product as p;
3.2列別名:select pname as pn from product;

4.去掉重複值. select distinct price from product;

5.查詢結果是表達式(運算查詢):將所有商品的價格+10元進行顯示.
select pname,price+10 from product;

======================================================條件查詢
BETWEEN ...AND...顯示在某一區間的值(含頭含尾)

IN(set) 顯示在in列表中的值,例:in(100,200)

LIKE ‘張pattern’
模糊查詢,Like語句中,
%代表零個或多個任意字符,
_代表一個字符,
例如:first_name like ‘_a%’;

IS NULL 判斷是否爲空

and 多條件成立

or 多條件任意一個成立

not 不成立,例:where not(salary>100);

========================================================================

===============================================================排序

#1.使用價格排序(降序)
SELECT * FROM product ORDER BY price DESC;

#2.在價格排序(升序)的基礎上
SELECT * FROM product ORDER BY price ASC

#3.顯示商品的價格(去重複),並排序(降序)
SELECT DISTINCT price FROM product ORDER BY price DESC;

=========================================================聚合函數

#1 查詢商品的總條數
SELECT COUNT(*) FROM product;

#2 查詢價格大於200商品的總條數
SELECT COUNT(*) FROM product WHERE price > 200;

#3 查詢同名商品的總和
SELECT SUM(price) ,pname FROM product group by pname;

#4 查詢同名商品的平均價格
SELECT AVG(price), pname FROM product group by pname;

#5 查詢商品的最大價格和最小价格
SELECT MAX(price),MIN(price) FROM product;

=============================================================分組查詢

SELECT 字段1,字段2… FROM 表名GROUP BY分組字段 HAVING 分組條件;
分組操作中的having子語句,是用於在分組後對數據進行過濾的,作用類似於where條件。


#1 統計各個分類商品的個數
SELECT SUM(price) ,pname FROM product group by pname having


=====================================================分頁查詢

SELECT 字段1,字段2... FROM 表明 LIMIT M,N
M: 整數,表示從第幾條索引開始,計算方式 (當前頁-1)*每頁顯示條數
N: 整數,表示查詢多少條數據

SELECT 字段1,字段2... FROM 表明 LIMIT 0,5
SELECT 字段1,字段2... FROM 表明 LIMIT 5,5

===========================================================主鍵約束

PRIMARY KEY 約束唯一標識數據庫表中的每條記錄。
主鍵必須包含唯一的值。
主鍵列不能包含 NULL 值。
每個表都應該有且只能有一個主鍵。

方式一:創建表時,在字段描述處,聲明指定字段爲主鍵:
CREATE TABLE Persons
(
Id_P int PRIMARY KEY,
LastName varchar(255),

)
方式二:創建表時,在constraint約束區域,聲明指定字段爲主鍵:
格式:[constraint 名稱] primary key (字段列表)
關鍵字constraint可以省略,如果需要爲主鍵命名,constraint不能省略,主鍵名稱一般沒用。
字段列表需要使用小括號括住,如果有多字段需要使用逗號分隔。聲明兩個以上字段爲主鍵,我們稱爲聯合主鍵。

CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (FirstName,LastName)
)
CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),

PRIMARY KEY (FirstName)
)

方式三:創建表之後,通過修改表結構,聲明指定字段爲主鍵:
ALTER TABLE Persons ADD [CONSTRAINT 名稱] PRIMARY KEY (字段列表)

CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),

)

ALTER TABLE Persons ADD PRIMARY KEY (FirstName)


====================================================刪除主鍵約束

ALTER TABLE Persons DROP PRIMARY KEY


==============================================自動增長

CREATE TABLE Persons
(
P_Id int PRIMARY KEY AUTO_INCREMENT,
LastName varchar(255),
FirstName varchar(255),)

向persons添加數據時,可以不爲P_Id字段設置值,也可以設置成null,數據庫將自動維護主鍵值:

#####修改起始值
ALTER TABLE Persons AUTO_INCREMENT=100


================================================非空約束
NOT NULL 約束強制列不接受 NULL 值。

刪除非空約束 ALTER TABLE student MODIFY LastName varchar(255)


=====================================================唯一約束
UNIQUE 約束唯一標識數據庫表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均爲列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動定義的 UNIQUE 約束。
請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。


方式1:創建表時,在字段描述處,聲明唯一:
CREATE TABLE Persons
(
Id_P int UNIQUE,
LastName varchar(255) NOT NULL,

)
方式2:創建表時,在約束區域,聲明唯一:
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255) NOT NULL,
CONSTRAINT 名稱 UNIQUE (Id_P)
)

方式3:創建表後,修改表結構,聲明字段唯一:
ALTER TABLE Persons ADD [CONSTRAINT 名稱] UNIQUE (Id_P)



###刪除唯一約束
ALTER TABLE Persons DROP INDEX名稱


==============================================默認約束

方式一: 創建表,字段處聲明

CREATE TABLE Persons
(
Id_P int,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255) DEFAULT '北京',
City varchar(255)
)
方式二: 修改表結構

ALTER TABLE Persons MODIFY Address VARCHAR(255) DEFAULT '北京'
刪除默認約束ALTER TABLE Persons MODIFY Address VARCHAR(255)


==========================================外鍵約束


#添加約束
alter table products add constraint product_fk foreign key (category_id) references category (cid);

聲明外鍵約束

語法:alter table 從表 add [constraint] [外鍵名稱] foreign key (從表外鍵字段名) references 主表 (主表的主鍵);
[外鍵名稱] 用於刪除外鍵約束的,一般建議“_fk”結尾

alter table 從表 drop foreign key 外鍵名稱

使用外鍵目的:
保證數據完整性

=============================================多表查詢

1.交叉連接查詢(基本不會使用-得到的是兩個表的乘積) [瞭解]

語法:select * from A,B;

2.內連接查詢(使用的關鍵字 inner join -- inner可以省略)

隱式內連接:select * from A,B where 條件;
顯示內連接:select * from A inner join B on 條件;

3.外連接查詢(使用的關鍵字 outer join -- outer可以省略)

左外連接:left outer join

select * from A left outer join B on 條件;

右外連接:right outer join

select * from A right outer join B on 條件;

#1.查詢哪些分類的商品已經上架
#隱式內連接
SELECT * FROM category c , products p
WHERE c.cid = p.category_id;

#內連接
SELECT * FROM category c
INNER JOIN products p ON c.cid = p.category_id
WHERE p.flag = '1';


#2.查詢所有分類商品
#左外連接
INSERT INTO category(cid,cname) VALUES(4,'奢侈品');
SELECT cname,COUNT(category_id) FROM category c
LEFT OUTER JOIN products p
ON c.cid = p.category_id
GROUP BY cname;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章