關係型數據庫之MySQL基礎總結_part1

一:數據庫的操做語言的種類mysql

MySQL 是咱們最常使用的關係型數據庫,對於MySQL的操做的語言種類又能夠分爲:DDL,DML,DCL,DQLsql

DDL:是數據庫的定義語言:主要對於數據庫信息的一些定義
  如:create, drop, alter ,truncate DML:是數據庫的操做語言:主要是對於數據庫表中的內容進行操做
  如:update, insert, delete 不包含查詢 DCL:是數據庫的控制語言:主要指的是事務的控制以及用戶的權限的設置
  如:grant,revoke,if…else,while,begin transaction DQL:是數據庫 的查詢語言:主要對數據的查詢 
  如:select

 二:對於數據庫的經常使用命令數據庫

  1)命令窗口進行登陸服務器

mysql -u 用戶名 -p 進行登陸操做 mysql -u用戶名 -p密碼也能夠

  2)命令窗口修改登陸密碼函數

1,中止SQL的服務,打開cmd 輸入:services.msc
2,在cmd下輸入mysqld --skip-grant-tables,不用關閉窗口
3,從新打開cmd窗口 ,輸入mysql -u root -p,就能夠免密登陸
4,進入到指定的數據庫,use mysql
5,update user set password=password('新密碼')WHERE user='用戶名'
6,用任務管理器,結束mysqld的進程,
7,啓動MySQL的服務,密碼就已經修改爲功

   3)根據IP進行遠程鏈接MySQL性能

mysql [-h 鏈接的主機ip -P端口3306)] -u 用戶名 -p 密碼 
例如:mysql -h 127.0.0.1 -P 3306 -u root -p

  4)對於數據庫信息相關操做編碼

1,查詢全部的數據庫:show databases;
2,查詢當前數據庫的編碼表信息:show create database 數據庫名;
3,建立數據庫:create database 數據庫名; create database 數據庫名 character set 編碼方式;
4,刪除數據庫:drop database 數據庫名;
5,修改數據庫的編碼格式:alert database 數據庫名 character set 字符集;
6,切換數據庫:use 數據庫名;
7,查看正在使用的數據庫:select database();

     5)建表語句spa

create table 表名( 列名 數據類型, 列名 數據類型, .... 列名 數據類型 );
varchar:會自動適應長短,節省空間
char的長度是固定的,根據設置的長度與數據的內容自動空格補充,性能好,若是長度固定可使用char,好比身份證或者手機號
數值型能夠不用指定,使用默認的長度

  6)對錶的相關操做3d

1,查詢數據庫下全部的表:show tables;
2,查詢建表語句與字符集:show create table 表名;
3,查詢表結構與字符集:desc 表名;
4,查詢表的列信息:show columns from 表名;
5,增長列:alert table 表名 add 列 類型 約束;
6,修改現有列的信息:alert table 表名 modify 列 類型 約束;
7,修改現有列的名稱:alert table 表名 change 舊名 新名 類型 約束;
8,刪除現有列:alert table 表名 drop 列名;
9,修改表名:rename table 舊名 to 新名;
10,修改表的字符集:alert table 表名 character set 字符;
11,數據表的刪除:drop table 表名;
12,對舊錶的複製:create table 新的表名 as select *from 舊的表名;
13,刪除列上的全部的約束:Alter table 表名 drop index 列名;

  7)對錶中記錄相關操做code

1,增長語句 insert into 表名 (字段1.字段2....)values(值1,值2....);
一、值與列一一對應。有多少個列,就須要寫多少個值。若是某一個列沒有值。可使用null。表示插入空。
二、值的數據類型,與列被定義的數據類型要相匹配。而且值的長度。不可以超多定義的列的長度。
三、字符串:插入字符類型的數據,必須寫單引號。在mysql中,使用單引號表示字符串。
四、date 時間類型的數據也能夠直接使用單引號表示: ‘yyyyMMdd’ ,’yyyy-MM-dd’,’yyyy/MM/dd’ 。
五、在插入數據的時候, 若是某些列能夠爲null, 或者是自動增加的列, 或者有默認值的, 在插入的時候能夠省略. 或者編寫null, 實現自動增加.
六、若是給表中的全部列插入數據, 這時能夠省略表後面的列名, 直接寫values.
在進行插入的時候,要保證客戶端與服務器端的編碼格式保持一致,可使用
show variables like 'character%';進行查詢全部客戶端與服務端的字符集
當不一致時的修改方法:
第一種: set names gbk ; 臨時將客戶端的字符集設置爲gbk
第二種:配置mysql/my.ini 文件
注意:CMD窗口使用的編碼格式是GBK,當添加的時候省略前面的列字段的時候,後面要根據表的順序一一對應的值進行書寫
2,修改語句
update 表名 set 列=值,列=值 where ......
當不加修改條件的時候,會修改該列的全部的內容
當是數值列的時候,能夠對原值進行操做:update user  set age=age+2 where ....
= 表示等於,>  表示 大於,<  表示 小於,>=  表示大於等於,<=  表示小於等於,<>  表示不等   
3,刪除語句(DML)
delete from 表名 where....
若是沒有where 就是刪除全部的記錄,delete刪除的是行
4,Truncate語句(DDL)
truncate table 表名;
先刪表在建表,性能好;

