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); --破除非空限制
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CNzYjZlZzNhZDNwMzNwMzM0kjN0UTM2UzYykTZkZTYj9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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;
執行個體操作:
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……還有好多東西要學,但是現在的任務還是在于把基本的東西梳理好,把基礎鞏固了才是硬道理!!!
錯誤執行個體:
如添加資料的時候不寫列名,那必須給所有列值,不然報錯!
以上資訊來源于網絡,如有侵權,請聯系站長删除。