Mysql基礎語句

來源:互聯網
上載者:User

標籤:shel   toc   cut   commit   重複   不同   select   功能   長度   

mysql資料庫這個表示的是一個軟體,然後軟體裡面可以有好多database,這表示的就是庫也可以認為是執行個體,然後每一個實
例裡面有好多張表
sql語句結構
對錶裡面的資料進行操作動作:select insert update delete 查增改刪
對執行個體資料庫或是表進行操作動作:create drop alter show
進入資料庫對庫裡面的執行個體進行查看
show databases;
進入某個執行個體
use mysql
查看執行個體裡面的所有的表格
show tables;
查看當前所在哪個執行個體查看自己在哪裡資料庫
select database();
在系統中進行資料庫的操作,主要用於shell指令碼上的使用,直接在系統外面進行操作,而不需要登入到資料庫裡面進行操作
,主要使用者shell指令碼處,此處的e是execute的意思
mysql -e ‘show databases‘ -uroot -p123456
mysql -e ‘select * from mysql.user \G‘ -uroot -p123456
建立資料庫
create database zyg; 建立了一個名為zyg的資料庫名稱,資料庫取名稱不能帶特殊符號,如果非要取需要使用反引號進行
涵蓋起來,如下所示
create database `zyg-1`;

show create database zyg;能夠看到後台會帶上反引號

select now(),user(),database(); 查看系統目前時間,當前哪個使用者和當前所在的資料庫

刪除資料庫
drop database `zyg-1`;
刪除資料庫的檔案可以通過drop這個database來刪除資料庫,也可以通過查詢設定檔datadir這個檔案的目錄,然後進入這
個目錄,尋找到這個目錄所在檔案的位置來對這個資料庫進行刪除,這樣刪除也是可以的,當然反過來對這個資料庫進行備
份,我們也可以通過對這個檔案的進行備份
rm -rf /data/zyg-1

通過if exists來判斷庫是否存在,然後在做刪除,主要用於shell指令碼處的使用,比如說執行某個刪除資料庫的指令碼,當發
現這個資料庫不存在,那個執行的時候就會打斷執行過程,這個時候shell執行過程就中斷了,那麼通過if exists 這種條件
判斷語句來進行執行的時候就不會出現日誌,這樣就不會將指令碼進行打斷
drop database if exists `zyg-1`; 這樣執行指令碼的時候就不會出現錯誤的日誌資訊將指令碼打斷
反過來也是一樣的
create database if not exists HA ;

use HA 進入資料庫,然後在資料庫裡面建立表,如下所示
create table student (id int(20),name char(40),age int(10)); 建立一個表,這幾個值表示的是表的列,這裡表示這
個表有三列
int預設補全是11,char預設補全是1
drop table student; 刪除一個表
show tables; 查看這個庫中所有的表格
desc student; 查看錶結構
也可以使用下面的方式來查看錶結構情況
explain mysql.user;
show columns from mysql.user;
show fields from mysql.user;
show columns from mysql.user like ‘%user‘;
like表示的是模糊比對,下面的表示模糊比對的不同用法
user:完整匹配user展示
%user:以user結尾的
user%:以user開頭的
%user%:user可能會出現在任何地方


查看建表執行了哪些命令
show create table student \G 其實就是查看建表的一個過程
show create database HA \G 查看建庫的一個過程

create table student2(id int(20),name char(40),age int)ENGINE=MyISAM DEFAULT CHARSET=utf8; 可以通過建立表格
的時候指定儲存引擎和字元集
drop table student2; 刪除student2這個表格

performance_schema 有預讀功能,但是第一次進行讀寫的時候會消耗效能,所以一般都是建議關閉這個預讀功能
mysql -usystem -p123456 -A 進入資料庫的時候帶上-A 這個選項將預讀功能進行關閉

修改表使用alter
修改表名
文法:alter table 表名rename 新表名 這個表示的意思是將一個表改成另外一個名稱
alter table class rename classes; 把class這個表名改成classes這個名字
修改表中欄位名字
文法:alter table 表名 modify 要修改的欄位名 要修改的類型
alter table classes modify bj int(10);
alter table classes modify xh int(15);
將欄位原有的類型進行修改或是欄位長度進行修改,也可以將原有的int改成char,或是將原有的int(10)改成int(20)等

修改表中的欄位類型和欄位名稱
文法:alter table 表名 change 原欄位名 新欄位名 新欄位類型
alter table classes change xh xuehao char(10);將classes這個表裡面的xh列名改成學號,然後欄位類型也進行修改為
char(10)
註:change和modify的區別
change能夠對列名和列的類型變更
modify只能更改列的類型,不能更改列名

