Mysql安裝配置
my.ini ——>配置文件 端口號:3306
default-character-set = utf8 -->默認編碼方式
basedir = 基礎安裝目錄
datadir = 數據文件存放的目錄
character-set-server= utf8 在服務器上的存儲方式
啟動和關閉mysql 圖形化界面(服務列表)/命令行界面
net start mysql 啟動服務
net stop mysql 停止服務
mysql的操作梗概:
- 登錄退出
- 修改mysql提示符
- mysql常用命令
- mysql語句規(guī)范
- 數據庫操作
登陸與退出
登陸:
mysql -u --user=name 用戶名
mysql -u root
mysql -p --password[=name] 密碼
mysql -uroot -p
mysql -P --port=# 端口
mysql -P3306
mysql -h --host=name 服務器名稱
mysql -h 127.0.0.1
mysql -uroot -p123456 -P3306 -h127.0.0.1
退出
exit;
quit;
/q;
通用查詢
select version(); 查看版本
show engines; 查看引擎
select user(); 查看當前用戶
mysql語法規(guī)范
- 關鍵字與函數名稱全部大寫
- 數據庫名稱,表名稱沛鸵,字段名稱全部小寫
- sql語句必須以分號結尾
創(chuàng)建數據庫
說明:{必選項} [可選項]
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name
CREATE DATABASES study;
SHOW {DATABASE|SCHEMAS} [LIKE 'pattern'| WHERE expr]
SHOW WORNINGS; 查看錯誤信息
SHOW CREATE DATABASE study;
CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET utf8;
修改數據庫
ALTER {DATABASE|SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name;
ALTER DATABASE t2 CHARACTER SET gbk;
刪除數據庫
DROP {DATABASE|SCHEMA} [IF EXISTS] db_name;
數據類型
數據類型是指列鸽心,儲存過程參數,表達式和局部變量的數據特征陨囊,它決定了數據的存儲格式爷怀,代表了不同的信息類型镊绪。
整型
- TINYINT: 1kb
- SMALLINT: 2kb
- MEDIUMINT: 3kb
- INT: 4kb
- BIGING: 8kb
浮點型
- FLOAT[(m,d)] m是數字總位數匀伏,d是小數點后面的位數,默認精確到7位小數值
- DOUBLE[(m,d)]
日期時間型 存儲需求
- YEAR 1 1000-9999
- TIME 3 1000-9999
- DATE 3
- DATETIME 8
- TIMESTAMP 4 1970-2037
字符型
- CHAR
- VCHAR
- TINYTEXT
- TEXT
- MEDIUMTEXT
- LONGTEXT
- ENUM('VALUE1':'VALUE2'...)
- SET('VALUE':'VALUE2'...)
數據表操作:數據表是數據庫最重要的組成部分之一蝴韭,是其他對象的基礎
行成為記錄 列稱之為字段
- USE 打開數據庫够颠,USE數據庫名稱
SELECT DATABASE(); //查看用戶打開的數據 CREATE TABLE [IF NOT EXISTS] table_name( column_name data_type, ... ) > CREATE TABLE tb1( username VARCHAR(20), age TINYINT UNSIGNED, salary FLOAT(8,2) UNSIGNED );
查看數據表是否存在
- SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]
查看數據表的結構
- SHOW COLULMNS FROM tb1;
- DESCRIBE tb1;
向表中插入數據
- INSERT tb1 VALUES('TOM', 20, 1234.12);
- INSERT tb1(username, salary) VALUES('jack', 1123.12);
查找語句
- SELECT expr,... FROM tbl_name;
空值與非空
- NULL NOT NULL
- INSERT tb2 VALUES('java', NULL);
AUTO_INCREAMENT
- 當插入沒有成功的時候編號也自增一
- 自動編號且必須與主鍵組合使用
- 默認情況下榄鉴,起始值為1履磨,每次的增量為1
PRIMARY KEY
- 主鍵約束
- 每張數據表只能存在一個主鍵
- 主鍵保證記錄的唯一性(行為記錄,列為字段)
- 逐漸自動為NOT NULL
- AUTO_INCREMENT必須和主鍵一起使用庆尘,主鍵不一定和AUTO_INCREMENT一起使用
UNIQUE KEY
- 唯一約束
- 唯一約束可以保證記錄的唯一性
- 唯一約束的字段可以為空值(null)只能有一個空值
- 每張數據表可以存在多個唯一約束
DEFAULE
- 默認值
- 當插入記錄時剃诅,如果沒有明確為字段賦值,則自動賦予默認值驶忌,
CREATE TABLE tb( id SMALLINT UNSIGNED KEY AUTO_INCREMENT, username VARCHAR(20) UNIQUE KEY, sex ENUM('1', '2', '3') DEFAULT'3' );
約束
- 約束保證數據的完整性和一致性
- 約束分為表級約束和列級約束
- 約束所針對字段的數目的多少來決定的
- 某一個字段列級約束
- 兩個或兩個以上的字段稱為表級約束
- 約束類型包括 功能
- NOT NULL
- PRIMARY KEY
- UNIQUE KEY
- DEFAULT
- FOREIGN KEY 外鍵約束
- 保證數據一致性矛辕,完整性
- 實現一對一或一對多的關系
外鍵約束
- 父表和字表必須使用相同的存儲引擎,而且禁止使用臨時表
- 數據表的存儲引擎只能為InnoDB
- 外鍵列和參照列必須具有相似的數據類型付魔。其中數字的長度或是否有符號位必須相同聊品;而字符的長度則可以不同。
- 外鍵列和參照列必須創(chuàng)建索引几苍。如果外鍵列不存在索引的話杨刨,MYSQL將自動創(chuàng)建索引
CREATE TABLE provinces(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL
);
CREATE TABLE users(
username VARCHAR(20) NOT NULL,
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pid SMALLINT UNSIGNED,
FOREIGN KEY(pid) REFERENCES provinces(id) ON DELETE CASCADE ON UPDATE CASCADE
);
編輯數據表的默認搜索引擎
mysql配置文件(mysql.ini):default-storage-engine = INNODB
indexes
SHOW INDEXES FROM provinces\G;
- 主鍵在創(chuàng)建時自動創(chuàng)建索引
外鍵約束的參照操作
物理外鍵
- CASCADE: 從父表刪除或更新且自動刪除或更新字表中匹配的行。
- insert table users(pid,username) values ('A', tom);
- delete from provices where id = 3;
- 必須先在父表中插入記錄然后才能在子表中插入記錄
- FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE
- SET NULL:從父表刪除或更新行擦剑,并設置子表中的外鍵列為NULL妖胀。 如果使用該選項,必須保證字表列沒有指定NOT NULL
- RESTRICT:拒絕對父表的刪除更新操作
- NO ACTION: 標準SQL的關鍵字惠勒,在Mysql中與RESTRICT相同
表級約束和列級約束
- 對一個數據列建立的約束赚抡,成為列級約束
- 對多個數據列建立的約束,成為表級約束
- 列級約束既可以在列定義時聲明纠屋,也可以在列定義后聲明涂臣,表級約束只能在列頂以后聲明。
修改數據表
- 添加主鍵約束:ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY[index_type] (index_col_name..... )
- ALTER TABLE users ADD CONSTAINT users_id PRIMARY KEY (id);
- 添加唯一約束:ALTER TABLE tbl_name ADD[CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] (index_col_name,...)
- ALTER TABLE users ADD UNIQUE (username)
- 添加外鍵約束: ALTER TABLE users ADD FOREIGN KEY(pid) REFERENCES provinces (id);
- 添加或刪除默認約束:ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal| DROP DEFAULT}
- 添加單列:ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]
- 添加多列:ALTER TABLE tbl_name ADD [COLUMN] (col_name column_defination, ...) 不能指定位置關系
- 刪除主鍵約束:ALTER TABLE tbl_name DROP PRIMARY KEY;
- 刪除唯一約束:ALTER TABLE tbl_name DROP INDEXEX username;
- 刪除外鍵約束:
- SHOW CREATE TABLE users2; (CONSTRAINT 'users2_ibfk_1')
刪除列
ALTER TABLE tbl_name DROP [COLUMN] col_name
修改數據表
- 修改列定義:ALTER TABLE users MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;
- 修改列名稱:ALTER TABLE tbl_name CHANGE[COLUMN] old_col_name new_col-name column_definition [FIRST|AFTER col_name]
- ALTER TABLE users CHANGE pid p_id TINYINT UNSIGNED NOT NULL;
約束
- 功能劃分:
- NOT NOLL (只能為列級約束)
- PRIMARY KEY
- UNIQUE KEY
- DEFAULT (只能為列級約束)
- FOERIGN KEY
- 按數據列的數目劃分:
- 表級約束
- 列級約束
修改數據表
- 針對字段的操作:
- 添加/刪除字段
- 修改列定義
- 修改列名稱
- 針對約束的操作:添加/刪除各種約束
- 針對數據表的操作:數據表更名(兩種方式modify/change)