三:表中相關的約束

約束:主要對列的內容作限制
意義:保證數據的有效性和完整性。能夠確保數據庫知足業務規則。
主鍵約束:primary key ,一個表中只有一個主鍵,是惟一的,不能爲空的主鍵
惟一約束:unique,內容不能夠重複,能夠爲null(null不算重複),一張表能夠有多個惟一約束
非空約束:not null 不容許爲空,能夠有多個非空約束
外鍵約束: foreign key,
在建立表的時候建立外鍵,直接在最後寫foreign key (列) references 主表(主鍵)
建立完表進行添加,alert table 從表名 add foreign key(列) references 主表(主鍵)
外鍵的注意點:
l  若是從表要去添加一個外鍵約束。要求主表被引用的字段是主鍵或者惟一的。一般使用主鍵。
l  若是要刪除主表中的數據。要求在從表中這個數據,要沒有被引用,才能夠去刪除。
l  若是要向從表中去添加數據。要求在主表中,要有對應的數據。才能夠去添加。
l  若是要刪除表。要先刪除從表。而後去刪除主表。
l  新建表的時候。須要先去建立主表,而後去建立從表。

四:運算符的介紹

 

不等於的運算方式:
1,where  列!=值;
2,where 列<>值;
3,where  not 列=值;
在兩個數之間的比較
1,where 列 between 值1 and 值2;包含邊界
2,where 列>=值1 and 列 <= 值2;
多查詢:in   where 列 in(1,2,3);
模糊查詢:like
where  列 like ' 劉_';表示兩個字的模糊
where 列 like '劉%'; 表示的是多個查詢
空查詢:is null;is not null;ifnull(列名,'默認值,類型保持一致')
  

五:其餘(distinct,as,order by ,group by)

去重查詢:distinct  
select distinct 列名 from 表名 [where 條件];
當多個字段的時候會失效;網上說多個字段的時候會將多個字段拼接進行去重
別名查詢:as 排序查詢:order by select * from 表名 order by 列 desc|asc;默認asc(升序)
多個字段的時候,首先第一個字段排序,當第一個重複的時候,就用第二個排序
分組查詢:group by
group by是對列進行分組,當有多個字段的時候就會對多個字段進行分組,分組的內容是按兩個字段或者這多個字段都相同的進行分組
注意點:
 1,select的內容,只能是聚合函數或者是group by 後面的字段
 2,當有多個字段的時候就會對多個字段進行分組,分組的內容是按兩個字段或者這多個字段都相同的進行分組
3,分組以後再進行過濾的話,只能使用having,having以後能夠加聚合函數

 六:聚合函數

1,計數count(列或者數字):統計多少行,當爲null的行不統計
2,求和sum(列名):統計該列全部的值的和,null自動排除sum僅對數值類型的列起做用,不然會報錯。
sum(列1+列2+列3):這種寫法,會先進行一行進行求和,而後在把全部行相加,當null進行+列的時候仍是null,sum會忽略null的值,容易形成數據的不許確,寫成sum(ifnull(列1,0))+sum(ifnull(列2,0))+sum(ifnull(列3,0))
3,平均查詢avg():對於null的數據也會自動排除,因此要加上ifnull(列,值)進行配合,avg()不能與sum()一塊兒使用
4,求最大值max(列),求最小值min(列);
會自動忽略掉null 

七:SQl的執行順序

(1)from 
(2) where 
(3)group by(開始使用select中的別名,後面的語句中均可以使用)
(4) avg,sum.... 
(5)having 
(6) select 
(7) distinct 
(8) order by 

  

 

                                                                                         謝謝!

相關文章
相關標籤/搜索