在表中添加欄位
文法:alter table 表名 add 欄位名 欄位類型;
alter table classes add sex enum(‘M‘,‘W‘); 在表中的列新增一個sex的列,記住這裡是新增列。這個新增列是預設新增
到最後一列的,如果需要將新增列不進行新增到最後一列,則使用下面的方式進行新增
alter table classes add uid int(10) first; 新增列到第一行
alter table classes add address char(40) after xuehao; 這個表示在學號的後面進行新增一列
在表中欄位進行儲存的順序可以隨意的進行儲存,這個沒有關係的,因為查詢展示出來的欄位可以不按照表裡面的儲存順序
進行展示,這個展示完全是可以根據select查詢的順序來進行展示的
select stname,sex,age from classes;這樣展示的話就是完全按照這個方式進行展示的,所以不用糾結於原表格儲存體的一
個順序的

刪除表中欄位
文法:alter table 表名 drop 欄位名;
alter table classes drop address; 刪除classes表中的address欄位
drop 使用到刪資料庫,表,欄位等等

針對錶裡面資料進行操作
插入欄位的操作
文法:insert into 表名 values (欄位1,欄位2,欄位3);
insert into classes values(2,1,‘zhangsan‘,‘M‘); 把下面的欄位進行插入到classes表中,記住英文字母使用‘‘進行包
含,這個表示的是將所有的列都要有數值才能夠進行插入資料進表格裡面的,這樣就需要將所有的數值都填滿,直接就導致
了有的時候會有不合理的地方
insert into classes(bj,xs,sex) values(5,‘wangwu‘,‘M‘); 指定哪幾列進行插入進表格中
這樣沒有指定的列則是按照預設的形式進行顯示,如果預設的是null,那麼顯示的時候如果沒有指定,那麼就顯示的是null

查詢
select * from classes;這個是對整張表進行查詢
select sx,sname from classes;這個是對單個列進行查詢的
select name from classes;
這個查詢的順序可以自由組合,任意組合進行顯示想要的查詢結果,這個查詢出來顯示結果和表中儲存的順序沒有關係。

刪除
文法:delete from 表名 條件
delete from classes; 這個表示將classes這個表裡面的所有資料進行刪除,直接執行到表裡面。
delete from classes where xs=‘lisi‘; 這個表示將classes表中xs欄位是lisi的這條記錄進行刪除
mysql在執行delete的時候預設是直接進行刪除的,不會出現一個commit提交在將表中的資料進行刪除的,當然自動認可功能
是可以直接進行關閉
where語句修飾限定前麵條件的範圍
delete from classes where age is null;刪除年齡為空白的列
一般都是先通過限定條件進行查詢出來,然後查看查詢的結果是否是需要進行刪除的項,如果查詢結果是需要進行刪除的項
,那麼在通過將查詢的結果進行刪除就行,這樣能夠保證刪除這種危險的動作不會誤刪除。
set autocommit=0 關閉自動認可功能,預設是開啟的,需要將這個功能進行關閉才能設定成不自動進行提交
比如說
set autocommit=0;
delete from classes where id=1;
select * from classes;
通過查詢中可以看到id=1的欄位確實被刪除了,但是可以通過rollback這個命令將刪除的東西進行找回來
rollback;
select * from classes; 進行查看可以發現刪除的東西又回來了。
如果確定了可以進行刪除則
commit;
這樣可以發現即使通過rollback也不能將資料進行找回來了,資料是直接全部丟失了。

更新記錄
文法:update from 表名 條件
update classes set bj=9; 這個表示將classes表中的bj這個列的所有資料都改成9;
update classes set bj=10 where xs=‘zhangsan‘; 這個表示將classes中的xs=zhangsan的這行資料中的bj改成10;
update classes set bj=10,age=23 where xs=‘zhangsan‘; 這個表示一次性同時更改兩個列的資料。
update classes set uid=3,sex=‘W‘ where xs=‘lisi‘; 通過set然後用,進行隔開,一次性對錶中的兩個列進行修改的結果

查詢
select name,age from classes; 查詢的時候需要看到什麼就直接定義好需要查詢的選項。
去重複查詢DISTINCT
select distinct uid,xs from classes where sex=‘M‘;
使用AND 和 OR 進行多條件查詢
select * from classes where uid>4 and uid<6; 表示查詢uid=5的行,這個表示全部都滿足的查進行查詢出來
select * from classes where uid>4 or uid>6; 這個表示滿足其中一個條件的就查詢出來

mysql預設不區分大小寫
select * from classes where xs=‘FF‘; 通過查詢可以發現mysql預設是不區分大小寫一種查詢;
通過是用binary 這個二進位來進行處理,這樣就能夠進行區分大小寫了,將字元直接轉換成ASCII編碼來進行處理,這樣得
出的這個編碼是不一樣的,這樣就能夠區分大小寫
select * from classes where binary xs=‘FF‘;
select * from classes where binary xs=‘ff‘;
上面兩個查詢的結果是不一樣的,主要是通過binary這個對查詢的條件進行了裝換

mysql查詢排序
文法:select distinct 欄位1,欄位2 from 表名 order by 欄位名;
預設為升序 asc
select * from classes order by bj; 查詢出來的結果通過按照bj升序進行排序的方式進行排序,從小到大進行排序
select * from classes order by bj desc; 查詢出來的結果通過降序的方式進行排序,從大到小進行排序

mysql命令協助
文法:help + 下級的關鍵字

help show
help select
help delete
等等等。。。。

 

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.