欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 編程學習 >> 數據庫語言 >> 正文

數據庫知識點匯總(最全。。數據庫知識點總結歸納

作者:佚名    文章來源:網絡整理    點擊數:    更新時間:2024/8/31

數據庫的概念
DB
數據庫(database):存儲數據的“倉庫”。它保存了一系列有組織的數據。
DBMS
數據庫管理系統(Database Management System)。數據庫是通過DBMS創建和操作的容器,常見的數據庫管理系統:MySQL、Oracle、DB2、SqlServer等
SQL
結構化查詢語言(Structure Query Language):專門用來與數據庫通信的語言。
二、SQL語言概述
SQL的優點:
1、不是某個特定數據庫供應商專有的語言,幾乎所有DBMS都支持SQL
2、簡單易學
3、雖然簡單,但實際上是一種強有力的語言,靈活使用其語言元素,可以進行非常復雜和高級的數據庫操作。
三、數據庫的特點
將數據放到表中,表再放到庫中
一個數據庫中可以有多個表,每個表都有一個的名字,用來標識自己。表名具有唯一性。
表具有一些特性,這些特性定義了數據在表中如何存儲,類似java中 “類”的設計。
表由列組成,我們也稱為字段。所有表都是由一個或多個列組成的,每一列類似java 中的”屬性”
表中的數據是按行存儲的,每一行類似于java中的“對象”。
四、SQL語言分類
1、DML(Data Manipulation Language):數據操縱語句,用于添加、刪除、修改、查詢數據庫記錄,并檢查數據完整性
2、DDL(Data Definition Language):數據定義語句,用于庫和表的創建、修改、刪除。
3、DCL(Data Control Language):數據控制語句,用于定義用戶的訪問權限和安全級別。
DML
DML用于查詢與修改數據記錄,包括如下SQL語句:
INSERT:添加數據到數據庫中
UPDATE:修改數據庫中的數據
DELETE:刪除數據庫中的數據
SELECT:選擇(查詢)數據
SELECT是SQL語言的基礎,最為重要。
DDL
DDL用于定義數據庫的結構,比如創建、修改或刪除數據庫對象,包括如下SQL語句:
CREATE TABLE:創建數據庫表
ALTER TABLE:更改表結構、添加、刪除、修改列長度
DROP TABLE:刪除表
CREATE INDEX:在表上建立索引
DROP INDEX:刪除索引
DCL
DCL用來控制數據庫的訪問,包括如下SQL語句:
GRANT:授予訪問權限
REVOKE:撤銷訪問權限
COMMIT:提交事務處理
ROLLBACK:事務處理回退
SAVEPOINT:設置保存點
LOCK:對數據庫的特定部分進行鎖定
五、mysql數據庫的安裝
圖解MySQL程序結構

MySQL產品的特點
MySQL數據庫隸屬于MySQL AB公司,總部位于瑞典,后被oracle收購。
– 成本低:開放源代碼,一般可以免費試用
– 性能高:執行很快
– 簡單:很容易安裝和使用
配置文件常用配置分析(重點)
安裝目錄下的my.ini文件
[mysqld] 服務端配置
port=3306 端口3306
basedir 是安裝目錄
datadir 數據文件目錄
character-set-server 服務端字符編碼
default-storage-engine 默認引擎
sql-mode 語法模式
max_connections 最大連接數
啟動和停止MySQL服務
方式一:通過計算機管理方式
右擊計算機—管理—服務—啟動或停止MySQL服務
方式二:通過命令行方式(右鍵管理員運行,否則沒有權限)
啟動:net start 服務名
停止:net stop 服務名
MySQL服務端的登錄和退出
通過mysql自帶客戶端

通過window是命令行登錄
mysql –h 主機名 –u用戶名 –p 密碼
mysql -h localhost -u root -p
輸入密碼:
退出
exit
六、MySql數據庫的使用
規范
不區分大小寫
每句話用;或\g結尾
各子句一般分行寫
關鍵字不能縮寫也不能分行
用縮進提高語句的可讀性
注釋
單行注釋 # 或 –
多行注釋 /* 注釋文本 */

示例

  1. 進入 mysql, 在命令行中輸入: mysql –u root –p
  2. 查看 mysql 中有哪些個數據庫: show databases;
  3. 使用一個數據庫: use 數據庫名稱;
  4. 新建一個數據庫: create database 數據庫名
  5. 查看指定的數據庫中有哪些數據表: show tables;
    6.查看mysql版本
    登錄后select version();
    或退出重新登錄
    未登錄 mysql --version或mysql –V

1.SHOW DATABASES;
2.USE employee;
3.SHOW TABLES ;
4.DESC dept;
七、圖形化界面客戶端的使用

導入sql文件
四張表的介紹

八、基本 SELECT 語句
SELECT *|{[DISTINCT] column|expression [alias],…}
FROM table;
• SELECT 標識選擇哪些列。
• FROM 標識從哪個表中選擇。
SELECT *
FROM departments;
選擇特定的列
SELECT department_id, location_id
FROM departments;

注意
• SQL 語言大小寫不敏感。
• SQL 可以寫在一行或者多行
• 關鍵字不能被縮寫也不能分行
• 各子句一般要分行寫。
• 使用縮進提高語句的可讀性
列的別名
• 重命名一個列。
• 便于計算。
• 緊跟列名,也可以在列名和別名之間加入關鍵字‘AS’,別名使用雙引號,以便在別名中包含空格或特殊的字符并區分大小寫。
SELECT last_name AS name, commission_pct comm
FROM employees;
SELECT last_name “Name”, salary*12 “Annual Salary”
FROM employees;

字符串
• 字符串可以是 SELECT 列表中的一個字符,數字,日期。
• 日期和字符只能在單引號中出現。?
顯示表結構
使用 DESCRIBE 命令,表示表結構
DESC[RIBE] tablename
DESCRIBE employees
九、過濾和排序數據
過濾
使用WHERE 子句,將不滿足條件的行過濾掉
SELECT
*|{[DISTINCT] column|expression [alias],…}
FROM table
[WHERE condition(s)];
WHERE 子句緊隨 FROM 子句

返回在 90號部門工作的所有員工的信息
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90 ;
比較運算
賦值使用 := 符號

SELECT last_name, salary
FROM employees
WHERE salary <= 3000;
其它比較運算(重點聽一下LIKE)

BETWEEN
使用 BETWEEN 運算來顯示在一個區間內的值
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500;
IN
使用 IN運算顯示列表中的值。
SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IN (100, 101, 201);
LIKE
•使用 LIKE 運算選擇類似的值
•選擇條件可以包含字符或數字:
% 代表零個或多個字符(任意個字符)。
_ 代表一個字符。
SELECT first_name
FROM employees
WHERE first_name LIKE ‘S%’;

‘%’和‘-’可以同時使用
SELECT last_name
FROM employees
WHERE last_name LIKE ‘_o%’; //最后的名字字母為o
NULL
使用 IS (NOT) NULL 判斷空值
SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL;
邏輯運算

AND
AND 要求并的關系為真

SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >=10000
AND job_id LIKE ‘%MAN%’;
OR
OR 要求或關系為真。
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
OR job_id LIKE ‘%MAN%’;
NOT
SELECT last_name, job_id
FROM employees
WHERE job_id
NOT IN (‘IT_PROG’, ‘ST_CLERK’, ‘SA_REP’);
ORDER BY子句
使用 ORDER BY 子句排序
ASC(ascend): 升序
DESC(descend): 降序
ORDER BY 子句在SELECT語句的結尾。
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date ;
降序排序
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC ;
按別名排序
SELECT employee_id, last_name, salary*12 annsal
FROM employees
ORDER BY annsal;
多個列排序
按照ORDER BY 列表的順序排序
SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;
可以使用不在SELECT 列表中的列排序
十、分組函數
什么是分組函數
分組函數作用于一組數據,并對一組數據返回一個值。
組函數類型

• AVG()
• COUNT()
• MAX()
• MIN()
• SUM()
組函數語法
SELECT [column,] group_function(column), …
FROM table
[WHERE condition]
[GROUP BY column]
[ORDER BY column];
AVG(平均值)和 SUM (合計)函數
可以對數值型數據使用AVG 和 SUM 函數。
SELECT AVG(salary), MAX(salary),
MIN(salary), SUM(salary)
FROM employees
WHERE job_id LIKE ‘%REP%’;
MIN(最小值)和 MAX(最大值)函數
可以對任意數據類型的數據使用 MIN 和 MAX 函數。
SELECT MIN(hire_date), MAX(hire_date)
FROM employees;
COUNT(計數)函數
COUNT() 返回表中記錄總數,適用于任意數據類型。
SELECT COUNT(
)
FROM
employees
WHERE department_id = 50;

COUNT(expr) 返回expr不為空的記錄總數
SELECT COUNT(commission_pct)
FROM employees
WHERE department_id = 50;
分組數據
分組數據: GROUP BY 子句語法
可以使用GROUP BY子句將表中的數據分成若干組
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
GROUP BY 子句 (?)
在SELECT 列表中所有未包含在組函數中的列都應該包含在 GROUP BY 子句中
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id ;
包含在 GROUP BY 子句中的列不必包含在SELECT 列表中
SELECT AVG(salary)
FROM employees
GROUP BY department_id ;
使用多個列分組
SELECT department_id dept_id, job_id, SUM(salary)
FROM employees
GROUP BY department_id, job_id ;
非法使用組函數
• 不能在 WHERE 子句中使用組函數。
• 可以在 HAVING 子句中使用組函數
SELECT department_id, AVG(salary)
FROM employees
WHERE AVG(salary) > 8000
GROUP BY department_id;

WHERE 子句中不能使用組函數
過濾分組
使用 HAVING 過濾分組:

  1. 行已經被分組。
  2. 使用了組函數。
  3. 滿足HAVING 子句中條件的分組將被顯示。
    SELECT column, group_function
    FROM table
    [WHERE condition]
    [GROUP BY group_by_expression]
    [HAVING group_condition]
    [ORDER BY column];

HAVING 子句
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary)>10000 ;
十一、多表查詢

