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);
————————————————