日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL使用详解--根据个人学习总结

發布時間:2023/12/4 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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]小整數,數據類型用于保存一些范圍的整數數值范圍:有符號:-128127.無符號:0255特別的: MySQL中無布爾值,使用tinyint(1)構造。int[(m)][unsigned][zerofill]整數,數據類型用于保存一些范圍的整數數值范圍:有符號:-21474836482147483647無符號:04294967295特別的:整數類型中的m僅用于顯示,對存儲范圍無限制。例如: int(5),當插入數據2時,select 時數據顯示為: 00002bigint[(m)][unsigned][zerofill]大整數,數據類型用于保存一些范圍的整數數值范圍:有符號:-92233720368547758089223372036854775807無符號:018446744073709551615decimal[(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_name

d.創建表

案例一:創建新聞分類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
編號,新聞標題,新聞內容,新聞發布時間,點擊量,是否置頂,新聞所屬分類,發布人

1 CREATE TABLE Persons 2 ( 3 Id_P int NOT NULL, 4 LastName varchar(255) NOT NULL, 5 FirstName varchar(255), 6 Address varchar(255), 7 City varchar(255), 8 UNIQUE (Id_P) 9 ); 代碼一 1 CREATE TABLE IF NOT EXISTS cms_testnews( 2 id INT PRIMARY KEY, 3 title VARCHAR(50) unique not null, 4 content TEXT not null, 5 pubTime INT unique not null, 6 isTop TINYINT(1) COMMENT '0代表不置頂,1代表置頂' 7 ) ENGINE=InnoDB CHARSET=UTF8; 代碼二

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代表主鍵 不能為空, 一個表中只能有一個主鍵

查看創建表的定義 SHOW CREATE TABLE user1;

2、AUTO_INCREMENT自增長
被標志成自增長的一定是主鍵,主鍵不一定是自增長的

CREATE TABLE IF NOT EXISTS user5( id SMALLINT KEY AUTO_INCREMENT, username VARCHAR(20)); --)AUTO_INCREMENT=100;指定起始值increment(自增長) INSERT user5 VALUES(1,'KING');

  由于是自增長,可以換種寫法

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;

ALTER TABLE user12 ENGINE=MyISAM; 修改自增長的值 ALTER TABLE user12 AUTO_INCREMENT=100;

刪除數據表

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使用详解--根据个人学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。