笛卡爾集

select name,boyName from beauty,boys; 這條語句對嗎?
為了避免笛卡爾集, 可以在 WHERE 加入有 效的連接條件

Mysql 連接
使用連接在多個表中查詢數據
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;
在 WHERE 子句中寫入連接條件。
在表中有相同列時,在列名之前加上表名前綴
等值連接

SELECT beauty.id,NAME,boyname FROM beauty ,boys
WHERE beauty.boyfriend_id=boys.id;
區分重復的列名
• 使用表名前綴在多個表中區分相同的列。
• 在不同表中具有相同列名的列可以用表的別名加以區分。
• 如果使用了表別名,則在select語句中需要使用表別名代替表名
• 表別名最多支持32個字符長度,但建議越少越好
表的別名
• 使用別名可以簡化查詢。
• 使用表名前綴可以提高執行效率。
SELECT bt.id,NAME,boyname
FROM beauty bt,boys b;
WHERE bt.boyfriend_id=b.id ;
Join連接
• 分類:
– 內連接 [inner] join on
– 外連接
• 左外連接 left [outer] join on
• 右外連接 right [outer] join on
ON 子句
SELECT bt.id,NAME,boyname
FROM beauty bt
Inner join boys b
On bt.boyfriend_id=b.id ;
連接多個表
連接 n個表,至少需要 n-1個連接條件。
例如:連接三個表,至少需要兩個連接條件。
練習:查詢出公司員工的 last_name, department_name, city
使用 ON 子句創建多表連接(重點)
SELECT employee_id, city, department_name
FROM employees e
JOIN departments d
ON d.department_id = e.department_id
JOIN locations l
ON d.location_id = l.location_id;
John連接總結

