數據庫之 MySQL --- 數據處理 之 約束與分頁(六)


    1、約束 :爲了保證數據的一致性和完整性,SQL規範以約束的方式對錶數據進行額外的條件限制     

  

    NOT NULL 非空約束,規定某個字段不能爲空
    UNIQUE  唯一約束,規定某個字段在整個表中是唯一的
    PRIMARY KEY  主鍵(非空且唯一)
    FOREIGN KEY  外鍵
    CHECK  檢查約束
    DEFAULT  默認值   

    約束分類 :列級約束 vs 表級約束

       約束的填加的方式 :

               1.創建表的時候
               2.修改表的時候

【1】not null 非空約束,規定某個字段不能爲空

CREATE TABLE emp(
emp_id INT NOT NULL, -- 列級約束
emp_name VARCHAR(20)
)

DESC emp
SELECT * FROM emp
INSERT INTO emp(emp_id,emp_name) VALUES(1,'aaaa')
INSERT INTO emp(emp_id) VALUES(2)
DELETE FROM emp

【2】修改表的時候添加約束

ALTER TABLE emp
MODIFY emp_name VARCHAR(20) NOT NULL

【3】UNIQUE  唯一約束,規定某個字段在整個表中是唯一的


CREATE TABLE emp2(
emp_id INT UNIQUE,
emp_name VARCHAR(20)

)

DESC emp2
SELECT * FROM emp2
INSERT INTO emp2(emp_id,emp_name) VALUES(3,'aaaa')
INSERT INTO emp2(emp_id,emp_name) VALUES(4,'aaaa')

CREATE TABLE emp3(
emp_name VARCHAR(20),
emp_password VARCHAR(20)
)

DROP TABLE emp3

【4】 將用戶名和密碼看成是一組,組和組 之間不能相同

ALTER TABLE emp3
ADD UNIQUE (emp_name,emp_password)

【5】添加約束: uk_name_pwd索引

ALTER TABLE emp3
ADD CONSTRAINT uk_name_pwd UNIQUE (emp_name,emp_password);

【6】刪除約束:刪除約束

ALTER TABLE emp3
DROP INDEX uk_name_pwd;

DESC emp3
SELECT * FROM emp3
INSERT INTO emp3(emp_name,emp_password)VALUES('aaaa','12234')
INSERT INTO emp3(emp_name,emp_password)VALUES('bbbb','12344')

【7】  PRIMARY KEY  主鍵(非空且唯一)
           一個表中只能有一個主鍵 (可以將多個列進行組合成primary key)

CREATE TABLE emp4(
emp_id INT PRIMARY KEY,
emp_name VARCHAR(20)
)

INSERT INTO emp4(emp_id,emp_name)VALUES(2,'aaa')


CREATE TABLE emp5(
emp_id INT,
emp_name VARCHAR(20),

【8】 表級約束

CONSTRAINT rn_emp_id PRIMARY KEY(emp_id,emp_name)
)

DESC emp5

【9】FOREIGN KEY  外鍵 外鍵約束

 員工表

    注意 :1.deps叫做主表,emps叫做從表
           2.先創建主表,再創建從表
           3.外鍵關聯的那個列必須是主鍵
           4.插入數據,應該先插入到主表,再插入到從表

CREATE TABLE emps(
emps_id INT PRIMARY KEY,
emps_name VARCHAR(20),
deps_id INT,
FOREIGN KEY(deps_id) REFERENCES deps(deps_id)
)

-- 部門表
CREATE TABLE deps(
deps_id INT PRIMARY KEY,
deps_name VARCHAR(20)
)

DROP TABLE deps
DESC deps
DESC emps

【10】 插入數據

INSERT INTO deps VALUES(10,'hr')
INSERT INTO emps VALUES(1,'aa',10)

【11】 查看錶的索引

SHOW INDEX FROM emp3

【12】 check : 檢查約束
            -- mysql無效,orcal有效

CREATE TABLE temp(
id INT AUTO_INCREMENT,
NAME VARCHAR(20),
age INT CHECK(age>20),
PRIMARY KEY(id)
);

INSERT INTO temp VALUES(1,'aa',10)
SELECT * FROM temp


 【13】  defult : 可以設置默認值

CREATE TABLE temp2(
id INT AUTO_INCREMENT,
NAME VARCHAR(20),
age INT DEFAULT 20,
PRIMARY KEY(id)
);
INSERT INTO temp2(id,NAME) VALUES(1,'aa')

SELECT * FROM temp2


【14】   AUTO_INCREMENT : 自增長

CREATE TABLE n(
n_id INT PRIMARY KEY AUTO_INCREMENT,
n_name VARCHAR(20)
)

INSERT INTO n(n_name) VALUES('aa')
DELETE FROM n

SELECT * FROM n

【15】  limit  分頁 :

SELECT * FROM employees LIMIT 0,20 -- 0從哪一條數據開始, 20偏移量
 
 
    (當前頁數-1)*每頁條數,每頁條數
    SELECT * FROM employees LIMIT ((當前頁數-1)*每頁條數),(每頁條數)

 

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