mysql視頻教程欄目介紹如何快速學會mysql基本操作
文章目錄
- 一、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操作
#Createcreate database hzyc;create database if not exists hzyc98 character set gbk;#Retrieveshow databases;show create database hzyc98;#Updatealter database hzyc98 character set gbk;#Deletedrop database hzyc98;drop database if exists hzyc98; #查看當前使用的數據庫select database();show tables;use hzyc98
1.操作表list:
表名/表頭為:zoomlist
#查show tables; -- show tables_in_hzyc98desc 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:自定義名字展示,也可以不寫asSELECT Name,scroe1+IFNULL(scroe2,0) 總分 FROM zoomlist; --ifnull遇到沒有值的直接給賦值為0SELECT 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); --破除非空約束
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 keyalter 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_incrementalter table employee modify id int;
五、總結
我們學習了SQL是什么,做了一個簡單的入門,也列舉了一些MySQL的基本操作,還有查詢、約束是怎么一回事。
但是我也是剛剛才接觸MySQL,所以基本的操作手還比較生,要多學多練多去實踐才能出真知。
在之后我們還會學習到MySQL的多重關系、多表查詢、事務(還不太清楚是什么)、JDBC各個語句、數據庫連接池druid、JDBCTemplate……還有好多東西要學,但是現在的任務還是在于把基本的東西梳理好,把基礎鞏固了才是硬道理!!!
錯誤實例:
如添加數據的時候不寫列名,那必須給所有列值,不然報錯