十二、字符函數

大小寫控制函數
這類函數改變字符的大小寫。
LOWER(‘SQL Course’)
sql course

UPPER(‘SQL Course’)
SQL COURSE

字符控制函數
CONCAT(‘Hello’, ‘World’)
HelloWorld

SUBSTR(‘HelloWorld’,1,5)
Hello

LENGTH(‘HelloWorld’)
10

INSTR(‘HelloWorld’, ‘W’)
6

LPAD(salary,10,’*’)
*****24000

RPAD(salary, 10, ‘*’)
24000*****

TRIM(‘H’ FROM ‘HelloWorld’)
elloWorld

REPLACE(‘abcd’,‘b’,‘m’)
amcd
十三、數字函數
ROUND: 四舍五入
ROUND(45.926, 2) 45.93
TRUNCATE: 截斷
TRUNC(45.926, 2) 45.92
MOD: 求余
MOD(1600, 300) 100
十四、日期函數
now:獲取當前日期
str_to_date: 將日期格式的字符轉換成指定格式的日期
STR_TO_DATE(‘9-13-1999’,’%m-%d-%Y’) 1999-09-13
date_format:將日期轉換成字符
str_to_date: 將日期格式的字符轉換成指定格式的日期 2018年06月06日

十五、條件表達式
• 在 SQL 語句中使用IF-THEN-ELSE 邏輯
• 使用方法: – CASE 表達式
CASE 表達式
在需要使用 IF-THEN-ELSE 邏輯時
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
練習:查詢部門號為 10, 20, 30 的員工信息, 若部門號為 10, 則打印其工資的 1.1 倍, 20 號部門, 則打印其工資的 1.2 倍, 30 號部門打印其工資的 1.3 倍數
下面是使用case表達式的一個例子:
SELECT department_id,salary,
CASE department_id
WHEN 10 THEN salary1.2
WHEN 20 THEN salary
1.3
WHEN 30 THEN salary*1.5
ELSE salary
END 工資2
FROM employees
十六、數據操縱語言
DML(Data Manipulation Language –數據操縱語言) 可以在下列條件下執行: – 向表中插入數據
– 修改現存數據
– 刪除現存數據
事務是由完成若干項工作的DML語句組成的
十七、插入數據
INSERT 語句語法
使用 INSERT 語句向表中插入數據。
INSERT INTO table [(column [, column…])]
VALUES (value [, value…]);
使用這種語法一次只能向表中插入一條數據
插入數據
為每一列添加一個新值。
• 按列的默認順序列出各個列的值。
• 在 INSERT 子句中隨意列出列名和他們的值。
• 字符和日期型數據應包含在單引號中。
INSERT INTO departments(department_id, department_name,
manager_id, location_id)
VALUES (70, ‘Public Relations’, 100, 1700);

