一:資料庫的操作語言的種類 MySQL 是我們最常使用的關係型資料庫,對於MySQL的操作的語言種類又可以分為:DDL,DML,DCL,DQL 二:對於資料庫的常用命令 1)命令視窗進行登錄 2)命令視窗修改登錄密碼 3)根據IP進行遠程連接MySQL 4)對於資料庫信息相關操作 5)建表語句 6) ...
一:資料庫的操作語言的種類
MySQL 是我們最常使用的關係型資料庫,對於MySQL的操作的語言種類又可以分為:DDL,DML,DCL,DQL
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)建表語句
create table 表名(
列名 數據類型,
列名 數據類型,
....
列名 數據類型
);
varchar:會自動適應長短,節省空間
char的長度是固定的,根據設置的長度與數據的內容自動空格補充,性能好,如果長度固定可以使用char,比如身份證或者手機號
數值型可以不用指定,使用預設的長度
6)對錶的相關操作
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)對錶中記錄相關操作
1,增加語句
insert into 表名 (欄位1.欄位2....)values(值1,值2....);
1、值與列一一對應。有多少個列,就需要寫多少個值。如果某一個列沒有值。可以使用null。表示插入空。
2、值的數據類型,與列被定義的數據類型要相匹配。並且值的長度。不能夠超多定義的列的長度。
3、字元串:插入字元類型的數據,必須寫單引號。在mysql中,使用單引號表示字元串。
4、date 時間類型的數據也可以直接使用單引號表示: ‘yyyyMMdd’ ,’yyyy-MM-dd’,’yyyy/MM/dd’ 。
5、在插入數據的時候, 如果某些列可以為null, 或者是自動增長的列, 或者有預設值的, 在插入的時候可以省略. 或者編寫null, 實現自動增長.
6、如果給表中的所有列插入數據, 這時可以省略表後面的列名, 直接寫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
謝謝!