mysql常用SQL語句

1.新建數據庫

CREATE DATABASE dbName;

2.修改數據庫名稱

a.RENAME DATABASE dbName TO newDbName
這個語法在mysql 5.1.7中被添加進來,到了5.1.23又去掉了。
據說有可能丟失數據。還是不要用的好。

b.如果所有表都是MyISAM類型的話,可以改文件夾的名字
關閉mysqld
把data目錄中的dbName目錄重命名為newDbName
開啟mysqld

c.重命名所有的表
CREATE DATABASE newDbName;
RENAME TABLE dbName.table1 TO newDbName.table1,dbName.table2 TO newDbName.table2;
DROP DATABASE dbName;

3.建表

CREATE TABLE tableName (
  uid BIGINT UNSIGNED NOT NULL DEFAULT 0,
  name VARCHAR(32) NOT NULL DEFAULT '',
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (uid),
  KEY (name)
)ENGINE=INNODB DEFAULT CHARSET=UTF8;

4.修改字段類型

 ALTER TABLE tableName MODIFY COLUMN columnName TINYINT NOT NULL;

5.修改字段默認值

ALTER TABLE tableName ALTER COLUMN columnName SET DEFAULT '';

6.修改字段名

ALTER TABLE tableName CHANGE columnName newColumnName INT UNSIGNED NOT NULL DEFAULT 0;

7.新增字段

ALTER TABLE tableName ADD columnName INT UNSIGNED NOT NULL DEFAULT 0;

8.刪除字段

ALTER TABLE tableName DROP COLUMN columnName;

9.修改表名

ALTER TABLE tableName RENAME newTableName;
  1. 查看表索引
SHOW INDEX FROM tableName;
SHOW KEYS FROM tableName;
  1. 創建索引
CREATE INDEX indexName ON tableName(columnName);——創建普通索引
CREATE UNIQUE INDEX indexName ON tableName(columnName);——創建唯一索引
ALTER TABLE tableName ADD PRIMARY KEY (columnName);——添加主鍵索引
  1. 刪除索引
DROP INDEX indexName ON talbeName;
ALTER TABLE tableName DROP INDEX indexName;
ALTER TABLE tableName DROP PRIMARY KEY;

13.修改root用戶密碼

set password for 'root'@'localhost'=password('newpassword');
如果是當前登陸用戶用SET PASSWORD = PASSWORD("newpassword"); 

丟失root密碼的時候
mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;

14.查看mysql中主機、用戶、密碼

select host,user,password from mysql.user;

15.新建mysql用戶

create user 'username'@'host' identified by 'password'; 

username - 你將創建的用戶名
host - 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost, 如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%.
password - 該用戶的登陸密碼,密碼可以為空,如果為空則該用戶可以不需要密碼登陸服務器.

CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456'; 
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456'; 
CREATE USER 'pig'@'%' IDENTIFIED BY '123456'; 
CREATE USER 'pig'@'%' IDENTIFIED BY ''; 
CREATE USER 'pig'@'%'; 

16.刪除用戶

DROP USER 'username'@'host'; 

17.授權

GRANT privileges ON databasename.tablename TO 'username'@'host' 

privileges - 用戶的操作權限,如SELECT/INSERT/UPDATE/DELETE/ALL等
databasename - 數據庫名
tablename-表名
如果要授予該用戶對所有數據庫和表的相應操作權限則可用表示, 如.*

GRANT SELECT, INSERT ON test.user TO 'pig'@'%'; 
GRANT ALL ON *.* TO 'pig'@'%'; 

注意:用以上命令授權的用戶不能給其它用戶授權,如果想讓該用戶可以授權,用以下命令: 
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; 

18.撤銷用戶權限

REVOKE privilege ON databasename.tablename FROM 'username'@'host'; 
REVOKE SELECT ON *.* FROM 'pig'@'%'; 
假如你在給用戶'pig'@'%'授權的時候是這樣的(或類似的):
GRANT SELECT ON test.user TO 'pig'@'%'
 則在使用REVOKE SELECT ON *.* FROM 'pig'@'%'命令時,并不能撤銷該用戶對test數據庫中user表的SELECT 操作;
相反,如果授權使用的是
GRANT SELECT ON *.* TO 'pig'@'%';
則REVOKE SELECT ON test.user FROM 'pig'@'%'命令也不能撤銷該用戶對test數據庫中user表的Select 權限. 

19.查看用戶權限信息

SHOW GRANTS FOR 'pig'@'%'

20.修改密碼時提示錯誤

image.png
發生這一錯誤的原因是在變更了mysql.user表之后,沒有使用FLUSH PRIVILEGES命令來更新權限表
FLUSH PRIVILEGES;

21.mysql查詢時中文顯示亂碼問題

set names 'utf8';

22.mysql刷新

flush privileges

23.查看正在執行的SQL,終止進程

show processlist;
image.png
終止進程
kill 62;

24.臨時修改接受數據包大小上限

set global max_allowed_packet=2*1024*1024*10;
show VARIABLES like '%max_allowed_packet%';
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。