結構化查詢語言(structured query language)
由國際標準化組織(iso)制定的,對dbms的統一操作方式(例如相同的語句可以操作:mysql、oracle等)
ps:例如sql99,即2023年制定的標準。
某種dbms不只會支援sql標準,而且還會有一些自己獨有的語法,這就稱之為方言!例如limit語句只在mysql中可以使用。
資料定義語言,用來定義資料庫物件:庫、表、列等。(建立、刪除、修改資料庫或者表結構)
資料庫
# 檢視所有資料庫
show databases
# 切換(選擇要操作的)資料庫:
use 資料庫名字
# 建立資料庫,資料庫名稱為:mydb1
create database [if not exists] mydb1 [charset=utf8]
# 刪除mydb1資料庫
drop database [if exists] mydb1
# 修改資料庫mydb1編碼
alter database mydb1 character set utf8
資料型別(列型別)
型別說明
int整型
double
浮點型,例如double(5,2)表示最多5位,其中必須有2位小數,即最大值為999.99
decimal
浮點型,在表單錢方面使用該型別,因為不會出現精度缺失問題
char
固定長度字串型別。 char(255),資料的長度不足指定長度,補足到指定長度!
varchar
可變長度字串型別
text(clob)
字串型別(有很小,小,中,大四種)
date
日期型別,格式為:yyyy-mm-dd
time
時間型別,格式為:hh:mm:ss
timestamp
時間戳型別
表
# 建立表
create table [if not exists] 表名(列名 列型別, 列名 列型別, ...列名 列型別);
# 檢視當前資料庫中所有表名稱
show tables;
# 檢視指定表的建立語句
show create table 表名;
# 檢視表結構
desc 表名;
# 刪除表
drop table 表名;
# 修改表-新增列
alter table 表名 add (列名 列型別,
列名 列型別,
...);
# 修改表-修改列型別(如果被修改的列已存在資料,那麼新的型別可能會影響到已存在資料)
alter table 表名 modify 列名 列型別;
# 修改表-修改列名
alter table 表名 change 原列名 新列名 列型別;
# 修改表-刪除列
alter table 表名 drop 列名;
# 修改表-修改表名
alter table 原表名 rename to 新錶名;
資料操作語言,用來定義資料庫記錄。(增加、刪除、修改表資料)
插入資料
修改資料
刪除資料
資料控制語言,用來定義訪問許可權和安全級別
慣例:乙個專案建立乙個使用者。乙個專案對應的資料庫只有乙個。這個使用者只能對這個資料庫有許可權,其他資料庫就操作不了了。
建立使用者
# 使用者只能在指定的ip位址上登入
create user 使用者名稱@ip位址 identified by '密碼';
# 使用者可以在任意ip位址上登入
create user 使用者名稱@'%' identified by '密碼' ;
給使用者授權
# 給使用者分派在指定的資料庫上的指定的許可權
grant 許可權1, … , 許可權n on 資料庫.* to 使用者名稱@ip位址
例子:
# 給user1使用者分派在mydb1資料庫上的create、alter、drop、insert、update、delete、select許可權
grant create,alter,drop,insert,update,delete,select on mydb1.* to user1@localhost;
# 給使用者分派指定資料庫上的所有許可權
grant all on 資料庫.* to 使用者名稱@ip位址;
撤銷授權
# 撤消指定使用者在指定資料庫上的指定許可權
revoke 許可權1, … , 許可權n on 資料庫.* from 使用者名稱@ip位址
例子
# 撤消user1使用者在mydb1資料庫上的create、alter、drop許可權
revoke create,alter,drop on mydb1.* from user1@localhost;
檢視許可權
# 檢視指定使用者的許可權
show grants for 使用者名稱@ip位址
刪除使用者
# 刪除指定使用者許可權
drop user 使用者名稱@ip位址
資料查詢語言,用來查詢記錄(查詢表中的資料,不會改變表記錄)
一, 基本查詢
條件控制
條件查詢
與前面介紹的update和delete語句一樣,select語句也可以使用where子句來控制記錄。
select empno,ename,sal,comm from 表名 where sal > 10000 and comm is not null;
select empno,ename,sal from 表名 where sal between 20000 and 30000;
select empno,ename,job from 表名 where job in ('經理', '董事長');
模糊查詢
當你想查詢姓張,並且姓名一共兩個字的員工時,這時就可以使用模糊查詢
# 模糊查詢需要使用運算子:like,其中_匹配乙個任意字元,注意,只匹配乙個字元而不是多個。
# 下面語句查詢的是姓張,名字由兩個字組成的員工。
select * from 表名 where ename like '張_';
如果我們想查詢姓張,名字幾個字可以的員工時就要使用「%」了。
# 其中%匹配0~n個任意字元,所以上面語句查詢的是姓張的所有員工。
select * from 表名 where ename like '張%';
# 千萬不要認為下面這個語句是在查詢姓名中間帶有阿字的員工,因為%匹配0~n個字元,所以姓名以阿開頭和結尾的員工也都會查詢到。
select * from 表名 where ename like '%阿%';
# 這個條件等同與不存在,但如果姓名為null的查詢不出來!
select * from 表名 where ename like '%';
二, 排序
三,聚合查詢
四,分組查詢
五,limit子句(mysql)
六,關鍵字順序
一名職場老菜鳥,夢想成為一名有頭髮的程式設計大牛。
MySQL學習之SQL基礎
一 sql語句分類 ddl語句 資料定義語句,這些語句定義了不同的資料段 資料庫 表 列 索引等資料庫物件 dml語句 資料操縱語句,用於新增 刪除 更新和查詢資料庫記錄,並檢查資料完整性 dcl語句 資料控制語句,用於控制不同資料段直接的許可和訪問級別的語句,定義了資料庫 表 字段 使用者的訪問許...
MYSQL學習筆記 SQL語句基礎
增 insert into grade values 3,english 80 insert into class select stuid,class from grade 值需匹配 刪 delete from grade where id 3 改 update grade set grade 6...
MySQL學習筆記一( SQL基礎)
sql語句是structure query language 結構化查詢語句 的縮寫,它是使用關係模型的資料庫應用語句。sql語句可以包括三個類別 ddl資料定義語句 dml資料操作語句 dcl資料控制語句。1.ddl data definition language 定義資料庫物件,如欄位,表,列...