MySQL的基本操做

MySQL基本操做

mysql命令  

mysql -h host_name -u user_name –ppassword
h:當鏈接MySQL服務器不在同臺主機時,填寫主機名或IP地址
u:登陸MySQL的用戶名
p:登陸MySQL的密碼

————————————————
經常使用命令: mysql

選定默認數據庫:use dbname;
顯示全部數據庫:show databases;
顯示默認數據庫中全部表:show tables;
放棄正在輸入的命令:\c
顯示命令清單:\h
退出mysql程序:\q
查看MySQL服務器狀態信息:\s

————————————————
SQL語法組成 sql

DML( Data Manipulation Language數據操做語言)
    ——查詢、插入、刪除和修改數據庫中的數據;
    ——SELECT、INSERT、 UPDATE 、DELETE等;
DCL( Data Control Language數據控制語言)
——用來控制存取許可、存取權限等;
——GRANT、REVOKE 等;
DDL( Data Definition Language數據定義語言)
——用來創建數據庫、數據庫對象和定義其列
——CREATE TABLE 、DROP TABLE、ALTER TABLE 等
功能函數
——日期函數、數學函數、字符函數、系統函數等

———————————————— 數據庫

MySQL中使用SQL語言幾點說明: express

屬於一個SQL語句,使用分號(;)結尾,不然mysql認爲語句沒有輸入完。
箭頭(->)表明SQL語句沒有輸入完
取消SQL語句使用(\c)
SQL語句關鍵字和函數名不區分大小寫(Linux區分,Windows不區分)
使用函數時,函數名和後面的括號之間不能有空格

————————————————
創建數據庫操做: 服務器

語法:create  database   數據庫名
敘述:建立一個具備指定名稱的數據庫。若是要建立的數據庫已經存在,或者沒有建立的適當權限,則此語句失敗。
例:創建一個student庫。
 mysql> create database student;

————————————————
創建表操做: ide

語法:create table 表名(
列名1  列類型  [<列的完整性約束>],
列名2  列類型  [<列的完整性約束>], 
    ... ...   );
敘  述:在當前數據庫下新建立一個數據表。
列類型:表示該列的數據類型。
例:
創建一個表school,其由兩列組成,第一列屬性爲非空,並作爲主鍵,並自增
    create table school(
    school_id  int(10) not null auto_increment primary key,
    school_name varchar(20)     
    );

————————————————
常見完整性約束: 函數

PRIMARY  KEY     主碼約束(主鍵)
UNIQUE      惟一性約束
NOT  NULL    非空值約束   
AUTO_INCREMENT 用於整數列默認自增1
UNSIGNED    無符號整數
DEFAULT default_value  默認值約束
DEFAULT cur_timestamp 建立新記錄時默認保存當前時間(僅適用timestamp數據列)
ON UPDATE cur_timestamp 修改記錄時默認保存當前時間(僅適用timestamp數據列)
CHARACTER SET name 指定字符集(僅適用字符串)

————————————————
在建立一個新的MySQL數據表時, code

能夠爲它設置一個類型,其中最重要的3種類型是
MyISAM:成熟、穩定和易於管理
InnoDB:加入事物、數據行級鎖定機制、外鍵約束條件、崩潰恢復等新功能
HEAP:只存在於內存中,可作臨時表
create table tmp(…)ENGINE=MyISAM

———————————————— orm

數據表之間的關聯/引用關係是依靠具體的主鍵(primary key)和外鍵(foreign key)創建起來的。
主鍵:幫助MySQL以最快的速度把一條特色的數據記錄的位置肯定下來。
主鍵必須是惟一的
主鍵應該是緊湊的,所以整數類型比較適合
外鍵:引用另一個數據表的某條記錄。
外鍵列類型儘量與主鍵列類型保持一致
外鍵列應該加上NOT NULL

————————————————對象

主鍵
create table student(
 sid int not null auto_increment,
 name varchar(20) not null,
 primary key(sid)
);

外鍵(自動檢查外鍵是否匹配,僅適用InnoDB)
create table score(
 cid int not null auto_increment primary key,
 score int,
 sid int,
 foreign key(sid) references student(sid)
);

————————————————

主表和從表

一、當主表中沒有對應的記錄時,不能將記錄添加到子表  

 ——成績表中不能出如今學員信息表中不存在的學號;  