INSERT INTO
employees(employee_id,last_name,email,hire_date,job_id)
VALUES (300,’Tom’,’tom@126.com’,to_date(‘2012-3-
21’,’yyyy-mm-dd’),’SA_RAP’);

向表中插入空值
隱式方式: 在列名表中省略該列的值
INSERT INTO departments (department_id, department_name )
VALUES (30, ‘Purchasing’);

顯示方式: 在VALUES 子句中指定空值。
INSERT INTO departments
VALUES (100, ‘Finance’, NULL, NULL);
插入指定的值
NOW()函數:記錄當前系統的日期和時間
INSERT INTO employees (employee_id, first_name, last_name, email, phone_number,hire_date, job_id, salary, commission_pct, manager_id,department_id)
VALUES (113, ‘Louis’, ‘Popp’, ‘LPOPP’, ‘515.124.4567’, NOW(), ‘AC_ACCOUNT’, 6900, NULL, 205, 100);

從其它表中拷貝數據
在 INSERT 語句中加入子查詢
INSERT INTO emp2
SELECT *
FROM employees
WHERE department_id = 90;

INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE ‘%REP%’;

不必書寫 VALUES 子句。
子查詢中的值列表應與 INSERT 子句中的列名對應
十八、更新數據
UPDATE 語句語法
• 使用 UPDATE 語句更新數據
UPDATE table
SET column = value [, column = value, …]
[WHERE condition];

• 可以一次更新多條數據。
• 如果需要回滾數據,需要保證在DML前,進行設置:SET AUTOCOMMIT = FALSE;
• 使用 WHERE 子句指定需要更新的數據
UPDATE employees
SET department_id = 70
WHERE employee_id = 113;
• 如果省略 WHERE 子句,則表中的所有數據都將被更新
UPDATE copy_emp
SET department_id = 110;

更新中的數據完整性錯誤
UPDATE employees
SET department_id = 55
WHERE department_id = 110;

十九、刪除數據
DELETE 語句
使用 DELETE 語句從表中刪除數據。
DELETE FROM table
[WHERE condition];
刪除數據
使用 WHERE 子句刪除指定的記錄
DELETE FROM departments
WHERE department_name = ‘Finance’;
如果省略 WHERE 子句,則表中的全部數據將被刪除
DELETE FROM copy_emp;
刪除中的數據完整性錯誤
DELETE FROM departments
WHERE department_id = 60;

二十、子查詢
概念
出現在其他語句內部的select語句,稱為子查詢或內查詢,內部嵌套其他select語句的查詢,稱為外查詢或主查詢
示例:
select first_name from employees where
department_id in(
select department_id from departments
where location_id=1700
)
注意事項
• 子查詢要包含在括號內。
• 將子查詢放在比較條件的右側。
• 單行操作符對應單行子查詢,多行操作符對應多行子查詢
單行子查詢
• 只返回一行。
• 使用單行比較操作符。

子查詢語法
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);

• 子查詢 (內查詢) 在主查詢之前一次執行完成。
• 子查詢的結果被主查詢(外查詢)使用 。
使用子查詢解決問題
誰的工資比 Abel 高?

執行單行子查詢
題目:返回job_id與141號員工相同,salary比143號員工多的員工姓名,job_id 和工資
在子查詢中使用組函數
題目:返回公司工資最少的員工的last_name,job_id和salary
子查詢中的 HAVING 子句
• 首先執行子查詢。
• 向主查詢中的HAVING 子句返回結果。
題目:查詢最低工資大于50號部門最低工資的部門id和其最低工資
非法使用子查詢

子查詢中的空值問題
SELECT last_name, job_id
FROM employees
WHERE job_id =
(SELECT job_id
FROM employees
WHERE last_name = ‘Haas’);
子查詢不返回任何行
多行子查詢
• 返回多行。
• 使用多行比較操作符

使用in操作符
題目:返回location_id是1400或1700的部門中的所有員工姓名
在多行子查詢中使用 ANY 操作符
題目:返回其它部門中比job_id為‘IT_PROG’部門任一工資低的員工的員
工號、姓名、job_id 以及salary

題目:返回其它部門中比job_id為‘IT_PROG’部門所有工資都低的員工
的員工號、姓名、job_id 以及salary

子查詢中的空值問題

二十一、創建數據庫
創建一個保存員工信息的數據庫
– create database employees;
相關其他命令
– show databases;查看當前所有數據庫
– use employees;“使用”一個數據庫,使其作為當前數據庫
命名規則
• 數據庫名不得超過30個字符,變量名限制為29個 • 必須只能包含 A–Z, a–z, 0–9, _共63個字符
• 不能在對象名的字符間留空格
• 必須不能和用戶定義的其他對象重名
• 必須保證你的字段沒有和保留字、數據庫系統或常用方法沖突
• 保持字段名和類型的一致性,在命名字段并為其指定數據類型的時候一定要保證一致性。假如數據類型在一個表里是整數,那在另一個表里可就別變成字符型了
CREATE TABLE 語句
• 必須具備:
– CREATE TABLE權限
– 存儲空間

• 必須指定:
– 表名
– 列名, 數據類型, 尺寸
語法

確認

常用數據類型

創建表
CREATE TABLE emp (
#int類型,自增
emp_id INT AUTO_INCREMENT, #最多保存20個中英文字符
emp_name CHAR (20),
#總位數不超過15位
salary DOUBLE,
#日期類型
birthday DATE,
#主鍵
PRIMARY KEY (emp_id)
) ;
使用子查詢創建表
• 使用 AS subquery 選項,將創建表和插入數據結合起來(?)

