您好,登錄后才能下訂單哦!
下文主要給大家帶來MySQL的簡單入門了解,希望這些文字能夠帶給大家實際用處,這也是我編輯MySQL的簡單入門了解這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。
結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統;同時也是數據庫腳本文件的擴展名。
從上可以看出我們數據庫相關工作職位大概兩種:DBD和DBA
dba是數據庫管理員database administrator
dbd是數據庫開發人員database developer
SQL 是1986年10 月由美國國家標準局(ANSI)通過的數據庫語言美國標準,接著,國際標準化組織(ISO)頒布了SQL正式國際標準。1989年4月,ISO提出了具有完整性特征的SQL89標準,1992年11月又公布了SQL92標準,在此標準中,把數據庫分為三個級別:基本集、標準集和完全集。
至于什么基本集,標準集我們不用管,看看就行,牽扯到數據庫原理和數學算法里面了
結構化查詢語言包含6個部分:
其語句,也稱為“數據檢索語句”,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。
其語句包括動詞INSERT,UPDATE和DELETE。它們分別用于添加,修改和刪除表中的行。也稱為動作查詢語言。
它的語句能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
它的語句通過GRANT或REVOKE獲得許可,確定單個用戶和用戶組對數據庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問。
其語句包括動詞CREATE和DROP。在數據庫中創建新表或刪除表(CREAT TABLE 或 DROP TABLE);為表加入索引等。DDL包括許多與人數據庫目錄中獲得數據有關的保留字。它也是動作查詢的一部分。
它的語句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨行的操作。
(1)查看數據庫:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys |
注:
1:information_schema這數據庫保存了MySQL云服務器所有數據庫的信息。如數據庫名,數據庫的表,表欄的數據類型不訪問權限等。 [?skim?]
2:performance_schema 這是MySQL5.5新增的一個性能優化的引擎:命名PERFORMANCE_SCHEMA [p??f?:m?ns]
主要用于收集數據庫云服務器性能參數。MySQL用戶是不能創建存儲引擎為PERFORMANCE_SCHEMA的表
3:mysql庫是系統庫,里面保存有賬戶信息,權限信息等。
4:mysql5.7增加了sys 系統數據庫,通過這個庫可以快速的了解系統的元數據信息
元數據是關于數據信息的數據,如數據庫名或表名,列的數據類型,或訪問權限等。
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 相關shell可以用到
[root@xuegod63 ~]# mysqlshow -uroot -p123456 +--------------------+ | Databases | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+
(2)創建數據庫:
語法:create database 數據庫名;
創建數據庫注意事項:
1) 在文件系統中,MySQL的數據存儲區將以目錄方式表示MySQL數據庫。因此,上面命令中的數據庫名字必須與操作系統的約束的目錄名字一致。例如不允許文件和目錄名中有\,/,:,*,?,”,<,>,|這些符號,在MySQL數據庫名字中這些字母會被自動刪除。<遵從目錄的約束>
2) 數據庫的名字不能超過64個字符,包含特殊字符的名字或者是全部由數字或保留字組成的名字必須用單引號``包起來。
3) 數據庫不能重名。
mysql> create database HA; #創建一個名為HA的數據庫 mysql> create database `HA-test`; [root@server01 ~]# ls /var/lib/mysql/ #查看數據庫存放目錄
選擇要操作的數據庫:
使用USE語句將會選擇一個數據庫成為當前數據庫。后面的操作默認都在被選擇的數據庫中操作。
mysql> use HA-test; Database changed
查看自己所處的位置及默認所在的位置
mysql> select database(); +------------+ | database() | +------------+ | HA-test | +------------+ 1 row in set (0.00 sec)
默認
mysql> select database(); +------------+ | database() | +------------+ | NULL | +------------+ 1 row in set (0.00 sec)
Null意味著沒有選擇數據庫
Null在數據庫中表示 不知道的數據,主要有3種意思:
1)知道數據存在,但不知道具體值;
2)不知道數據是否存在;
3)數據不存在。
在命令行選擇默認的數據庫
mysql -uroot -p123456 HA mysql> select now(),user(),database(); +---------------------+------------------+------------+ | now() | user() | database() | +---------------------+------------------+------------+ | 2015-10-06 10:52:48 | system@localhost | HA | +---------------------+------------------+------------+
刪除數據庫:
mysql> drop database `HA-test`;
刪除沒有任何提示,要慎重操作
方法2:直接到數據庫存放目錄移出就行
cd /usr/local/mysql/data/ mv HA@002dtest /tmp mysql> show databases;
使用IF EXISTS 子句以避免刪除不存在的數據庫時出現的MySQL錯誤信息
mysql> drop database if exists `HA-test`;
IF EXISTS:如果存在
同理我們創建數據庫時也可以使用
mysql> create database if not exists HA;
(1)創建表:
語法:create table 表名 (字段名 類型, 字段名 類型, 字段名 類型);
mysql> create table student(id int(20),name char(40),age int);
(2)查看表相關信息:
查看表:
要進入到數據庫再查看
mysql> use mysql; Database changed mysql> show tables; +--------------+ | Tables_in_HA | +--------------+ | student |
(3)查看表的結構:
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)查看創建表執行了哪些命令:
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; 可以指定表的默認存儲引擎和字符集
這兩個是默認存儲引擎和默認字符集
(5)刪除表:
mysql> drop table student2;
(6)禁止預讀表信息:
沒有禁止前的提示
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參數
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 原字段名 新字段名 新字段類型;
查了一下官方文檔,發現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的區別:
CHANGE 對列進行重命名和更改列的類型,需給定舊的列名稱和新的列名稱、當前的類型。 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);
插入記錄時要對應相對的類型
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 | +------+--------+------+
當字段比較多的時候我們也可以使用\G
mysql> select * from student\G
只查詢表中某個字段的內容:
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)查看別的數據庫的表或者不在本數據庫上進行查看:
語法:SELECT 字段 FROM 數據庫名.表名;
mysql> select *from HA.student; 查看某個數據庫下指定的表內容,數據庫名.表名 +------+--------+------+ | id | name | age | +------+--------+------+ | 1 | zhangs | 21 | | 2 | lis | 24 | | 3 | wange | 26 | | 4 | hangl | NULL | +------+--------+------+
這樣等效于先use 數據庫,然后查看
(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; 所有的都變為2 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)去重復查詢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進行多條件查詢
or和and 同時存在時,先算and的兩邊值,邏輯與先執行
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都是用的時候的邏輯關系
(4)MYSQL區分大小寫查詢:
MySQL查詢默認是不區分大小寫的
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是類型轉換運算符,它用來強制它后面的字符串為一個二進制字符串,可以理解為在字符串比較的時候區分大小寫。
(5)MYSQL查詢排序:
語法:select distinct 字段1,字段2 from 表名order by 字段名;
默認為升序 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;
對于以上關于MySQL的簡單入門了解,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。