1. 程式人生 > >SQL 03

SQL 03

數據 sql b- cls 參數 db_name 自定義安裝 () lint

********************2017年8月10日********************
安裝mysql


Typical :典型安裝
Custom :自定義安裝
Complete:完全安裝


簡單認知
mysql默認端口號是:3306
mysql的超級用戶叫:root


在cmd中啟動mysql服務:net start mysql
在cmd中登錄mysql :mysql -u root -p password -P端口號 -h服務器名稱或IP地址
在Windows的cmd中清屏命令:cls
退出:1. exit; 2. quit; 3. \q;
=
mysql語句的規範


1.關鍵字與函數名稱全部小寫
2.數據庫名稱、表名稱、字段名稱全部小寫
3.SQL語句必須以分號結尾

修改MYSQL提示符
1.連接客戶端時通過參數指定
shell>mysql -uuser -ppassword --prompt 提示符

2.連接上客戶端後,通過prompt命令修改
mysql>prompt 提示符

提示符參數:
\D :完整的日期
\d :當前數據庫
\h :服務器名稱
\u :當前用戶

常用命令

1.數據庫的操作
SELECT VERSION(); //顯示當前服務器版本
SELECT NOW(); //顯示當前日期時間
SELECT USER(); //顯示當前用戶

CREATE DATABASE t1; //創建數據庫t1 //在許多時候 DATABASE 和 SCHEMA 作用相同
CREATE SCHEMA t1; //創建數據庫t1

ALTER DATABASE t1; //修改數據庫t1
DROP DATABASE t1; //刪除數據庫t1
USE t1; //打開數據庫t1
SHOW DATABASES; //查看當前服務器下的數據庫
SHOW WARNINGS; //查看警告信息
SHOW CREATE DATABASE t1; //顯示數據庫t1的編碼方式
CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET=gbk; //先檢查是否存在t2數據庫,已存在則直接修改其編碼方式,不存在則先創建並修改其編碼方式

ALTER DATABASE t2 CHARACTER SET=utf8; //修改數據庫的編碼方式

2.表的操作
2.1:CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type, ...)//column:列 //創建數據表

2.2:SHOW TABLES [FROM db_name] [LIKE ‘pattern‘ | where expr]; //查看數據表

2.3:SHOW COLUMNS FROM tb_name; //查看數據表結構


3.記錄的插入與查找
INSERT [INTO] tb_name [(col_name,...)] VALUES(val,..); //插入記錄
空值與非空
NULL,字段值可以為空
NOT NULL,字段值禁止為空 // 在創建時設置如:CREATE TABLE tb2(username VARCHAR(20)NOT NULL,age TINYINT UNSIGNED NULL);



4.自動編號:AUTO_INCREMENT

4.1 自動編號,必須與主鍵組合使用
4.2 默認情況下,起始值為1,每次增量為1

5.主鍵:PRIMARY KEY
5.1 主鍵約束
5.2 每張數據表只能存在一個主鍵
5.3 主鍵保證記錄的唯一性
5.4 主鍵自動為 NOT NULL

例子:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL);

6.唯一約束:UNIQUE KEY
6.1 唯一約束可以保證記錄的唯一性
6.2 唯一約束的字段可以為空值(NULL)
6.3 每張數據表可以存在多個唯一約束

例子:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL UNIQUE KEY);


7.默認約束:DEFAULT
例1:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL UNIQUE KEY,SEX ENUM(‘男‘,‘女‘,‘保密‘) DEFAULT ‘保密‘);
例2:ALTER TABLE user2 ALTER age SET DEFAULT 15;

當插入記錄時,如果沒有明確為字段賦值,則自動賦予默認值。

8.約束
8.1 約束保證數據的完整性和一致性
8.2 約束分為表級約束和列級約束
8.3 約束類型包括:
NOT NULL ( 非空約束)
PRIMARY KEY(主鍵約束)
UNIQUE KEY(唯一約束)
DEFAULT(默認約束)
FOREIGN KEY(外鍵約束):實現一對一或一對多關系

