下文主要給大家?guī)鞰ySQL的簡單入門了解,希望這些文字能夠帶給大家實際用處,這也是我編輯MySQL的簡單入門了解這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。
作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計、成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價值。
結(jié)構(gòu)化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);同時也是數(shù)據(jù)庫腳本文件的擴展名。
從上可以看出我們數(shù)據(jù)庫相關(guān)工作職位大概兩種:DBD和DBA
dba是數(shù)據(jù)庫管理員database administrator
dbd是數(shù)據(jù)庫開發(fā)人員database developer
SQL 是1986年10 月由美國國家標(biāo)準(zhǔn)局(ANSI)通過的數(shù)據(jù)庫語言美國標(biāo)準(zhǔn),接著,國際標(biāo)準(zhǔn)化組織(ISO)頒布了SQL正式國際標(biāo)準(zhǔn)。1989年4月,ISO提出了具有完整性特征的SQL89標(biāo)準(zhǔn),1992年11月又公布了SQL92標(biāo)準(zhǔn),在此標(biāo)準(zhǔn)中,把數(shù)據(jù)庫分為三個級別:基本集、標(biāo)準(zhǔn)集和完全集。
至于什么基本集,標(biāo)準(zhǔn)集我們不用管,看看就行,牽扯到數(shù)據(jù)庫原理和數(shù)學(xué)算法里面了
結(jié)構(gòu)化查詢語言包含6個部分:
其語句,也稱為“數(shù)據(jù)檢索語句”,用以從表中獲得數(shù)據(jù),確定數(shù)據(jù)怎樣在應(yīng)用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。
其語句包括動詞INSERT,UPDATE和DELETE。它們分別用于添加,修改和刪除表中的行。也稱為動作查詢語言。
它的語句能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
它的語句通過GRANT或REVOKE獲得許可,確定單個用戶和用戶組對數(shù)據(jù)庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問。
其語句包括動詞CREATE和DROP。在數(shù)據(jù)庫中創(chuàng)建新表或刪除表(CREAT TABLE 或 DROP TABLE);為表加入索引等。DDL包括許多與人數(shù)據(jù)庫目錄中獲得數(shù)據(jù)有關(guān)的保留字。它也是動作查詢的一部分。
它的語句,像DECLARE CURSOR,F(xiàn)ETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨行的操作。
(1)查看數(shù)據(jù)庫:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys |
注:
1:information_schema這數(shù)據(jù)庫保存了MySQL云服務(wù)器所有數(shù)據(jù)庫的信息。如數(shù)據(jù)庫名,數(shù)據(jù)庫的表,表欄的數(shù)據(jù)類型不訪問權(quán)限等。 [?skim?]
2:performance_schema 這是MySQL5.5新增的一個性能優(yōu)化的引擎:命名PERFORMANCE_SCHEMA [p??f?:m?ns]
主要用于收集數(shù)據(jù)庫云服務(wù)器性能參數(shù)。MySQL用戶是不能創(chuàng)建存儲引擎為PERFORMANCE_SCHEMA的表
3:mysql庫是系統(tǒng)庫,里面保存有賬戶信息,權(quán)限信息等。
4:mysql5.7增加了sys 系統(tǒng)數(shù)據(jù)庫,通過這個庫可以快速的了解系統(tǒng)的元數(shù)據(jù)信息
元數(shù)據(jù)是關(guān)于數(shù)據(jù)信息的數(shù)據(jù),如數(shù)據(jù)庫名或表名,列的數(shù)據(jù)類型,或訪問權(quán)限等。
mysql> show databases \G #以行的方式顯示 *************************** 1. row *************************** Database: information_schema *************************** 2. row *************************** Database: mysql *************************** 3. row *************************** Database: performance_schema
[root@server01 ~]# mysql -e 'show databases' -usystem -p123456 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+
mysql –e 后面我們接SQL語句,直接終端運行,后面寫sql 相關(guān)shell可以用到
[root@xuegod63 ~]# mysqlshow -uroot -p123456 +--------------------+ | Databases | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+
(2)創(chuàng)建數(shù)據(jù)庫:
語法:create database 數(shù)據(jù)庫名;
創(chuàng)建數(shù)據(jù)庫注意事項:
1) 在文件系統(tǒng)中,MySQL的數(shù)據(jù)存儲區(qū)將以目錄方式表示MySQL數(shù)據(jù)庫。因此,上面命令中的數(shù)據(jù)庫名字必須與操作系統(tǒng)的約束的目錄名字一致。例如不允許文件和目錄名中有\(zhòng),/,:,*,?,”,<,>,|這些符號,在MySQL數(shù)據(jù)庫名字中這些字母會被自動刪除。<遵從目錄的約束>
2) 數(shù)據(jù)庫的名字不能超過64個字符,包含特殊字符的名字或者是全部由數(shù)字或保留字組成的名字必須用單引號``包起來。
3) 數(shù)據(jù)庫不能重名。
mysql> create database HA; #創(chuàng)建一個名為HA的數(shù)據(jù)庫 mysql> create database `HA-test`; [root@server01 ~]# ls /var/lib/mysql/ #查看數(shù)據(jù)庫存放目錄
選擇要操作的數(shù)據(jù)庫:
使用USE語句將會選擇一個數(shù)據(jù)庫成為當(dāng)前數(shù)據(jù)庫。后面的操作默認(rèn)都在被選擇的數(shù)據(jù)庫中操作。
mysql> use HA-test; Database changed
查看自己所處的位置及默認(rèn)所在的位置
mysql> select database(); +------------+ | database() | +------------+ | HA-test | +------------+ 1 row in set (0.00 sec)
默認(rèn)
mysql> select database(); +------------+ | database() | +------------+ | NULL | +------------+ 1 row in set (0.00 sec)
Null意味著沒有選擇數(shù)據(jù)庫
Null在數(shù)據(jù)庫中表示 不知道的數(shù)據(jù),主要有3種意思:
1)知道數(shù)據(jù)存在,但不知道具體值;
2)不知道數(shù)據(jù)是否存在;
3)數(shù)據(jù)不存在。
在命令行選擇默認(rèn)的數(shù)據(jù)庫
mysql -uroot -p123456 HA mysql> select now(),user(),database(); +---------------------+------------------+------------+ | now() | user() | database() | +---------------------+------------------+------------+ | 2015-10-06 10:52:48 | system@localhost | HA | +---------------------+------------------+------------+
刪除數(shù)據(jù)庫:
mysql> drop database `HA-test`;
刪除沒有任何提示,要慎重操作
方法2:直接到數(shù)據(jù)庫存放目錄移出就行
cd /usr/local/mysql/data/ mv HA@002dtest /tmp mysql> show databases;
使用IF EXISTS 子句以避免刪除不存在的數(shù)據(jù)庫時出現(xiàn)的MySQL錯誤信息
mysql> drop database if exists `HA-test`;
IF EXISTS:如果存在
同理我們創(chuàng)建數(shù)據(jù)庫時也可以使用
mysql> create database if not exists HA;
(1)創(chuàng)建表:
語法:create table 表名 (字段名 類型, 字段名 類型, 字段名 類型);
mysql> create table student(id int(20),name char(40),age int);
(2)查看表相關(guān)信息:
查看表:
要進(jìn)入到數(shù)據(jù)庫再查看
mysql> use mysql; Database changed mysql> show tables; +--------------+ | Tables_in_HA | +--------------+ | student |
(3)查看表的結(jié)構(gòu):
Describe
mysql> desc student; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | id | int(20) | YES | | NULL | | | name | char(40) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> explain mysql.user; mysql> show columns from mysql.user; mysql> show fields from mysql.user; mysql> show columns from mysql.user like '%user';
會一種常用的就行
(4)查看創(chuàng)建表執(zhí)行了哪些命令:
mysql> show create table student \G *************************** 1. row *************************** Table: student Create Table: CREATE TABLE `student` ( `id` int(20) DEFAULT NULL, `name` char(40) DEFAULT NULL, `age` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
mysql> create table student2(id int(20),name char(40),age int)ENGINE=MyISAM DEFAULT CHARSET=utf8; 可以指定表的默認(rèn)存儲引擎和字符集
這兩個是默認(rèn)存儲引擎和默認(rèn)字符集
(5)刪除表:
mysql> drop table student2;
(6)禁止預(yù)讀表信息:
沒有禁止前的提示
mysql> use performance_schema; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
登錄的時候加上-A參數(shù)
mysql -uroot –p123456 -A
(7)修改表名稱ALTER:
語法:alter table 表名 rename 新表名;
mysql> use HA; mysql> alter table student rename students; #studen表名修改為students
mysql> show tables; +--------------+ | Tables_in_HA | +--------------+ | students | +--------------+
(8)修改表中的字段類型:
語法:alter table 表名 modify 要修改的字段名 要修改的類型;
mysql> desc students; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | id | int(20) | YES | | NULL | | | name | char(40) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-------+----------+------+-----+---------+-------+
mysql> alter table students modify id int(10);
(9)修改表中的字段類型和字段名稱:
語法:alter table 表名 change 原字段名 新字段名 新字段類型;
查了一下官方文檔,發(fā)現(xiàn)mysql還真的不支持同時修改多個字段,
MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
來源:http://dev.mysql.com/doc/refman/5.5/en/alter-table.html
mysql> desc students; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | id | int(10) | YES | | NULL | | | name | char(40) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-------+----------+------+-----+---------+-------+
mysql> alter table students change name stname char(20);
注:CHANGE 和MODIFY的區(qū)別:
CHANGE 對列進(jìn)行重命名和更改列的類型,需給定舊的列名稱和新的列名稱、當(dāng)前的類型。 MODIFY 可以改變列的類型,此時不需要重命名(不需給定新的列名稱)
(10)在表中添加字段:
語法:alter table 表名 add 字段名 字段類型;
mysql> alter table students add sex enum('M','W');
(11)指定位置添加字段:
在第一列添加一個字段:
mysql> alter table students add uid int(10) first;
在age后面添加一個address字段:
mysql> alter table students add address char(40) after age;
(12)刪除表中字段:
語法:alter table 表名 drop 字段名 ;
mysql> alter table students drop address;
(1)插入字段<記錄>INSERT:
語法:insert into 表名values (字段值1,字段值2, 字段值3);
mysql> create table student(id int(20),name char(40),age int); mysql> insert into student values(1,'zhangs',21);
插入記錄時要對應(yīng)相對的類型
mysql> insert into student values(2,'lis',24),(3,'wange',26);
同時插入多條,使用,分開
mysql> insert into student (id,name)values(4,'hangl');
指定字段插入
(2)查詢表中記錄:
語法:select * from 表名稱;
mysql> select * from student; *表示所有 +------+--------+------+ | id | name | age | +------+--------+------+ | 1 | zhangs | 21 | | 2 | lis | 24 | | 3 | wange | 26 | | 4 | hangl | NULL | +------+--------+------+
當(dāng)字段比較多的時候我們也可以使用\G
mysql> select * from student\G
只查詢表中某個字段的內(nèi)容:
mysql> select name from student; +--------+ | name | +--------+ | zhangs | | lis | | wange | | hangl |
mysql> select id,name from student; +------+--------+ | id | name | +------+--------+ | 1 | zhangs | | 2 | lis | | 3 | wange | | 4 | hangl | +------+--------+
(3)查看別的數(shù)據(jù)庫的表或者不在本數(shù)據(jù)庫上進(jìn)行查看:
語法:SELECT 字段 FROM 數(shù)據(jù)庫名.表名;
mysql> select *from HA.student; 查看某個數(shù)據(jù)庫下指定的表內(nèi)容,數(shù)據(jù)庫名.表名 +------+--------+------+ | id | name | age | +------+--------+------+ | 1 | zhangs | 21 | | 2 | lis | 24 | | 3 | wange | 26 | | 4 | hangl | NULL | +------+--------+------+
這樣等效于先use 數(shù)據(jù)庫,然后查看
(4)刪除記錄:
刪除id為3的行
mysql> delete from students where id=3;
刪除age為空的行
mysql> delete from students where age is null;
(5)更新記錄
mysql> update students set sex='M' where id=2; mysql> update students set id=2; 所有的都變?yōu)? update students set stname='zhangsan',age=21 where uid=1; 同時更新多個字段時候用,號隔開
語法:select 字段名1,字段名2 from 表名 [where 條件];
(1)查詢STUDENTS表中的NAME,AGE
mysql> select name,age from student; +--------+------+ | name | age | +--------+------+ | zhangs | 21 | | lis | 24 | | jk | 24 | | lo | 26 | | io | 25 | | jk | 24 | +--------+------+
(2)去重復(fù)查詢distinct
mysql> select distinct name,age from student; +--------+------+ | name | age | +--------+------+ | zhangs | 21 | | lis | 24 | | jk | 24 | | lo | 26 | | io | 25 |
mysql> select distinct id,name,age from student where id=3; +------+------+------+ | id | name | age | +------+------+------+ | 3 | jk | 24 |
select distinct from students; mysql的distinct可以對使用
(3)使用AND和OR進(jìn)行多條件查詢
or和and 同時存在時,先算and的兩邊值,邏輯與先執(zhí)行
mysql> select id,name,age from student where id>3 and age>25; +------+------+------+ | id | name | age | +------+------+------+ | 5 | lo | 26 | +------+------+------+
mysql> select id,name,age from student where id>3 or age>25; +------+------+------+ | id | name | age | +------+------+------+ | 5 | lo | 26 | | 6 | io | 25 | +------+------+------+
select * from students where stname='zhangsan' and (age=21 or age=24);
注意and和or都是用的時候的邏輯關(guān)系
(4)MYSQL區(qū)分大小寫查詢:
MySQL查詢默認(rèn)是不區(qū)分大小寫的
mysql> select name from student where name='jk'; +------+ | name | +------+ | jk | | jk | | JK | +------+
解決
mysql> select * from student where binary name='jk'; [?ba?n?ri] +------+------+------+------+ | id | name | age | sex | +------+------+------+------+ | 3 | jk | 24 | W | | 3 | jk | 24 | W | +------+------+------+------+
BINARY是類型轉(zhuǎn)換運算符,它用來強制它后面的字符串為一個二進(jìn)制字符串,可以理解為在字符串比較的時候區(qū)分大小寫。
(5)MYSQL查詢排序:
語法:select distinct 字段1,字段2 from 表名order by 字段名;
默認(rèn)為升序 asc
mysql> select distinct id from student order by id asc; +------+ | id | +------+ | 2 | | 3 | | 5 | | 6 | | 8 | +------+
mysql> select distinct id from student order by id desc; +------+ | id | +------+ | 8 | | 6 | | 5 | | 3 | | 2 | +------+
help
mysql> help show;
會告訴我們很多使用方法和信息
mysql> help select;
對于以上關(guān)于MySQL的簡單入門了解,大家是不是覺得非常有幫助。如果需要了解更多內(nèi)容,請繼續(xù)關(guān)注我們的行業(yè)資訊,相信你會喜歡上這些內(nèi)容的。
當(dāng)前名稱:MySQL的簡單入門了解
網(wǎng)頁路徑:http://aaarwkj.com/article44/peehhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、動態(tài)網(wǎng)站、網(wǎng)站收錄、自適應(yīng)網(wǎng)站、全網(wǎng)營銷推廣、虛擬主機
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)