文章目錄
- 前言
- 一、DDL(資料定義語言)
-
- 1.資料庫操作
- 2.資料表操作
- 3.MySQL常用資料類型
- 4.限制
- 二、DML(資料操作語言)
前言
根據最近幾天對DDL和DML的學習,做出來以下的總結。
一、DDL(資料定義語言)
1.資料庫操作
建立資料庫:
* create database 資料庫名稱;
建立資料庫,判斷不存在,再建立:
* create database if not exists 資料庫名稱;
建立資料庫,并指定字元集
* create database 資料庫名稱 character set 字元集名;
查詢所有資料庫的名稱:
* show databases;
查詢某個資料庫的字元集:查詢某個資料庫的建立語句
* show create database 資料庫名稱;
*修改資料庫的字元集
* alter database 資料庫名稱 character set 字元集名稱;
* 查詢目前正在使用的資料庫名稱
* select database();
* 使用資料庫
* use 資料庫名稱;
* 删除資料庫
* drop database 資料庫名稱;
* 判斷資料庫存在,存在再删除
* drop database if exists 資料庫名稱;
2.資料表操作
* 表的建立
* create table 表名(
列名1 資料類型1 【字段限制】,
列名2 資料類型2 【字段限制】,
....
列名n 資料類型n 【字段限制】
);
* 注意:最後一列,不需要加逗号(,)
* 查詢目前資料庫中所有的表
* show tables;
* 查詢某個資料庫中所有的表
* show tables from 資料庫名稱;
* 查詢表結構
* desc 表名;
* 修改表名
* alter table 表名 rename to 新的表名;
* 修改表的字元集
* alter table 表名 character set 字元集名稱;
* 添加一列
* alter table 表名 add 列名 資料類型;
* 修改列名稱 類型
* alter table 表名 change 列名 新列名 新資料類型;
* alter table 表名 modify 列名 新資料類型;
* 删除列
* alter table 表名 drop 列名;
* 删除表
* drop table 表名;
* drop table if exists 表名;
3.MySQL常用資料類型
1.int:整數類型
age int,
2. double:小數類型
score double(5,2),
3. date:日期,隻包含年月日,yyyy-MM-dd
4. datetime:日期,包含年月日時分秒 yyyy-MM-dd HH:mm:ss
5. timestamp:時間錯類型 包含年月日時分秒 yyyy-MM-dd HH:mm:ss
如果将來不給這個字段指派,或指派為null,則預設使用目前的系統時間,來自動指派
6. varchar:字元串
name varchar(20):姓名最大20個字元
zhangsan 8個字元 張三 2個字元
4.限制
* 概念: 對表中的資料進行限定,保證資料的正确性、有效性和完整性。
* 分類:
1. 主鍵限制:primary key
2. 非空限制:not null
3. 唯一限制:unique
4. 外鍵限制:foreign key
-------------------------------------------------------------------------
* 非空限制:not null,某一列的值不能為null
1. 建立表時添加限制
CREATE TABLE stu(
id INT,
NAME VARCHAR(20) NOT NULL -- name為非空
);
2. 建立表完後,添加非空限制
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
3. 删除name的非空限制
ALTER TABLE stu MODIFY NAME VARCHAR(20);
-------------------------------------------------------------------------
* 唯一限制:unique,某一列的值不能重複
1. 注意:
* 唯一限制可以有NULL值,但是隻能有一條記錄為null
2. 在建立表時,添加唯一限制
CREATE TABLE stu(
id INT,
phone_number VARCHAR(20) UNIQUE -- 手機号
);
3. 删除唯一限制
ALTER TABLE stu DROP INDEX phone_number;
4. 在表建立完後,添加唯一限制
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
-------------------------------------------------------------------------
* 主鍵限制:primary key。
1. 注意:
1. 含義:非空且唯一
2. 一張表隻能有一個字段為主鍵
3. 主鍵就是表中記錄的唯一辨別
2. 在建立表時,添加主鍵限制
create table stu(
id int primary key,-- 給id添加主鍵限制
name varchar(20)
);
3. 删除主鍵
-- 錯誤 alter table stu modify id int ;
ALTER TABLE stu DROP PRIMARY KEY;
4. 建立完表後,添加主鍵
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
5. 自動增長:
1. 概念:如果某一列是數值類型的,使用 auto_increment 可以來完成值得自動增長
2. 在建立表時,添加主鍵限制,并且完成主鍵自增長
create table stu(
id int primary key auto_increment,-- 給id添加主鍵限制
name varchar(20)
);
3. 删除自動增長
ALTER TABLE stu MODIFY id INT;
4. 添加自動增長
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
-------------------------------------------------------------------------
* 外鍵限制:foreign key,讓表于表産生關系,進而保證資料的正确性。
1. 在建立表時,可以添加外鍵
* 文法:
create table 表名(
....
外鍵列
constraint 外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱)
);
2. 删除外鍵
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;
3. 建立表之後,添加外鍵
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵字段名稱) REFERENCES 主表名稱(主表列名稱);
4. 級聯操作
1. 添加級聯操作
文法:ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱
FOREIGN KEY (外鍵字段名稱) REFERENCES 主表名稱(主表列名稱) ON UPDATE CASCADE ON DELETE CASCADE ;
2. 分類:
1. 級聯更新:ON UPDATE CASCADE
2. 級聯删除:ON DELETE CASCADE
二、DML(資料操作語言)
1. 添加資料:
* 文法:
* insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
* 注意:
1. 列名和值要一一對應。
2. 如果表名後,不定義列名,則預設給所有列添加值
insert into 表名 values(值1,值2,...值n);
3. 除了數字類型,其他類型需要使用引号(單雙都可以)引起來
-------------------------------------------------------------------------
2. 删除資料:
* 文法:
* delete from 表名 [where 條件]
* 注意:
1. 如果不加條件,則删除表中所有記錄。
2. 如果要删除所有記錄
1. delete from 表名; -- 不推薦使用。有多少條記錄就會執行多少次删除操作
2. TRUNCATE TABLE 表名; -- 推薦使用,效率更高 先删除表,然後再建立一張一樣的表。
* 面試題:delete與TRUNCATE差別?
1.truncate不能加where條件,而delete可以加where條件
2.truncate的效率高
3.truncate 删除帶自增長的列的表後,如果再插入資料,資料從1開始
4.delete 删除帶自增長列的表後,如果再插入資料,資料從上一次的斷點處開始
5.truncate删除不能復原,delete删除可以復原
-------------------------------------------------------------------------
3. 修改資料:
* 文法:
* 修改單表: update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 條件];
* 修改多表: update 表1 别名1,表2 别名2 set 字段=新值,字段=新值 where 連接配接條件 and 篩選條件
* 注意:
1. 如果不加任何條件,則會将表中所有記錄全部修改