• 指定的列和子查詢中的列要一一對應
• 通過列名和默認值定義列
復制現有的表:
create table emp1 as select * from employees;
create table emp2 as select * from employees where 1=2;
–創建的emp2是空表。
使用子查詢創建表舉例

二十二、ALTER TABLE 語句
使用 ALTER TABLE 語句可以實現:
–向已有的表中添加列
修改現有表中的列
–刪除現有表中的列
–重命名現有表中的列
追加一個新列
ALTER TABLE dept80
ADD job_id varchar(15);
修改一個列
• 可以修改列的數據類型, 尺寸和默認值
• 對默認值的修改只影響今后對表的修改
ALTER TABLE dept80
MODIFY (last_name VARCHAR(30));

ALTER TABLE dept80
MODIFY (salary double(9,2) default 1000);

刪除一個列
使用 DROP COLUMN 子句刪除不再需要的列.
ALTER TABLE dept80
DROP COLUMN job_id;
重命名一個列
使用 CHANGE old_column new_column dataType子句重命名列
ALTER TABLE dept80
CHANGE department_name dept_name varchar(15);
二十三、刪除表
• 數據和結構都被刪除
• 所有正在運行的相關事務被提交
• 所有相關索引被刪除
• DROP TABLE 語句不能回滾
DROP TABLE dept80;

清空表
• TRUNCATE TABLE 語句:
– 刪除表中所有的數據
– 釋放表的存儲空間
• TRUNCATE語句不能回滾
• 可以使用 DELETE 語句刪除數據,可以回滾
二十四、改變對象的名稱
• 執行RENAME語句改變表, 視圖的名稱
• 必須是對象的擁有者
ALTER table dept
RENAME TO detail_dept;
二十五、常見的數據類型
整型

小數

位類型

char和varchar類型
字符串類型 最多字符數 描述及存儲需求
說明:用來保存MySQL中較短的字符串。

binary和varbinary類型
說明:類似于char和varchar,不同的是它們包含二進制字符串而不包含非二進制字符串。
Enum類型
說明:又稱為枚舉類型哦,要求插入的值必須屬于列表中指定的值之一。
如果列表成員為1~255,則需要1個字節存儲
如果列表成員為255~65535,則需要2個字節存儲
最多需要65535個成員
Set類型
說明:和Enum類型類似,里面可以保存0~64個成員。和Enum類型最大的區別是:SET類型一次可以選取多個成員,而Enum只能選一個根據成員個數不同,存儲所占的字節也不同

日期類型

datetime和timestamp的區別
1、Timestamp支持的時間范圍較小,取值范圍:19700101080001——2038年的某個時間Datetime的取值范圍:1000-1-1 ——9999—12-31
2、timestamp和實際時區有關,更能反映實際的日期,而datetime則只能反映出插入時的當地時區
3、timestamp的屬性受Mysql版本和SQLMode的影響很大
二十六、約束
什么是約束
• 為了保證數據的一致性和完整性,SQL規范以約束的方式對表數據進行額外的條件限制。
• 約束是表級的強制規定
• 可以在創建表時規定約束(通過 CREATETABLE 語句),或者在表創建之后也可以(通
過 ALTER TABLE 語句)
有以下六種約束:
– NOT NULL 非空約束,規定某個字段不能為空
– UNIQUE 唯一約束,規定某個字段在整個表中是唯一的
– PRIMARY KEY 主鍵(非空且唯一) – FOREIGN KEY 外鍵
– CHECK 檢查約束
– DEFAULT 默認值
具體細節可以參閱W3Cschool手冊
注意: MySQL不支持check約束,但可以使用check約束,而沒有任何效果;
• 根據約束數據列的限制,約束可分為:
– 單列約束:每個約束只約束一列
– 多列約束:每個約束可約束多列數據
• 根據約束的作用范圍,約束可分為:
– 列級約束只能作用在一個列上,跟在列的定義后面
– 表級約束可以作用在多個列上,不與列一起,而是單獨定義
NOT NULL 約束
非空約束用于確保當前列的值不為空值,非空約束只能出現在表對象的列上。
Null類型特征:
所有的類型的值都可以是null,包括int、float等數據類型
空字符串””不等于null,0也不等于null
創建 not null 約束:
CREATE TABLE emp(
id INT(10) NOT NULL,
NAME VARCHAR(20) NOT NULL DEFAULT ‘abc’,
sex CHAR NULL
);
增加 not null 約束
ALTER TABLE emp
MODIFY sex VARCHAR(30) NOT NULL;
取消 not null 約束:
ALTER TABLE emp
MODIFY sex VARCHAR(30) NULL;

