天天看點

資料庫mysql之DDL和DML前言一、DDL(資料定義語言)二、DML(資料操作語言)

文章目錄

  • 前言
  • 一、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. 如果不加任何條件,則會将表中所有記錄全部修改