數據庫的基本概念: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