mysql簡單面試題

來源:互聯網
上載者:User

標籤:表名   def   表數   relay   vcc   韓國   複製   delete   utf-8   

drop,delete與truncate的區別:
優先順序: drop > truncate > delete
TRUNCATE 按行刪除並不把刪除操作記錄記入日誌儲存(不可恢複)
DELETE 全部刪除表內資料並可將刪除操作記錄在日誌中,可以加where字句,可應用於table和view
DROP 刪除整個表(結構和資料)再插入時自增長id又從1開始

複製基本原理流程
主:binlog線程——記錄下所有改變了資料庫資料的語句,放進master上的binlog中;
從:io線程——在使用start slave 之後,負責從master上拉取 binlog 內容,放進 自己的relay log中;
從:sql執行線程——執行relay log中的語句;

myisam與innodb的區別
1.InnoDB支援事物,而MyISAM不支援事物
2.InnoDB支援行級鎖,而MyISAM支援表級鎖
3.InnoDB支援MVCC, 而MyISAM不支援
4.InnoDB支援外鍵,而MyISAM不支援
5.InnoDB不支援全文索引,而MyISAM支援

myisam與innodb在select count(*)哪個更快,為什嗎?
myisam更快,因為myisam內部有一個計數器,可以直接調取

varchar與char的區別:
char是長度固定的,而varchar的長度是可以變化的
比如說儲存字串"abc":
char(10)表示儲存的字元將佔10個位元組(包括7個Null 字元),大於10個位元組時和varchar沒區別則都將截掉超出部分
varchar(10)表示只佔用3個位元組的長度,當儲存的字元小於或小於10時,都按實際長度儲存

innodb有redo和undo兩種日誌...


MySQL binlog幾種日誌的區別
Statement:每一條會修改資料的sql都會記錄在binlog中
Row:不記錄sql語句上下文相關資訊,僅儲存哪條記錄被修改
Mixedlevel: 是以上兩種level的混合使用
在一條 SQL 操作了多行資料時, statement 更節省空間的, row 更佔用空間。但是 row模式更可靠


當 cpu 飆升到 500%時,先用 top 命令觀察是不是 mysqld 佔用導致的,如果不是,找出佔用高的進程
如果是 mysqld 造成的看session情況,定位是不是有消耗資源的 sql 在運行找出消耗高的 sql並kill掉然後限制串連數或作出其他調整

mysqldump和xtranbackup的區別:
一般來說 100G 內的庫,可以考慮使用 mysqldump。輕巧靈活備份出來的檔案比較小,壓縮之後更小
100G 以上的庫,可以考慮用 xtranbackup。比 mysqldump 要快

表:
約束
自增長:auto_increment
非空:not null
預設值:default ‘xx‘
唯一:unique
指定字元集:charset //例:charset utf-8
主鍵:primary key


增:
create table students(
id int(15) auto_increment,
name varchar(10) not null,
sex varchar(3) default ‘‘,
age char(2),
address varchar(50),
phone char(11) not null unique,
primary key(id));
mysql> desc students;
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| id | int(15) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
| sex | varchar(3) | YES | | | |
| age | char(2) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
| phone | int(11) | NO | UNI | NULL | |
+---------+-------------+------+-----+---------+----------------+
mysql> insert into students (name,sex,age,address,phone) values(‘zhangsan‘,‘男‘,26,‘廣東省珠海市香洲區‘,13356789124);
mysql> insert into students (name,sex,age,address,phone) values(‘金正南‘,‘女‘,54,‘廣東省珠海市拱北區‘,15844551634);
mysql> insert into students values(‘‘,‘金三胖‘,‘男‘,58,‘朝鮮‘,14444444444);
mysql> insert into students values(‘‘,‘小泉純一郎‘,‘男‘,78,‘日本‘,14445554444);
mysql> insert into students values(‘‘,‘樸槿惠‘,‘女‘,60,‘韓國‘,14445554774);
mysql> select * from students;
+----+------------+------+------+-----------------------------+-------------+
| id | name | sex | age | address | phone |
+----+------------+------+------+-----------------------------+-------------+
| 1 | zhangsan | 男 | 26 | 廣東省珠海市香洲區 | 13356789124 |
| 2 | 金正南 | 女 | 54 | 廣東省珠海市拱北區 | 15844551634 |
| 3 | 金三胖 | 男 | 58 | 朝鮮 | 14444444444 |
| 4 | 小泉純? 男 | 78 | 日本 | 14445554444 |
| 5 | 樸槿惠 | 女 | 60 | 韓國 | 14445554774 |
+----+------------+------+------+-----------------------------+-------------+


insert into student (name,money,sex,phone) values (‘hk‘,10000,‘男‘,188);
insert into student values(‘‘,‘小明‘,100,‘‘,120);

刪:
drop table tablename;    #刪除整張表,操作會被記錄
truncate tablename;       #刪除整表資料,自增長id從頭再來,快速,從磁碟直接刪除,不可恢複
delete from student         #刪除整個表的資料,自增長繼續

查:
SELECT * from students limit 5;    #查詢前5條
SELECT id,name,sex,money,phone from students;    #指定查詢的欄位
SELECT * from students where sex=‘男‘ and money>100;     #多個條件,必須同時滿足
SELECT * from students where sex=‘男‘ or sex=‘未知‘ ;     #多個條件,有一個滿足即可
SELECT * from students where sex !=‘男‘;     # <>也是不等於
SELECT * FROM students where addr like ‘%東京%‘;    #模糊比對,%代表的是萬用字元,必須得用like
SELECT * from students a where stu_name like ‘姚_‘;    #_萬用字元表示任意一個單字元,姚字後面只能跟一個字
SELECT * from students ORDER BY money desc;    #order by xxx desc,根據哪個欄位排序,預設是升序,降序是desc,升序asc
select * from table order by id desc,name desc;      #多個欄位排序

改:
alter table oldtable rename newtable;       #改表名
alter table tablename modify name varchar(20);  #改表結構
alter table tablename change name newname varchar(20);  #改表結構
alter table tablename add age float after name;  #在name後面新增age欄位
update student set money=100;  #不指定條件,修改所有
update student set money=110 where name=‘hk‘;  #只改hk


備份庫:
mysqldump -u root -p mysql > ~/mysql.sql
還原庫:
mysql -u root -p web < ~/web.sql
備份表:
mysqldump -u root -p 資料庫名 表名 > xxx.sql
恢複表:
mysqldump -uroot -p 資料庫名 < xxx.sql

mysql簡單面試題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.