插入:
INSERT INTO 表(字段1,字段2,字段3...)VALUES(值1,值2,值3...);
同時插入多條數據:
INSERT INTO 表(字段1,字段2,字段3...)VALUES(值1,值2,值3...),(值1,值2,值3...)...;
或者在命令行中 :
INSERT INTO 表(字段1,字段2,字段3...)
VALUES(值1,值2,值3...),
(值1,值2,值3...),
...
(值1,值2,值3...);
將查詢的結果插入表中:
INSERT INTO 表1(字段1,字段2) SELECT (字段1,字段2..)FROM 表2;
更新:
UPDATE 表 SET 字段1=值1,字段2=值2... WHERE 條件;
刪除:
DELETE FROM 表 WHERE 條件;
刪除所有記錄:
DELETE FROM 表;
索引的優點:
1.創建唯一索引,可保證數據庫表中每一行數據的唯一性
2.可大大加快數據的查詢速度
3.在實現數據的參考完整性方面,可加速表和表之間的連接
4.在使用分組和排序字句進行數據查詢時,也可以顯著減少查詢中分組和排序的時間
索引的缺點:
1.創建和維護索引要耗費時間,並且隨着數據量的增加所耗費的時間也會增加
2.索引需要佔磁盤空間,除了數據表佔數據空間之外,每一個索引還要佔一定的物理空間,如果有大量索引,索引文件可能比數據文件更快達到最大尺寸文件
3.當對錶中數據進行增刪改的時候,索引也要動態的維護,這樣就降低了數據的維護速度
索引的分類:
1.普通索引和唯一索引
普通索引是MYSQL中的基本索引類型,允許在定義索引的列中插入重複值和空值
唯一索引,索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。主鍵索引是一種特殊的唯一索引,不允許有空值。
2.單列索引和組合索引
單列索引即一個索引只包含單個列,一個表可以有多個單列索引。
組合索引指在表的多個字段組合上創建的索引,只有在查詢條件中使用了這些字段的左邊字段時,索引纔會被使用。
3.全文索引
全文索引可以在 CHAR VARCHAR 或者TEXT類型的列上創建。MYSQL中只有MYISAM存儲引擎支持全文索引。
CREATE TABLE 表名(字段1.字段2.。。。UNIQUE|INDEX|FULLTEXT INDEX 索引名稱(對應字段))
ALTER TABLE 表名 ADD 索引類型 索引名(字段);
CREATE 索引類型 索引名 ON 表名(字段);
刪除索引:
ALTER TABLE 表名 DROP 索引類型 索引名;
DROP 索引類型 索引名 ON 表名;
CREATE VIEW 視圖名稱(視圖中的字段名1,字段2..) AS SELECT 字段1,字段2...FROM 表名 WHERE 條件;
多表創建視圖:
CREATE VIEW 視圖名稱(視圖中的字段名1,字段2..) AS SELECT 字段1,字段2...FROM 表1,表2 WHERE 條件(也可以使用連接查詢);
查看視圖基本信息:
DESCRIBE view_t;
SHOW TABLE STATS LIKE '視圖名'\G;
視圖存在時修改,不存在時創建
CREATE OR REPLACE VIEW 視圖名(字段...) AS SELECT 字段1,字段2...FROM 表1,表2 WHERE 條件(也可以使用連接查詢);
ALTER VIEW 視圖名(字段名...) AS 查詢語句;
更新視圖:
UPDATE 視圖名 SET 字段=值
刪除某些數據:
DELETE FROM 視圖名 WHERE 條件;
DROP VIEW IF EXISTS 視圖名;
MYSQL中視圖和表的區別以及聯繫是什麼?
區別:
1.視圖是已經編譯好的SQL語句,是基於SQL語句的結果集的可視化的表,而表不是。
2.視圖沒有實際的物理記錄,而基本表有。
3.表是內容,視圖是窗口
4.表佔用物理空間而視圖不佔用物理空間,視圖只是邏輯概念的存在,表可以及時對它進行修改,但視圖只能用創建的語句來修改
5.視圖是查看數據表的一種方法,可以查詢數據表中某些字段構成的數據,只是一些SQL語句的集合。從安全的角度來說,視圖可以防止用戶接觸數據表,因而用戶不知道表結構。
聯繫:
視圖是在基本表之上建立的表,它的結構和內容都來自基本表,它依據基本表存在而存在。一個視圖可以對應一個基本表,也可以對應多個基本表。視圖是基本表的抽象和在邏輯意義上建立的新關係。
創建用戶語法:
1. CREATE USER '用戶名'@'host' IDENTIFIED BY '密碼' 創建的用戶無權限
2.GRANT 權限(all是所有權限) ON db.table(*.*表示所有) TO '用戶名'@'host' IDETIFIED BY '密碼' WITH GRANT OPTION(賦予創建用戶權限);
DROP USER '用戶名'@'host';
修改當前用戶密碼 :
SET PASSWORD =password('新密碼');
修改其他用戶密碼:
SET PASSWORD FOR '用戶名'@'host' = password('新密碼');
MySQL忘記root密碼後的重置:
確保環境變量下mysql的path路徑爲C:\Program Files\MySQL\MySQL Server 5.7\bin 或自己安裝的mysql路徑下的\MySQL Server 5.7\bin
1.關閉MYSQL服務
net stop mysql57
2.找到C:/ProgramData/Mysql Server 5.7/my.ini文件
在[mysqld]這一行代碼下加入以下代碼
skip-grant-tables
3.啓動MYSQL服務:
net start mysql57
4.不通過密碼直接登錄MySQL
mysql -uroot -p回車 再回車
5.設置新密碼
update mysql.user set authentication_string=PASSWORD('新的密碼') where user='root';
6.再次將my.ini文件中添加的skip-grant-tables 代碼刪除,然後重啓MySQL服務,然後使用新密碼登錄。
聯機訪問:
GRANT 權限 ON 數據庫.表 TO '用戶名'@'%' IDENTIFIED BY '密碼' WITH MAX_CONNECTIONS_PER_HOUR 30;
遠程連接數據庫,用戶的host地址設置爲%, 遠程連接命令: mysql -u用戶名 -p密碼 -h 主機地址