9. 外鍵約束的要求:
1.父表和子表必須使用相同的存儲引擎,而且禁止使用臨時表。
2.數據表的存儲引擎智能為InnoDB
3.外鍵列和參照列必須具有相似的數據類型。其中數字的長度或是否有符號位必須相同;而字符的長度則可以不同。
4.外鍵列和參照列必須創建索引。如果參照列不存在索引的話,MYSQL將自動創建索引。
修改數據表的存儲引擎
MYSQL配置文件: default-storage-engine=innodb

SHOW CREATE TABLE 表名; //查看表的存儲引擎與編碼方式

10. 外鍵約束的參照操作

1.CASCADE:從父表刪除或更新且自動刪除或更新子表中匹配的行
2.SET NULL:從父表刪除或更新行,並設置子表中的外鍵列為NULL。如果使用該選項,必須保證子表列沒有指定NOT NULL
3.RESTRICT:拒絕對父表的刪除或更新操作
4.NO ACTION:標準SQL的關鍵字,在MYSQL中與RESTRICT相同
**************************************12:58 2017/8/8******************************

11.表級約束與列級約束
11.1:對一個數據列建立的約束,稱為列級約束
11.2:對多個數據列建立的約束,稱為表級約束
11.3:列級約束既可以在列定義時聲明,也可以在列定義後聲明,表級約束只能在列定義後聲明。

12.修改數據表
12.1:添加單列:ALTER TABLE tb1_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
FIRST:新插入的那一列置於所有列最前面
例子:ALTER TABLE user ADD truename VARCHAR(20) NOT NULL FIRST;
AFTER:置於指定列的後面
例子:ALTER TABLE user ADD password VARCHAR(32) NOT NULL AFTER username;
都不加則置於所有列最後面


12.2:添加多列:ALTER TABLE tb1_name ADD [COLUMN] (col_name column_definition,...)
區別:添加單列的時候,所有的列不用加小括號,添加單列的時候可以指定位置關系,添加多列的時候不能指定位置關系,只能在原來數據表列的下方

12.3:刪除單列:ALTER TABLE tb1_name DROP [COLUMN] col_name

12.4:刪除多列:ALTER TABLE tb1_name DROP [COLUMN] col_name,DROP [COLUMN] col_name;

12.5:添加主鍵約束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type](index_col_name,...)
CONSTRAINT 名字:給主鍵起名字

12.6:添加唯一約束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [index_name] [index_type](index_col_name,...)

12.7:添加外鍵約束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition

例子:ALTER TABLE user2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);

12.8:添加/刪除默認約束:ALTER TABLE tb1_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

例1:ALTER TABLE user2 ALTER age SET DEFAULT 15;

例2:ALTER TABLE user2 ALTER age DROP DEFAULT;

12.9:刪除主鍵約束:ALTER TABLE tb1_name DROP PRIMARY KEY

例子:ALTER TABLE user2 DROP PRIMARY KEY; //刪除主鍵時不用加列名,因為每張數據表有且僅有一個主鍵

12.10:刪除唯一約束:ALTER TABLE tb1_name DROP {INDEX | KEY}index_name; //刪除時需加唯一約束的字段名

12.11:以網格的形式查看約束:SHOW INDEXES FROM user2\G;

12.12:刪除外鍵約束:ALTER TABLE tb_name DROP FOREIGN KEY fk_symbol;//刪除時需加外鍵約束的名字

查看外鍵約束的名稱:SHOW CREATE TABLE tb_name;(CONSTRAINT後面的為外鍵約束名字)

12.13:修改列定義:修改字段的數據類型,位置
ALTER TABLE tb_name MODIFY [COLUMN] col_name column_definition [FRIST | AFTER col_name]

例1:ALTER TABLE user2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST; //將user2表中已存在的字段id及其定義改變到所有列的最前面

例2:ALTER TABLE user2 MODIFY id TINYINT UNSIGNED NOT NULL ;// 修改了其類型 註意:將大類型修改為小類型時可能會造成數據的丟失

13.14:修改列名稱:
ALTER TABLE tb_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name]

13.15;數據表更名:
方法1:ALTER TABLE tb_name RENAME [TO| AS] new_tb_name
方法2: RENAME TABLE tb_name TO new_tb-name [,tb_name2 TO new_tb_name2]...
註意:數據表和字段的更名可能造成之前創建的索引和視圖不能正常工作


SQL 03