天天看點

mysql 5分鐘内的資料庫_【MySQL】5分鐘學會資料庫基本操作(一)

1) DDL(Data Definition Language)資料定義語言 用來定義資料庫對象 資料庫 表 列等。關鍵字 create, drop,alter 等 2) DML(Data Manipulation Language)資料

(全文約5500字,預計閱讀時間5分鐘)

文章目錄

一、SQL是什麼?

分類:

二、關于資料庫CRUD操作

1.操作表list:

2.對表内資料進行操作:

a.查詢

b.where條件:

三、查詢

1. 排序查詢

2. 聚合函數(列的計算)

3. 分組查詢

4. 排序查詢

四、限制

1.非空限制:not null

2.唯一限制

執行個體操作:

3.主鍵限制:primary key

4.自動增長:auto_increment

五、總結

錯誤執行個體:

一、SQL是什麼?

structured Query Language:結構化查詢語言

分類:

1) DDL(Data Definition Language)資料定義語言

用來定義資料庫對象:資料庫,表,列等。關鍵字:create, drop,alter 等

2) DML(Data Manipulation Language)資料操作語言

用來對資料庫中表的資料進行增删改。關鍵字:insert, delete, update 等

3) DQL(Data Query Language)資料查詢語言

用來查詢資料庫中表的記錄(資料)。關鍵字:select, where 等

4) DCL(Data Control Language)資料控制語言(了解)

用來定義資料庫的通路權限和安全級别,及建立使用者。關鍵字:GRANT, REVOKE 等

二、關于資料庫CRUD操作

#Create

create database hzyc;

create database if not exists hzyc98 character set gbk;

#Retrieve

show databases;

show create database hzyc98;

#Update

alter database hzyc98 character set gbk;

#Delete

drop database hzyc98;

drop database if exists hzyc98;

#檢視目前使用的資料庫

select database();

show tables;

use hzyc98

1.操作表list:

表名/表頭為:zoomlist

#查

show tables; -- show tables_in_hzyc98

desc zoomlist;

#增

create table zoomlist (

Name varchar(30),

Age int,

ID int,

Height double(5,1)

)

#删

drop table if exists zoomlist;

#改

alter table zoomlist rename to newzoomlist;

alter table zoomlist character set gbk;

alter table zoomlist add Name varchar(20);#加列

alter table zoomlist change Age newAge int;

alter table zoomlist modify Age char(8);

alter table zoomlist drop Name;

- int、double(5,1)、varchar(20)

- date #yyyy-MM-dd

- datetime #yyyy-MM-dd HH:mm:ss

- timestamp#時間戳 yyyy-MM-dd HH:mm:ss

2.對表内資料進行操作:

#除了數字,其他都需要引号來指派

insert into zoomlist (Name, Age, ID, Height) value('美洲豹',5,'20201207',3.2);

insert into zoomlist ('美洲豹',5,'20201207',3.2);

#删除

delete from zoomlist where [條件];

delete from zoomlist;

TRUNCATE TABLE zoomlist;

#修改

update zoomlist set Name = '大笨象' Age = 12 where address = '深圳';

update zoomlist set address = '深圳';

a.查詢

#查詢

#盡量不要用 * 先desc一下表裡面有啥,然後在決定展示什麼東西。

SELECT * FROM zoomlist;

SELECT Name,Age FROM zoomlist; --隻顯示某個列,友善檢視!

SELECT DISTINCT Name FROM zoomlist; --去除結果中[完全重複]的

SELECT Name,score1,score2,scroe1+scroe2 FROM zoomlist;--as:自定義名字展示,也可以不寫as

SELECT Name,scroe1+IFNULL(scroe2,0) 總分 FROM zoomlist; --ifnull遇到沒有值的直接給指派為0

SELECT Name,score1,score2,scroe1+IFNULL(scroe2,0) AS 總分 --顯示表頭

FROM zoomlist,peoplelist; --從zoomlist、peoplelist裡面擷取

b.where條件:

* > 、< 、<= 、>= 、= 、!=、<>--不等号

* and、or、not --關鍵字比&&、||、!好用推薦

* BETWEEN...AND --範圍内都符合就行

* IN( 集合) --特定值的範圍

* LIKE:模糊查詢(1)_:單個任意字元;(2)%:多個任意字元

* IS NULL

例子:

select Name, Age from Student where age between 12 and 20;

select Name, Age from Student where age in (12,14,16,18);

