2五、MySQL數據庫(一)

數據庫的基本概念:mysql

一、數據庫:DataBase,簡稱DBsql

二、什麼是數據庫:用於存儲和管理數據的倉庫數據庫

三、數據庫的特色:一、持久化存儲數據的。數據庫就是一個系統文件安全

                          二、方便存儲和管理數據函數

                          三、使用了統一的方式操做數據庫ui

四、常見的數據庫軟件:Oracle命令行

                                MySQLcode

                                SQL Server對象

                                DB2排序

五、MySQL經常使用命令行:一、啓動mysql服務:net start mysql

                                 二、關閉mysql服務:net stop mysql

                                 三、登錄mysql:mysql -uroot -p密碼

                                                       mysql -hIP地址 -uroot -p鏈接目標的密碼

                                 四、退出mysql:exit

                                                       quit

 

SQL:結構化查詢語言,定義了操做全部關係型數據庫的規則,每一種數據庫操做的方式存在不同的地方,稱爲方言

SQL通用語法:一、SQL語句能夠單行或多行書寫,以分號結尾

                     二、能夠使用空格和縮進來加強語句的可讀性

                     三、MYSQL數據庫的SQL語句不區分大小寫關鍵字建議使用大寫

                     四、3種註釋:單行註釋:-- 註釋內容 或者# 註釋內容

                                        多行註釋:/* 註釋內容 */

SQL分類:

一、DDL,數據定義語言,用來定義數據庫對象:數據庫,表,列等。

二、DML,數據操做語言,用來對數據庫中的數據進行增刪改

三、DQL,數據查詢語言,用來查詢數據庫中表的記錄

四、DCL,數據控制語言,用來定義數據庫的訪問權限和安全級別,及建立用戶

 

DDL:

一、操做數據庫:一、Create,建立

                            建立數據庫:create database 數據庫名稱;

create database demo;

                            建立數據庫,判斷不存在,在建立:create database if not exists 數據庫名稱

create database  if not exists demo;

                            建立數據庫,並指定字符集:create database 數據庫名稱 character set 字符集名

create database demo char set utf8;

                      二、Retrieve,查詢

                            查詢全部數據庫的名稱:show databases

show databases;

                            查詢某個數據庫的字符集:show create database 數據庫名稱

show create database demo ;

                      三、Update:修改

                            修改數據庫的字符集:alter database 數據庫名稱 character set 字符集名

alter database demo char set utf8;

                      四、Delete;刪除

                            刪除數據庫:drop database 數據庫名稱

drop database demo;

                            判斷數據庫存在,存在再刪除:drop database if exists 數據庫名稱

drop database if exists demo;

                      五、使用數據庫

                           查詢當前正在使用的數據庫名稱:select database()

select database() ;

                           使用數據庫:use 數據庫名稱 

use demo;

