MySQL使用详解--根据个人学习总结
?
?
1.安裝配置
2.啟動mysql服務并配置
mysql> \s(status也行)查看當前服務器狀態查看編碼狀態Server characterset : utf8Db characterset: utf8Client characterset: gbkConn. characterset: gbk修改:---進入配置文件my.ini 客戶端:[mysql]default-character-set=utf8服務端:[mysqld]character-set-server=utf8 查看狀態和修改配置3.登陸/退出MySql
登陸:常用參數:-u, --username=name用戶名(注:5.5版本去掉了--username寫法)-p, 密碼-h, --host服務器名稱-P, --port端口號-D, --database, 打開指定數據庫--prompt=name, 設置命令提示符--delimiter=name, 指定分隔符-V,--version,輸出版本信息并且退出 案例:a)mysql -rroot -pb)mysql -h127.0.0.1 -uroot -pc)mysql -h127.0.0.1 -uroot -p --prompt=abc (只對當前連接有效)d)mysql -uroot -proot -V 登陸 退出:exitquit\qCtrl + c 退出4.Mysql常用命令:
顯示當前版本 SELECT VERSION();顯示當前日期時間 SELECT NOW();顯示當前用戶 SELECT USER();修改分隔符 DELIMITER \開啟輸出日志 \T +路徑結束輸出日志 \t 運維常用命令 MYSQL語句規范:1.關鍵字與函數名稱全部大寫2.數據庫名稱,表名稱,字段名稱等全部小寫3.SQL語句必須以分隔符結尾4.SQL語句支持折行操作,只要不把單詞,標記或引號字符分割為兩部分,可以在下一行繼續寫5.數據庫名稱,表名稱,字段名稱等盡量不要使用MySQL的保留字,如果需要使用的時候需要使用反引號('')將名稱括起來5.數據庫操作:
a)創建數據庫:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [[DEFAULT] CHARACTER SET [=] CHARSET_NAME]CREATE DATABASE test CHARACTER SET=UTF8b)查看當前服務器下的數據列表: SHOW {DATABASES | SCHEMA}得到當前打開的數據庫名稱 : SELECT DATABASE();c)查看上一步操作產生的警告信息: SHOW WARNINGS;d)刪除指定數據庫 DROP {DATABASE|SCHEMA} [IF EXISTS] db_name 案例:DROP DATABASE db_aaa1SHOW DATABASESe)查看指定數據庫的定義 : SHOW CREATE {DATAASE|SCHEMA} db_namef)修改指定數據庫的編碼方式:ALTER {DATABASE|SCHEMA} db_name [DEFAULT] CHARACTER SET[=] charset_nameg)打開指定數據庫: USE db_name 創建等語句6.Mysql中的數據類型 ?--具體常用的可以參考
整數類型 --int --TINYINT(1),0為false,其余為true浮點類型 --FLOAT 4字節字符串類型--CHAR(M) M 個字節,0<=M<=255 | VARCHAR(m) 0<=M<=65535 L+1個字節 | ENUM('value1','value2'..)1或兩個字節,取決于枚舉值的個數最多65535個值日期時間類型 time date datetime year TIMESTAEP二進制類型 視頻格式,圖片路徑啊等 bit[(M)]二進制位(101001),m表示二進制位的長度(1-64),默認m=1tinyint[(m)] [unsigned] [zerofill]小整數,數據類型用于保存一些范圍的整數數值范圍:有符號:-128 ~ 127.無符號:0 ~ 255特別的: MySQL中無布爾值,使用tinyint(1)構造。int[(m)][unsigned][zerofill]整數,數據類型用于保存一些范圍的整數數值范圍:有符號:-2147483648 ~ 2147483647無符號:0 ~ 4294967295特別的:整數類型中的m僅用于顯示,對存儲范圍無限制。例如: int(5),當插入數據2時,select 時數據顯示為: 00002bigint[(m)][unsigned][zerofill]大整數,數據類型用于保存一些范圍的整數數值范圍:有符號:-9223372036854775808 ~ 9223372036854775807無符號:0 ~ 18446744073709551615decimal[(m[,d])] [unsigned] [zerofill]準確的小數值,m是數字總個數(負號不算),d是小數點后個數。 m最大值為65,d最大值為30。特別的:對于精確數值計算時需要用此類型decaimal能夠存儲精確值的原因在于其內部按照字符串存儲。FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]單精度浮點數(非準確小數值),m是數字總個數,d是小數點后個數。無符號:-3.402823466E+38 to -1.175494351E-38,01.175494351E-38 to 3.402823466E+38有符號:01.175494351E-38 to 3.402823466E+38**** 數值越大,越不準確 ****DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]雙精度浮點數(非準確小數值),m是數字總個數,d是小數點后個數。無符號:-1.7976931348623157E+308 to -2.2250738585072014E-30802.2250738585072014E-308 to 1.7976931348623157E+308有符號:02.2250738585072014E-308 to 1.7976931348623157E+308**** 數值越大,越不準確 ****char (m)char數據類型用于表示固定長度的字符串,可以包含最多達255個字符。其中m代表字符串的長度。PS: 即使數據小于m長度,也會占用m長度varchar(m)varchars數據類型用于變長的字符串,可以包含最多達255個字符。其中m代表該數據類型所允許保存的字符串的最大長度,只要長度小于該最大值的字符串都可以被保存在該數據類型中。注:雖然varchar使用起來較為靈活,但是從整個系統的性能角度來說,char數據類型的處理速度更快,有時甚至可以超出varchar處理速度的50%。因此,用戶在設計數據庫時應當綜合考慮各方面的因素,以求達到最佳的平衡texttext數據類型用于保存變長的大字符串,可以組多到65535 (2**16 ? 1)個字符。mediumtextA TEXT column with a maximum length of 16,777,215 (2**24 ? 1) characters.longtextA TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 ? 1) characters.enum枚舉類型,An ENUM column can have a maximum of 65,535 distinct elements. (The practical limit is less than 3000.)示例:CREATE TABLE shirts (name VARCHAR(40),size ENUM('x-small', 'small', 'medium', 'large', 'x-large'));INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');set集合類型A SET column can have a maximum of 64 distinct members.示例:CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');DATEYYYY-MM-DD(1000-01-01/9999-12-31)TIMEHH:MM:SS('-838:59:59'/'838:59:59')YEARYYYY(1901/2155)DATETIMEYYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)TIMESTAMPYYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某時) 完整版數據類型7.(一)數據庫表相關操作
a.什么是表?
1 數據表是數據庫最重要的組成部分之一,是其他對象的基礎 2 數據表是存儲數據的數據結構 3 數據表示包含了特定實體類別的數據 4 數據表由行(row)和列(column)構成的二維網絡 5 數據表一定現有表結構,再有數據 6 數據表至少有一列,可以沒有行或者多行 7 數據表名稱要求唯一,而且不要包含特殊字符b.如何創建數據表?
1 CREATE TABLE [IF NOT EXISTS] tbl_name(字段名稱 字段類型 [完整性約束條件]。。。)ENGINE=引擎名稱 CHARSET='編碼方式'; 2 完整性約束條件: 3 1.PRIMARY KEY主鍵v--唯一的字段,且不能重復 4 2.AUTO_INCREMENT自增長 5 3.FOREIGN KEY 外鍵 6 4.NOT NULL 非空 7 5.UNIQUE KEY 唯一 8 6.DEFAULT默認值c.如何查看數據庫中的數據表以及表結構?
1 查看數據庫下的數據表: SHOW TABLES 2 查看指定表的表結構: 3 DESC tbl_name 4 DESCRIBE tbl_name 5 SHOW COLUMNS FROM tbl_named.創建表
案例一:創建新聞分類cms_cate 編號,分類名稱,分類描述
后加:注意一個地方:create table ....(id int,caption chr注意這里寫完就沒有逗號了)。。。;否則報錯,大爺的找了一晚上。
1 CREATE TABLE IF NOT EXISTS cms_cate( 2 id TINYINT, 3 cateName VARCHAR(50), 4 cateDesc VARCHAR(200), 5 )ENGINE=MyISAM CHARSET=UTF8; 代碼 案例二:
創建新聞表cms_news
編號,新聞標題,新聞內容,新聞發布時間,點擊量,是否置頂,新聞所屬分類,發布人
7.(二)MySQL 存儲引擎
a.什么是存儲引擎?
1 存儲引擎就是指表的類型。數據庫的存儲類型決定了表在計算機中的存儲方式。用戶可以根據不同的存儲方式、是否 2 進行事務處理等來選擇合適的存儲引擎b.如何查看MySQL的存儲引擎?
1 查看MySQL支持的存儲引擎: SHOW ENGINES \G; 2 Engine:存儲引擎 3 Support:是否支持這種存儲引擎 4 Comment:引擎特點 5 Transactions:是否支持事務處理 6 XA:是否是分布式的交易處理 7 Savepoints:是否支持保存點 8 查看顯示支持的存儲引擎信息: SHOW VARIABLES LIKE 'have%' 9 查看默認的存儲引擎: SHOW VARIABLES LIKE 'storage_engine'c.MySQL常用存儲引擎及特點:
1 InnoDB存儲引擎 --5.1版本之后 2 事務修改:---進入配置文件my,回滾,修復,分布式,多版本并發控制的事物安全 3 4 MyISAM存儲引擎 --5.1版本之前 5 frm --存儲表結構 6 myd --存儲數據 7 myi --存儲索引 8 MEMORY存儲引擎 9 數據存儲在內存,安全性低,速度快,生命周期短d.如何選擇合適的存儲引擎?
? ---建議根據需求來選擇存儲引擎
完整性約束條件:
1、給字段選擇合適的類型
PRI代表主鍵 不能為空, 一個表中只能有一個主鍵
2、AUTO_INCREMENT自增長
被標志成自增長的一定是主鍵,主鍵不一定是自增長的
由于是自增長,可以換種寫法
INSERT user5(username) VALUES('QUEN');
?
3、NOT NULL非空 --經常配合默認值使用
無符號的UNSIGEND(unsigned) CREATE TABLE IF NOT EXISTS user7( id INT UNSIGNED KEY AUTO_INCREMENT, 意思id是無符號的自增長的鍵 username VARCHAR(20) NOT NULL, password CHAR(32) NOT NULL, age TINYINT UNSIGNED);INSERT user7(username, passwprd) VALUES('KING', 'KING'); INSERT user7(username, passwprd, age) VALUES('KING', 'KING', 12); INSERT user7(username, passwprd) VALUES(NULL, 'KING'); 實例4.DEFAULT默認值
CREATE TABLE IF NOT EXISTS user7( id INT UNSIGNED KEY AUTO_INCREMENT, 意思id是無符號的自增長的鍵 username VARCHAR(20) NOT NULL, password CHAR(32) NOT NULL, age TINYINT UNSIGNED DEFAULT 18); 案例5.UNIQUE KEY 唯一(一個表中只能有一個主鍵,但可以有多個唯一)
CREATE TABLE IF NOT EXISTS user9( id TINYINT UNSIGNED KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL UNIQUE, card CHAR(18) UNIQUE)DESC user9 ; 案例6.外鍵(后面講-配合多表查詢)
外鍵,一個特殊的索引,只能是指定內容
可以理解為如果表A的主關鍵字是表B中的字段,則該字段稱為表B的外鍵,表A稱為主表,表B稱為從表。外鍵是用來實現參照完整性的。
creat table color(nid int not null primary key,name char(16) not null)create table fruit(nid int not null primary key,smt char(32) null ,color_id int not null,constraint fk_cc foreign key (color_id) references color(nid)) 案例如何操作表結構
修改表名:ALTER TABLE tbl_name RENAME [TO|AS] NEW_NAMERENAME TABLE tbl_name TO new_name添加字段:ALTER TABLE tbl_name ADD 字段名稱 字段類型【完整性約束條件】[FIRST|AFTER字段名稱] 刪除字段:ALTER TABLE tbl_name DROP 字段名稱 修改字段屬性:ALTER TABLE tbl_name MODIFY 字段名稱 字段類型【完整性約束條件】【FIRST|AFTER 字段名稱】 修改字段名稱:ALTER TABLE tbl_name CHANGE 舊字段名稱 新字段名稱字段類型[完整性約束條件]【FIRST|AFTER字段名稱】 添加默認值:ALTER TABLE tbl_name ALTER 字段名稱SET DEFAULT默認值 刪除默認值:ALTER TABLE tbl_name ALTER 字段名稱 DFOP DEFAULT 添加主鍵:ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY[index_type] (字段名稱,...) 刪除主鍵:ALTER TABLE tbl_name DROP PRIMARY KEY 添加唯一:ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [索引名稱](字段名稱,..) 刪除唯一:ALTER TABLE tbl_name DROP {INDEX|KEY} index_name 修改表的存儲引擎:ALTER TABLE tbl_name ENGING=存儲引擎名稱 設置自增長的值:ALTER TABLE tbl_name AUTO_INCREMENT=值5.如何刪除數據表 DROP TABLE[IF EXISTS] tbl_name[,tbl_name....]?
CREATE TABLE IF NOT EXISTS user10( id SMALLINT UNSIGNED KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL UNIQUE, password CHAR(32) NOT NULL, email VARCHAR(50) NOT NULL DEFAULT '12344@qq.com',);添加字段
以user10為例 添加card字段CHAR(18); ALTER TABLE user10 ADD card CHAR(18); 查看表結構:DESC user10; 完整性約束條件: ALTER TABLE user10 ADD test VARCHAR(100) NOT NULL UNIQUE; ALTER TABLE user10 ADD test1 VARCHAR(100) NOT NULL FIRST; ALTER TABLE user10 ADD test2 VARCHAR(100) NOT NULL DEFAULT 100 AFTER username; 選中一次表,完成多個操作 ALTER GTABLE user10 ADD test4 INT NOT NULL DEFAULT 123 AFTER password, ADD test5 FLOAT(6,2) FIRST, ADD test6 SET('A','B','C'); 查看表結構:DESC user10; 案例刪除email字段
?
ALTER TABLE user10 DROP test6; ALTER TABLE user10 DROP test1;DESC user10;一次刪除多個字段 ALTER TABLE user10 DROP test2, DROP test3, ....; 案例添加test字段刪除addr字段
ALTER TABLE user10 ADD test INT UNSIGNED NOT NULL DEFAULT 10 AFTER sex, DROP addr; 案例修改字段屬性
ALTER TABLE uer10 MODIFY email VARCHAR(200);--修改的是所有屬性,沒寫的會變回默認 所以建議在改之前要先DESC tbl_name;查看一下表結構添加默認值
CREATE TABEL IF NOT EXISTS test12( id TINYINT UNSIGNED KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL UNIQUE, age TINYINT UNSIGNED);?
添加默認值: ALTER TABLE user11 ALTER age SET DEFAULT 18; DESC user11; ALTER TABLE user11 ALTER age DROP DEFAULT; ALTER TABLE user11 ALTER username DROP DEFAULT; 案例如何添加主鍵
CREATE TABLE IF NOT EXISTS test12( id INT); ALTER TABLE test12 ADD PRIMARY KEY(id); 案例?
CREATE TABLE IF NOT EXISTS test13( id INT, card CHAR(18), username VARCHAR(20) NOT NULL); ALTER TABLE test13 ADD PRIMARY KEY(id, card); 案例刪除test12表的主鍵
ALTER TABLE test12 DROP PRIMARY KEY; 在添加回來 ALTER TABLE test12 ADD CONSTRAINT symbol PRIMARY KEY index_type(id); 案例----注意:
帶有主鍵的自增長---刪除 CREATE TABLE IF NOT EXISTS test14( id INT UNSIGNED KEY AUTO_INCREMENT);ALTER TABLE test14 DROP PRIMARY KEY; ---會報錯;所以先刪除自增長 所以: ALTER TABLE test14 MODIFY id INT UNSIGNED;利用MODIFY關鍵字去掉了特殊屬性;(就是利用修改屬性,沒修改的變成默認值) ALTER TABLE test14 DROP PRIMARY KEY;修改表的存儲引擎
修改表的存儲引擎為MyISAM;
刪除數據表
DROP TABLE[IF EXISTS] tbl_name[, tbl_name...]DROP TABLE IF EXISTS user12; SHOW WARNINGS; 查看警告 DROP TABLE IF EXISTS user1,user2,user3; View Code?
清空自增id
我們的數據庫表中經常會使用id自增,但是每次清空表后id并不是從1開始計數,總是接著之前的進行自增,那么解決呢?
使用mysql的truncate命令,用法:truncate table 表名;
總結
以上是生活随笔為你收集整理的MySQL使用详解--根据个人学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对抗告警疲劳的8种方法
- 下一篇: 【项目 报错】 项目启动,内存溢出