select Name, Age from Student where name like '%牛%'; --查名字裡面包含了牛的學生

select Name, Age from Student where name is not null; -- 查詢學生:名字空的不查

三、查詢

1. 排序查詢

select * from employee order by age;

select * from employee order by age asc; --升序

select * from employee order by age desc; --降序

select * from employee order by age desc height desc; --第一個一樣的時候,才會用第二個方法排序(age降序,身高降序)

2. 聚合函數(列的計算)

排除了null資料,并且有null的資料就不參與計算,不會報錯!

count:統計個數

min、max、sum、avg:求值

select count(*) from student;

select count(ifnull(age,20)) from student;

select count(age) from student;--如果沒有就不記錄

select count(id) from student; --我們一般選用主鍵來統計個數

select max(age) from student;

select min(age) from student;

select sum(age) from student;

select avg(age) from student;

3. 分組查詢

group by 之後就是兩個不同的組别了,他們不能再去檢視一個獨立的個體了。

分組之後查詢的字段:分組字段、聚合函數。

where和having的差別?

where在分組前限定,having在分組之後限定;

where不符合條件的不參與分組,having不符合條件不會顯示;

隻有having可以後跟聚合函數判斷。

select sex,count(name) from employee group by sex having count(name)<6;

select sex,count(name) from employee where name = '張四' group by sex ;

4. 排序查詢

limit是一個MySQL的方言,用于分頁

SELECT * FROM student LIMIT 0,5; -- 第1頁,從0索引開始,讀5個資料

SELECT * FROM student LIMIT 7,10; -- 第2頁,從7索引開始(第8個資料),讀10個資料

四、限制

限制:

主鍵限制:primary key

非空限制:not null

唯一限制:unique

外鍵限制:foreign key

1.非空限制:not null

-- 建表時添加非空限制:

create table employee(

name char(30),

sex char(8) not null

)

alter table employee modify sex char(8) not null; --添加非空限制

alter table employee modify sex char(8); --破除非空限制

mysql 5分鐘内的資料庫_【MySQL】5分鐘學會資料庫基本操作(一)

2.唯一限制

隻可以有一個null值,不能再多了;

删除限制隻可以用drop index來删除unique限制

-- 建表時添加唯一限制:

create table employee(

name char(30),

sex char(8),

score int unique --分數要唯一

)

--添加唯一限制

alter table employee modify name char(8) unique;

--破除唯一限制

-- alter table employee modify sex char(8); 不可用

--破除name身上的unique限制用drop index除去索引

alter table employee drop index name;

執行個體操作:

mysql 5分鐘内的資料庫_【MySQL】5分鐘學會資料庫基本操作(一)
mysql 5分鐘内的資料庫_【MySQL】5分鐘學會資料庫基本操作(一)

3.主鍵限制:primary key

一個表隻有一個primary key,非空且唯一

做記錄的唯一辨別,相當于index

-- 建表時添加主鍵限制:

create table employee(

id int primary key, --給id加上主鍵限制

name char(30),

)

--添加唯一限制

alter table employee modify id int primary key;

--破除唯一限制

-- alter table employee modify id int; 不可用!

--破除id身上的primary key限制隻能用drop primary key

alter table employee drop primary key;

4.自動增長:auto_increment

隻對數值有用,而且一般可以放給主鍵做自動增長

-- 建表時添加auto_increment:

create table employee(

id int auto_increment, --給id加上auto_increment

name char(30),

)

--添加auto_increment,自動從1開始

alter table employee modify id int auto_increment;

--設定初值

alter table employee auto_increment = 100;

--破除auto_increment

alter table employee modify id int;

五、總結

我們學習了SQL是什麼,做了一個簡單的入門,也列舉了一些MySQL的基本操作,還有查詢、限制是怎麼一回事。

但是我也是剛剛才接觸MySQL,是以基本的操作手還比較生,要多學多練多去實踐才能出真知。

在之後我們還會學習到MySQL的多重關系、多表查詢、事務(還不太清楚是什麼)、JDBC各個語句、資料庫連接配接池druid、JDBCTemplate……還有好多東西要學,但是現在的任務還是在于把基本的東西梳理好,把基礎鞏固了才是硬道理!!!

錯誤執行個體:

如添加資料的時候不寫列名,那必須給所有列值,不然報錯!

mysql 5分鐘内的資料庫_【MySQL】5分鐘學會資料庫基本操作(一)

以上資訊來源于網絡,如有侵權,請聯系站長删除。