二、不能更改主表中的值而致使子表中的記錄孤立

——把學員信息表中的學號改變了,學員成績表中的學號也應當隨之改變;

三、子表存在與主表對應的記錄,不能從主表中刪除該行  

 ——不能把有成績的學員刪除了  

四、刪除主表前,先刪子表  

 ——先刪學員成績表、後刪除學員信息表

————————————————

語法:describe  表名;
  desc    表名;

敘述:用於顯示錶的建立結構。
————————————————

刪除表操做

語法:drop  table  [if exists]  tab_name [,tab_name]...
    敘述:從數據庫中刪除給定的表。若是給出if exists 子句,則刪除不存在的表不會出錯。
刪除數據庫操做
語法:drop  database [if exists] db_name
    敘述:刪除給定的數據庫。在刪除一個數據庫後,它就永遠沒有了,所以要特別當心。若是給出if exists 子句,則刪除不存在的數據庫不會出錯。

————————————————

語法:alter table 表名 action; 
    說明:action 能夠是以下語句:
    add 列名 建表語句 [first | after 列名]
    能夠爲表添加一列,若是沒指定first或者after,則在列尾添加一列,不然在指定列添加新列
    add primary key (列名)
    爲表添加一個主鍵,若是主鍵已經存在,則出現錯誤
    add foreign key(列名) references 表名(列名) 爲表添加一個外鍵
    alter 列名 set default 默認值
    能夠更改指定列默認值

————————————————

change 舊列名 新列名 <建表語句> [first | after 列名]
     能夠更改列類型和列名稱,若是原列的名字和新列的名字相同
modify 列名 <建表語句> [first | after 列名]
            和change的做用相同  
drop 列名     //能夠刪除一列
drop primary key      //能夠刪除主鍵
engine 類型名       //能夠改變表類型
rename as 新表名     //能夠將表名更改

————————————————

舉例1:

向people表中添加字段address2,類型爲varchar,最大長度爲100
alter table people add address2 varchar(100);

舉例2:

將people表中的name列默認值改成100:
alter table people alter name set default 100;

舉例3:

向student表增長「入學時間」列,其數據類型爲日期型。
     alter table student add scome date;
注:不管基本表中原來是否已有數據,新增長的列一概爲空值。

舉例4:

將年齡的數據類型改成半字長整數。
         alter table student modify sage smallint;

注:修改原有的列定義有可能會破壞已有數據
————————————————

查詢語法:

SELECT [DISTINCT | DISTINCTROW | ALL] select_expression,... [FROM table_references  [WHERE where_definition]  [GROUP BY col_name,...]  [HAVING where_definition]  [ORDER BY {unsigned_integer | col_name |    formula} [ASC | DESC] ,...]  [LIMIT [offset,] rows]
    [PROCEDURE procedure_name] ]

————————————————

from子句:指定查詢數據的表
where子句:查詢數據的過濾條件
    group by子句:對匹配where子句的查詢結果進行分組
having子句:對分組後的結果進行條件限制
    order by子句:對查詢結果結果進行排序,後面跟desc降序或asc升序(默認)。     
limit子句:對查詢的顯示結果限制數目
    procedure子句:查詢存儲過程返回的結果集數據

————————————————

使用函數:

SQL提供的統計函數稱爲集函數.
主要的集函數:
記數函數: count(列名) 計算元素的個數
求和函數: sum(列名) 對某一列的值求和,但屬性必須是整型
計算平均值:avg(列名)對某一列的值計算平均值
求最大值: max(列名) 找出某一列的最大值
求最小值: min(列名) 找出某一列的最小值

————————————————

在WHERE子句中使用謂詞 :
BETWEEN    AND    :在兩數之間
 NOT   BETWEEN    AND :不在兩數之間
 IN <值表>   :是否在特定的集合裏(枚舉)
 NOT IN <值表> :與上面相反
 LIKE  :是否匹配於一個模式
 IS NULL(爲空的)或 IS NOT NULL(不爲空的)REGEXP : 檢查一個值是否匹配一個常規表達式。

————————————————

子查詢:
將一個查詢塊嵌套在另外一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱爲子查詢。一個SELECT-FROM-WHERE語句稱爲一個查詢塊

例如:

select sname from student where sno in (select studentid from sc where courseid=2);

————————————————

相關文章
相關標籤/搜索