取消 not null 約束,增加默認值:
ALTER TABLE emp
MODIFY NAME VARCHAR(15) DEFAULT ‘abc’ NULL;
UNIQUE 約束
• 同一個表可以有多個唯一約束,多個列組合的約束。在創建唯一約束的時候,如果不給唯一約束名稱,就默認和列名相同。
• MySQL會給唯一約束的列上默認創建一個唯一索引
• 唯一約束,允許出現多個空值:NULL。
CREATE TABLE USER(
id INT NOT NULL,
NAME VARCHAR(25),
PASSWORD VARCHAR(16),
#使用表級約束語法
CONSTRAINT uk_name_pwd UNIQUE(NAME,PASSWORD)
);

Tags:數據庫,mysql,sql  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊。 昵稱:注冊  登錄
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人
中文字幕亚洲电影| 欧美性一区二区| 午夜精品久久久久久久久久久 | 国产欧美一区视频| 欧美va亚洲va在线观看蝴蝶网| 91久久精品一区二区三| 色哟哟日韩精品| 在线观看免费一区| 欧美视频完全免费看| 91激情在线视频| 欧美日产国产精品| 日韩三级在线观看| 欧美成人video| 久久久影院官网| 国产精品国产三级国产有无不卡 | 91精品国产综合久久精品图片| 欧美日韩三级一区| 欧美一区二区国产| 国产午夜精品一区二区三区嫩草 | 99视频在线观看一区三区| 国产精品性做久久久久久| 国产毛片精品国产一区二区三区| 国产在线精品一区二区夜色| 国产福利一区二区三区视频在线| 波多野结衣精品在线| 欧美午夜理伦三级在线观看| 欧美一区二区三区在线| 欧美成人艳星乳罩| 国产精品久久久久久户外露出| 自拍偷拍亚洲欧美日韩| 日日摸夜夜添夜夜添国产精品| 蜜桃传媒麻豆第一区在线观看| 久久av资源站| 欧美亚洲动漫制服丝袜| 国产亚洲精品久| 午夜久久久久久| 粉嫩一区二区三区性色av| 成人av在线电影| 精品国产一区久久| 国产日产欧美一区二区三区| 伊人婷婷欧美激情| 国产精华液一区二区三区| 欧美精品一级二级| 自拍偷在线精品自拍偷无码专区| 日本欧美一区二区在线观看| 99re热这里只有精品免费视频| 欧美大片在线观看一区二区| 亚洲激情自拍视频| 成人三级伦理片| 久久久美女艺术照精彩视频福利播放| 亚洲一级二级在线| 成人激情校园春色| 欧美大尺度电影在线| 亚洲成人在线免费| 色网站国产精品| 中文字幕一区免费在线观看 | 国产欧美日韩视频在线观看| 婷婷成人激情在线网| 91成人国产精品| 亚洲欧美另类小说视频| 国产精品一区二区视频| 欧美成人激情免费网| 日韩精品电影一区亚洲| 在线国产电影不卡| 一区二区三区四区国产精品| 91视频免费播放| 中文字幕一区在线观看视频| 成人免费观看男女羞羞视频| 久久久欧美精品sm网站| 国产精品一品二品| 精品少妇一区二区三区免费观看| 亚洲成av人片在www色猫咪| 日本高清免费不卡视频| 亚洲乱码精品一二三四区日韩在线| 国产成人免费视频网站高清观看视频 | 亚洲一区二区视频| 欧美亚洲图片小说| 亚洲成人免费观看| 3751色影院一区二区三区| 日韩黄色小视频| 日韩视频一区二区三区 | 成人免费在线播放视频| 成人av网在线| 一区二区三区四区激情| 精品视频在线免费看| 视频一区二区三区入口| 欧美大片一区二区| 国产99一区视频免费| 亚洲人妖av一区二区| 91黄色在线观看| 日本在线观看不卡视频| 精品国产免费一区二区三区四区| 国产麻豆视频精品| 亚洲天堂免费看| 欧美日韩久久不卡| 国产一区二区三区黄视频 | 欧美色视频在线| 美女国产一区二区| 中文字幕国产精品一区二区| 在线免费观看成人短视频| 日本va欧美va瓶| 国产精品色眯眯| 欧美人与z0zoxxxx视频| 国产98色在线|日韩| 一区二区三区波多野结衣在线观看| 欧美日韩1区2区| 成人av资源站| 久久精品国产精品亚洲红杏| 最新国产の精品合集bt伙计| 欧美日韩国产一级二级| 国产白丝网站精品污在线入口| 亚洲午夜久久久久| 久久久精品2019中文字幕之3| 欧洲一区二区三区免费视频| 韩国女主播一区| 亚洲国产综合91精品麻豆| 国产色婷婷亚洲99精品小说| 欧美区视频在线观看| 高清不卡在线观看| 麻豆精品一区二区三区| 亚洲你懂的在线视频| 精品久久人人做人人爽| 欧美色精品在线视频| 97久久精品人人爽人人爽蜜臀| 美国精品在线观看| 亚洲国产视频一区| 亚洲日本va午夜在线影院| 久久精品视频在线看| 日韩视频123| 91精品国产综合久久精品app| 97成人超碰视| 大尺度一区二区| 国产一区二区不卡在线| 日本视频免费一区| 午夜电影网一区| 亚洲va欧美va人人爽午夜| 中文字幕日韩一区二区| 欧美韩国日本综合| 日本一区二区免费在线 | 色婷婷综合久久久久中文一区二区| 国产毛片一区二区| 韩日精品视频一区| 国模少妇一区二区三区| 老司机午夜精品| 久久精工是国产品牌吗| 婷婷亚洲久悠悠色悠在线播放| 亚洲综合成人网| 亚洲午夜在线观看视频在线| 一区二区日韩电影| 一区二区三区丝袜| 亚洲一区二区三区四区五区黄| 亚洲免费观看高清| 亚洲制服欧美中文字幕中文字幕| 日韩理论在线观看| 亚洲午夜免费视频| 日韩精品每日更新| 国产最新精品精品你懂的| 精品亚洲成a人| 国产精品亚洲一区二区三区妖精 | 一本一道综合狠狠老| 色婷婷av久久久久久久| 欧美中文字幕一二三区视频| 欧美久久久久免费| 欧美va亚洲va香蕉在线| 国产精品午夜春色av| 亚洲黄色片在线观看| 亚洲动漫第一页| 精品一区二区三区免费观看| 国产suv精品一区二区883| 一本一道久久a久久精品综合蜜臀| 欧美探花视频资源| 精品国产免费人成电影在线观看四季| 国产人伦精品一区二区| 亚洲日本护士毛茸茸| 日韩国产一区二| 欧美久久一二区| 欧美一区二区三区免费观看视频| 精品国产伦一区二区三区观看体验| 久久久精品黄色| 亚洲国产日产av| 国产电影一区二区三区| 欧美亚洲日本一区| 精品电影一区二区三区 | 精品一区二区三区免费观看| 风间由美一区二区三区在线观看 | 精品国产一二三区| 亚洲色大成网站www久久九九| 天天色 色综合| 成人avav在线| 欧美高清一级片在线| 亚洲国产成人私人影院tom| 五月婷婷综合网| 99精品1区2区| 久久夜色精品国产噜噜av| 亚洲一区二区成人在线观看| 国产一区二区导航在线播放| 欧美日韩一区 二区 三区 久久精品| 久久久久久久久久久99999| 婷婷中文字幕综合| 99这里只有精品|