二、操做表

                      一、Create,建立    

                                建立表:create table 表名(

                                                    列名1 數據類型1,

                                                    列名2 數據類型2,

                                                    ...

                                                    列名n 數據類型n      

create table account (
	id int auto_increment,
    name varchar(20),
    money double,
    primary key (id)
) char set = utf8;

                                  複製表:create table 表名 like 被複制的表

create table account1 like account;

                            數據庫的數據類型:一、int 整數類型,例如 age int

                                                       二、double 小數類型,例如 score double(5,2)

                                                       三、date 日期,只包含年月日,yyyy-MM-dd

                                                       四、datetime 日期,包含年月日時分秒,yyyy-MM-dd HH:mm:ss

                                                       五、timestamp 時間戳類型,包含年月日時分秒,yyyy-MM-dd HH:mm:ss,不賦值或者賦值null,默認使用當前

                                                            時間

                                                       六、varchar,字符串  ,例如name varchar(20)

                      二、Retrieve,查詢

                                查詢某個數據庫中全部的表名稱:show tables

show tables;

                                查詢表結構:desc 表名

desc account;

                      三、Update:修改

                                修改表名:alter table 表名 rename to 新的表名

alter table account rename to account1;

                                修改表的字符集:alter table 表名 character set 字符集名稱

alter table account charset utf8;

                                添加一列:alter table 表名 add 列名 數據類型

alter table account add age int;

                                修改列名稱:alter table 表名 change 列名 新列名 新數據類型

alter table account change id uid int;

                                                  alter table 表名 modify 列名 新數據類型

alter table account modify id int;

                                刪除列:alter table 表名 drop 列名         

alter table account drop id;

                      

                      四、Delete;刪除

                                刪除表:drop table 表名

drop table account;

                                判斷表是否存在,存在刪除:drop table if exists 表名

                        

drop table if exists account;

DML:

一、添加數據

        insert into 表名(列名1,列名2,列名3...列名n) value (值1,值2,值3...值n)

insert into account (id,uid,money) value (1,46,1000),(2,45,1000),(3,46,2000);

        注意:一、列名和值要一一對應

                 二、若是表後面沒有列名,則默認給全部列添加值

                 三、除列數字類型,其餘類型須要用引號(單雙均可以)。

二、刪除數據

        delete from 表名 where 條件

delete from account where id  = 1;

        注意:一、若是不加條件,則刪除表中全部記錄

                 二、若是要刪除全部記錄

                        一、delete from 表名,不推薦使用,效率低

                        二、truncate table 表名 ,推薦使用,效率高

truncate table account;

三、修改數據

         update 表名 set 列名1 =值1,列名2 = 值2,...where 條件

update account set id= 1 ,name ='讀者', money=1000 where id =1 ;

         注意:若是不加任何條件,則會將表中的全部記錄所有修改

 

DQL:

查詢表中的記錄:select 

                                字段列表

                        from 

                                表名列表

                        where 

                                條件列表

                        group by

                                分組字段

                        having

                                分組以後的條件

                        order by 

                                排序

                        limit

                                分頁限定

基礎查詢:一、多個字段的查詢: select 字段名1,字段名2,字段名3....from 表名;

select name ,money from account;

               二、查詢全部字段名:select * from 表名

select * from account;

               三、去除重複:select distinct 字段名1,字段名2 ....from 表名;

select distinct name , money from account;

               四、計算列:select 字段名1,字段名2...ifnull(字段名1,默認值)+字段名2 from 表名

select  ifnull(money, 1) from account;

                                通常能夠使用四則運算,null參與運算,結果爲null 全部須要ifnull進行判斷

               五、起別名:select 字段名1 as 別名 from 表名

                                as能夠省略

select money m from account;

條件查詢:where子句後面根條件

                運算符:一、>,<,<=,>=,=,<>

                            二、between...and

                            三、IN(集合)

                            四、LIKE,佔位符:_(單個字符),%(多個字符)

                            五、IS NULL

                            六、and 或 &&

                            七、or 或 ||

                            八、not 或 !

 排序查詢:order by子句後面

                order by 排序字段1 排序方式1,排序字段2,排序方式2

                排序方式:ASC 升序(默認)

                               DESC 降序

                注意:若是有多個排序條件,則當前邊的條件值同樣時,纔會判斷第二條件

聚合函數:將一列數據做爲一個總體,進行縱向計算

               一、count:計算個數 ,select count (列名) from 表名

select count (money) from account;

               二、max:計算最大值,select max(列名)from 表名

select max (money) from account;

               三、min:計算最小值,select min(列名) from 表名

select min(money) from account;

               四、sum:計算和, select sum(列名) from 表名

select sum(money) from account;

               五、avg:計算平均值 , select avg (列名) from 表名

select avg(money) from account;

                注意:聚合函數的計算會排除null值,能夠使用ifnull替換

分組查詢:group by 字段名稱

select money ,id from account group by sex;

                注意:一、分組以後查詢的字段:分組字段、聚合函數

                         二、where和having區別:where在分組前限定,若是不知足條件,則不參與分組

                                                            having在分組以後限定,若是不知足結果,則不會被查詢出來

                                                            where後不能夠跟聚合函數,having能夠進行聚合函數判斷

select id,money from account where money > 1000 group by sex having count(id) >2;

分頁查詢:limit 開始的索引,每頁查詢的條數

select * from account limit 0,3;

               開始索引=(當前頁碼-1)*每頁的條數

                注意:分頁操做是一個「方言」

 

約束:對錶中的數據進行限定, 保證數據的正確性、有效性和完整性

        分類:一、主鍵約束, primary key,

                        主鍵的做用:非空且惟一,一張表只能有一個字段爲主鍵,主鍵就是表中記錄的惟一標識

                        在建立表時,添加主鍵約束

create table stu(
	id int primary key,
    name varchar(20)
)

                        建立完表後,添加主鍵

alter table stu modify id int primary key;

                        刪除主鍵

alter table stu drop primary key;

                        自動增加:若是某列是數值類型的,使用auto_increment 能夠來完成值得自動增加,通常和主鍵同時使用

create table stu(
	id int primary key auto_increment,
    name varchar(20)
);

                        添加自動增加

alter table stu modify id int auto_increment;

                        刪除自動增加

alter table stu modify id int;

                 二、非空約束,not null

                        建立表時添加約束

 

create table stu(
	id int primary key auto_increment,
    name varchar(20) not null
);

 

                        建立完表後添加非空約束

alter table stu modify name varchar(20) not null;

                        刪除非空約束

alter table stu modify name varchar(20);

                 三、惟一約束,unique

                          建立表時,添加惟一約束

create table stu(
	id int primary key auto_increment,
    name varchar(20) not null unique
);

                                注意:惟一約束的列值能夠存在多個null

                            建立表後,添加惟一約束

 

alter table stu modify id int unique;

                            刪除惟一約束

alter table stu drop index id;

                 四、外鍵約束,foreign key

                            概念:讓表於表產生關係,從而保證數據的正確性

                        在建立表時,添加外鍵

                            create table 表名(

                                    ····

                                    外鍵列

                                    constraint 外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱)

create table stu(
	id int primary key auto_increment,
    name varchar(20) not null unique,
    constraint FK_id foreign key (id) references account (uid)
    
);

                        建立表後,添加外鍵

                            alter table 表名 add constraint 外鍵名稱 foreign key (外鍵字段名稱) references 主表名稱(主表列名稱)

alter table stu add constraint FK_id foreign key(id) references account (uid);

                        刪除外鍵

                            alter table 表名 drop foreign key 外鍵名稱;

alter table stu drop foreign key FK_id;

級聯操做:一、添加級聯操做

                        alter table 表名 add constraint 外鍵名稱 foreign key (外鍵字段名稱)references 主表名稱(主表列名稱)on update cascade on delete cascade

alter table stu add constraint FK_id foreign key(id) references account (uid) on update cascade on delete cascade;

               二、分類:級聯更新:on update cascade

                             級聯刪除:on delete cascade

相關文章
相關標籤/搜索