SQL語句匯總(一)——數據庫與表的操作以及創建約束


首先,非常感謝大家對上篇博文的支持,真是讓本菜受寵若驚,同時對拖了這么久才出了此篇表示抱歉。  

前言:此文旨在匯總從建立數據庫到聯接查詢等絕大部分SQL語句。SQL語句雖不能說很多,但稍有時間不寫就容易出錯。博主希望通過此文來戰勝自己的健忘,如果大家認可也可以保留起來。

 

"SQL"是 "Structured Query Language" 即“結構化查詢語言”的簡稱,它是用來管理關系型數據庫的。

其包括:

–數據定義語言(DDL)
–數據查詢語言(DQL)
–數據操作語言(DML)
–數據控制語言(DCL)
 
創建數據庫:
CREATE DATABASE 數據庫名;
數據庫名命名規則:
- 第一個字符必須為下列之一:字母、下划線、 #@符號。
- 后續字符由字母、十進制數、下划線、 #$@符號組成。
- 不能為 RDBMS(數據庫管理系統)的保留關鍵字。
- 不允許空格及其他字符。
 
本文以SQLyog軟件為例,創建數據庫如下:
CREATE DATABASE test_sql

此圖為SQLyog的左側目錄欄,前三個為本地自帶數據庫。將SQL語句全部選中運行(F8)后,F5刷新目錄欄,出現了我們創建的數據庫。

 

連接數據庫:

USE test_sql;

刪除數據庫:

DROP DATABASE test_sql;

 

接下來就開始創建表了,在創建表之前先列出幾種常用的數據類型

整數數據類型:

-INT 大小:4字節

-BIGINT 大小:8字節

浮點數據類型:

- FLOAT 大小:4字節 精度:7位小數

- DOUBLE 大小:8字節 精度:15位小數

字符串數據類型:

- VARCHAR 范圍:0-65535

日期數據類型:

- DATE 大小:3字節 格式:YYYY

- DATETIME 大小:8字節 格式:YYYY-MM-DD

 

創建表:

CREATE TABLE <表名>
      (<列名> <列的數據類型> [<列的約束>]);

如:

CREATE TABLE t_student(
            student_name VARCHAR(10),
            student_birthday DATETIME,
            student_phone INT,
            student_score FLOAT);

上表中我們創建了一張學生表,並定義了姓名、生日、電話、得分四列,列名后加上數據類型。其中要注意的是VARCHAR需要在括號內設置字符串的最大長度。

刷新之后就可以看到我們創建的數據庫中多了一張表:

選擇打開表可以直觀的看到內容:

之后我們可以通過SQL語句也可以通過手動為表添加內容。

 

刪除表:

DROP TABLE t_student;

 

復制表:

CREATE TABLE copy_student SELECT * FROM t_student; 

如此我們便復制了一張名為copy_student的表,它包括t_student表中的內容與結構。注意:復制表的同時表的約束並不能復制過來。

 

只復制表結構而不復制表內容:

CREATE TABLE copy_student SELECT * FROM t_student WHERE 1=0; 

只需在WHERE條件中加入一個永不為真的值即可。

 

修改表

添加新列:

ALTER TABLE t_student ADD student_address VARCHAR(50);

更改列:

ALTER TABLE t_student CHANGE student_birthday student_age INT;

這里我們把學生生日列改為學生年齡列,CHANGE后第一個為舊列名,第二個為新列名。

刪除列:

ALTER TABLE t_student DROP COLUMN student_score;

 

數據庫完整性

保證數據庫的完整性是為了防止垃圾數據的產生,以免影響數據庫的執行效率。這里簡要說一些,因為畢竟不是理論類的文章,這里主要是整理匯總SQL語句。

分類:

1.實體完整性
  保證一行數據是有效的
2.域完整性
  保證一列數據是有效的
3.引用完整性
  保證引用的編號是有效的
4.用戶自定義完整性
  保證自定義規則
 
實體完整性--主鍵約束:
PRIMARY KEY
主鍵列不能為空也不能重復,通常加在表的id列中。
CREATE TABLE t_student(
            student_id INT PRIMARY KEY,
            student_name VARCHAR(10),
            student_birthday DATETIME,
            student_phone INT,
            student_score FLOAT);

 

實體完整性--唯一約束:

UNIQUE

唯一約束是指給定列的值必須唯一,與主鍵約束不同的是它可以為空。通常加在表中不能重復的信息中,如電話號碼。

CREATE TABLE t_student(
            student_id INT PRIMARY KEY,
            student_name VARCHAR(10),
            student_birthday DATETIME,
            student_phone INT UNIQUE,
            student_score FLOAT);

 

域完整性--非空約束:

NOT NULL

非空約束可以加在諸如姓名等列上。

CREATE TABLE t_student(
            student_id INT PRIMARY KEY,
            student_name VARCHAR(10) NOT NULL,
            student_birthday DATETIME,
            student_phone INT UNIQUE,
            student_score FLOAT);

 

域完整性--默認約束:

設定默認值后,可以在添加此列時不指定值,數據庫會自動填充設定的默認值。

DEFAULT

現給學生表加入性別列,默認值設為“男”,這樣添加新的學生信息時如果沒有填寫具體的性別均會默認為男性:

CREATE TABLE t_student(
            student_id INT PRIMARY KEY,
            student_name VARCHAR(10) NOT NULL,
            student_sex VARCHAR(5) DEFAULT '',
            student_birthday DATETIME,
            student_phone INT UNIQUE,
            student_score FLOAT);

 

引用完整性--外鍵約束:

外鍵約束是指在外鍵關聯主鍵上強制加上一個約束,如果違反該約束,則不允許該條數據的修改。

創建主表--班級表:

CREATE TABLE t_class(
              class_id INT PRIMARY KEY,
              class_name VARCHAR(20) UNIQUE NOT NULL);
            )

創建從表--學生表,並設置外鍵約束:

CREATE TABLE t_student(
            student_id INT PRIMARY KEY,
            s_c_id INT REFERENCES t_class(class_id),
            student_name VARCHAR(10) NOT NULL,
            student_sex VARCHAR(5) DEFAULT '',
            student_birthday DATETIME,
            student_phone INT UNIQUE,
            student_score FLOAT
            CONSTRAINT FOREIGN KEY(s_c_id) REFERENCES t_class(class_id); 

紅色標識的就是創建外鍵約束的方法,個人認為也是SQL語句中最難記的。

 

本篇博文先到這里,寫起來才發現SQL比想像的多啊,所以初步打算分為三篇。第二篇講數據增刪改查這些操作、聚合函數及分組,第三篇講SQL的子查詢、組合查詢以及連接查詢。

感謝您的瀏覽,希望能對您有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM