刪除使用者:drop user jack@'%'; (drop比delete刪除的優勢在於drop可以刪除使用者的許可權,更加徹底)
更改使用者名稱:rename user jack to jacknew; (使用者的都存在與user表中,更改名稱,許可權不變)
更改使用者密碼:update mysql.user set password=password('123456') where user='jack';
重新整理授權表:flush privileges;
如果對root設定了密碼,但是忘記了密碼:
mysqld_safe --skip-grant-tables &
跳過授權表,再免密登陸,更改root的密碼
將同樣的許可權同時授權於多個使用者,示例如下
grant select on hellodb.* to zsy@localhost,zsythink@localhost;
只對某張表的某個字段授權,可以使用如下語句
grant select (name,age) on zsythink.students to zsy@localhost;
只想將test函式的許可權授予zsy用
grant execute on function zsythink.test to zsy@'192.168.%.%';
使用procedure關鍵字,指明是儲存過程
grant execute on procedure zsythink.test to zsy@'192.168.%.%';
如果使用者有可能會跨越不安全的網路連線到資料庫,我們可以強制使用者使用ssl建立會話
grant usage on . to 'zsy'@'222.222.222.222' require ssl;
如果想要取消上述的ssl連線限制
grant usage on . to 'zsy'@'222.222.222.222' require none;
管理員還可以通過如下選項對使用者進行一些其他的限制
max_queries_per_hour:限制使用者每小時執行的查詢語句數量;
max_updates_per_hour:限制使用者每小時執行的更新語句數量;
max_connections_per_hour:限制使用者每小時連線資料庫的次數;
max_user_connections:限制使用者使用當前賬號同時連線伺服器的連線數量;
無限制為0
檢視使用者被授予的許可權:show grants for wang@'192.168.194.%'\g;
檢視使用者對庫有哪些許可權:select * from mysql.db where db='test'\g;
**使用者的許可權:revoke update on jack.test from wang@'192.168.194.%' ;
建立資料庫比存在就建立:create database if not exists testdb default character set utf8;
檢視可用字符集:show charactre set;
檢視某資料庫的字元設定:use testdb;status; *****====可檢視到伺服器和當前庫及當前用的資訊
檢視庫對應的許可權:select * from mysql.db where db="testdb"\g;
檢視排序方式:show collation;
修改字符集和字元排序規則是二選一的
修改資料庫的字符集:alter database testdb character set utf8;
設定庫的預設字符集:alter database testdb default character set utf8;
預設在此庫下建立的表都會繼承此字符集
建立表並檢視字符集:create table w(name varchar(15),age int);
檢視庫中所有表的資訊:show table status\g;
檢視單個表的資訊:show table status where name="user"\g;
刪除資料庫: drop database if exists testdb;
檢視建立資料庫和建立表的語句:
show create database testdb\g;
show create table w\g;
建立表結構:
create table if not exists wang.w(
id int primary key auto_increment,
name varchar(50) not null,
age int(10),
address varchar(150) not null,
phone bigint(11) unique,
schoolname varchar(50) not null,
gender enum('f','m') character set utf8 default 'm',
hobby varchar(200) character set utf8
) engine=innodb charset=utf8 auto_increment=1;
如果下sql語句,最好加上if not exists ,避免重複生成表,覆蓋資料
根據現有表,建立新錶(會將之前資料賦值過來):
create table h select 字段 from w;
只要結構不要資料:
create table h like w;
更改表名:alter table h rename as www;
刪除表中字段:alter table h del 字段;
新增表字段:alter table h add 字段 屬性;
更改欄位名和屬性:alter table h change 欄位名 欄位名 屬性;
更改欄位的屬性: alter table h modify 欄位名 屬性;
刪除表中字段:alter table h drop 欄位名;
為了查詢的效率,通常會對查詢字段建立索引,具有唯一標識性
建立索引:create index name on test_tb(name);
查詢索引:show index from test_tb;
刪除索引:alter table test_tb drop index name;
建立聯合索引:create index name_age on test_tb(name,age);
模糊查詢:show index from w where key_name like '%name%'\g
由於資料庫長時間執行,頻繁查詢,會導致索引損壞,可以修復索引:
repair table test_tb quick;
注意:innodb儲存引擎不支援repair修復
建立檢視根據需求顯示資料:
create view testvi as select w.name,w.age,l.hobby from w,l where w.id=l.uid;
檢視檢視:
show tables;
檢視檢視資料:
select * from testvi;
刪除檢視:
drop view if exists testvi;
sql_mode最常用的幾種重要模式如下:
ansi:寬鬆模式,對插入資料進行校驗,如果不符合定義型別或長度,對資料截斷儲存,報警告資訊,預設應該就是這種。
strict_trans_tables:只在事務型表中進行嚴格限制。
strict_all_tables:對所有表進行嚴格限制。
traditional :嚴格模式,當插入資料時,進行資料的嚴格校驗,錯誤的資料將不能被插入,報error錯誤。用於事物時,會進行事物的回滾,官方提醒我們說,如果我們使用的儲存引擎是非事務型的儲存引擎(比如myisam),當我們使用這種模式時, 如果執行非法的插入或更新資料操作時,可能會出現部分完成的情況。
查詢:select * from w where id > 1 order by age desc limit 1\g (desc降序排列)
更新:update w set phone="13567892345" where id=3;
刪除:delete from w;
mysql儲存過程簡單用法
show procedure status 檢視所有儲存過程 簡單儲存過程 先將結束符改成 delimiter create procedure query page int beginselect from class where id page end 將結束符改回 delimiter 呼叫儲存...
MySQL臨時表的簡單用法
當工作在非常大的表上時,你可能偶爾需要執行很多查詢獲得乙個大量資料的小的子集,不是對整個表執行這些查詢,而是讓mysql每次找出所需的少數記錄,將記錄選擇到乙個臨時表可能更快些,然後在這些表執行查詢。建立臨時表很容易,給正常的create table語句加上temporary關鍵字 create t...
MySQL臨時表的簡單用法
當工作在非常大的表上時,你可能偶爾需要執行很多查詢獲得乙個大量資料的小的子集,不是對整個表執行這些查詢,而是讓mysql每次找出所需的少數記錄,將記錄選擇到乙個臨時表可能更快些,然後在這些表執行查詢。建立臨時表很容易,給正常的create table語句加上temporary關鍵字 create t...