java--運算子
阿新 • • 發佈:2021-01-11
#SQL基礎
ddl學習
1. 操作資料庫
-
C (Create):建立
-
建立資料庫
create databases 資料庫名;
-
建立資料庫前先判斷是否存在
create database if not exists 資料庫名;
-
建立資料庫,判斷是否存在,並指定字符集
create database if not exists 資料庫名 character set 字符集
-
練習:建立資料庫db1 ,判斷是否存在,並指定字符集為utf8
create database if not exists db1 character set utf8;
-
-
R (Retrieve):查詢
-
查詢所有資料庫的名稱
show databases;
-
查詢某個資料庫的字符集–其實是查詢資料庫的建立sql語句
show create database db1(資料庫名);
-
-
U(Update):修改
-
修改資料庫的字符集
alter database db1(資料庫名) character set utf8(字符集);
-
-
D(Delete):刪除
-
刪除資料庫
drop database db1(資料庫名);
-
刪除資料庫前先判斷是否存在
drop database if exists db1(資料庫名);
-
-
使用資料庫
-
查詢當前正在使用的資料庫名稱
select database();
-
注意 和 show databases;的細微區別
1. 語義不同,分別是:檢視所有資料庫名稱,檢視當前正在使用的資料庫名稱 2. 寫法不同,database() 和 databases
-
使用資料庫
use db1(資料庫名);
-
2. ddl操作表
-
查詢
-
查詢某個資料庫中所有的表名稱
show tables;
-
查詢表結構
desc 表名;
-
查詢表的建立語句
show create table 表名;
-
-
建立
建立表
create table 表名( 列名1 資料型別1, 列名2 資料型別2, ...... 列名n 資料型別n ); 注意:最後一列,不需要加逗號
畫圖,理解什麼是表
資料型別 1. int 整數型別 age int 2. double 小數型別 score double(5,2) 總長度5,小數點後的位數2,最大值999.99 3. date 日期,只包含年月日,yyyy-MM-dd 4. datetime 日期,包含年月日和時分秒 yyyy-MM-dd HH:mm:ss 5. timestamp 時間戳,包含年月日和時分秒 yyyy-MM-dd HH:mm:ss 如果該型別欄位沒有賦值,或賦值為null,則預設使用當前系統時間填充 6. varchar 字串(長度可變) 7. char字串(長度固定) name varchar(20) 表示姓名最長20個字元的限制 注意: 1.字串varchar和小數double都要指定長度 2.varchar和日期型別的資料要加上引號(推薦使用單引號)
練習:建立一個學員表
create table student( id int, name varchar(10), age int, score double(4,1), birth date, insert_time timestamp );
案例: 1.建立一個員工表employee,需要如下欄位: 員工編號,姓名,性別,年齡,工齡,生日,工資 create table employee( id int, -- 員工編號 name varchar(20),-- 姓名 gender char(1),-- 性別 age int,-- 年齡 work_years int,-- 工齡 birth date,-- 生日 salary double(8,2) -- 工資 );
複製表
create table 表名 like 被複制的表名;
-
刪除表
1. drop table 表名 2. drop table if exists 表名
-
修改
1.修改表
-
修改表名
alter table 表名 rename to 新表名
-
修改表的字符集
-- 查看錶的字符集,其實是查看錶的建立語句 show create table 表名; -- 修改表的字符集 alter table 表名 character set 字符集;
-
2.修改列
-
新增一列
alter table 表名 add 列名 資料型別;
-
修改列型別
alter table 表名 modify 列名 資料型別;
-
修改列名和型別
alter table 表名 change 舊列名 新列名 資料型別;
-
刪除列
alter table 表名 drop 列名;
綜合練習:
1.檢視當前的伺服器一共有多少個數據庫 show databases;
2.檢視當前正在使用的資料庫 select database();
3.選定其中的一個數據庫,進行使用 use db3;
4.檢視當前庫中有多少個表 show tables;
5.建立一個表
create table employee(
id int, -- 員工編號
name varchar(20),-- 姓名
gender char(1),-- 性別
age int,-- 年齡
work_years int,-- 工齡
birth date,-- 生日
salary double(8,2) -- 工資
);
6.修改表:
1.修改員工表employee名為emp
2.修改表的字符集為gbk,查看錶的字符集
3.修改表的字符集為utf8,並查看錶的字符集
4.新增'部門'列
5.修改'性別'列型別為varchar(6)
6.修改gender為sex,型別為varchar(6)
7.刪除'部門'列
- 圖形化介面工具 SQLyog
- 演示安裝和連線,寫sql語句並執行
- 調節字型大小
dml學習
- 新增資料
-
新增全部欄位
insert into 表名 (列名1,列名2,...列名n) values (值1,值2,...值n);
注意: 1.值要和列名要一一一對應,有幾個列就要有幾個值 2.新增全部欄位資料時,列名部分可以省略,即: insert into 表名 values (值1,值2,...值n);
-
新增部分欄位
insert into 表名 (列名1,列名2,列名3,...) values (值1,值2,值3,...);
注意: 1.值必須和列名對應 2.列名可以不是連續的 3.列名可以不按照表結構中的順序,但通常建議按照先後順序 4.新增部分欄位時,列名不能省略 5.沒有新增資料的欄位預設使用null填充
-
批量新增資料
隨堂測試: 1.向員工表中新增3名員工資訊: 2 張三 25歲,男 3 李四 26歲,男 4 王五 27歲,女
-- 分析:屬於新增部分欄位 insert into emp (id,name,age,sex) values (2,'張三',3,'男'),(3,'李四',26,'男'),(4,'王五',27,'女') -- 批量新增語法 insert into 表名 (欄位1,欄位2,...) values (值1,值2,...),(值1,值2,...),(值1,值2,...)
-
注意:
新增資料值時,除了數字型別,其它型別需要使用引號(單雙引號都可以),建議使用單引號。
- 刪除資料
-
刪除滿足條件的資料
delete from 表名 [where 條件];
注意: 1.如果不加條件,則刪除表中所有的資料 eg: delete from emp1; delete from emp1 where true; delete from emp1 where 1=1;
-
刪除表中的所有資料
truncate table 表名;
兩種刪除所有資料的方法: 1.truncate方式,先刪除整個表,再建立一張同樣結構的表,執行效率高,推薦使用。 2.delete from 表名 ,不帶條件,有多少條記錄就會執行多少次刪除操作,效率不高,不推薦。
- 修改資料
-
語法
update 表名 set 列名1=值1, 列名2=值2, ... [where 條件];
注意: 1.如果不帶條件,則會修改所有的資料
隨堂測試: 1.曹操的年齡加1歲,工資漲500 UPDATE emp SET age=age+1,salary =salary+500 WHERE name='曹操'; 2.修改所有員工的部門三國 update emp set dept='三國';
dql學習
-
完整的查詢語法
select 欄位列表 from 表名列表 where 條件列表 group by 分組欄位 having 分組之後的條件 order by 排序 limit 分頁限定
1. 基礎查詢
-
多個欄位查詢
select 欄位名1,欄位名2... from 表名;
注意: 如果查詢所有欄位,則可以使用*來替代欄位列表。
-
去除重複
關鍵字 distinct 直接放在select後面
-
四則運算
一般可以使用四則運算計算一些列的值。(一般只會進行數值型的計算) ifnull(表示式1,表示式2):null參與的運算,計算結果都為null 表示式1:哪個欄位需要判斷是否為null 如果該欄位為null後的替換值。
案例:計算學員的英語和數學成績和
select math,english,ifnull(math,0)+ifnull(english,0) from stu;
-
起別名
欄位名 後寫關鍵字 as 或省略as 直接用空格
2. 條件查詢
- where和 運算子 構成查詢條件
> 、< 、<= 、>= 、= 、<>
BETWEEN...AND
IN( 集合)
LIKE:模糊查詢
佔位符:
_:單個任意字元
%:多個任意字元
IS NULL
and 或 &&
or 或 ||
not 或 !
- 案例
-- 建立表
CREATE TABLE student (
id INT, -- 編號
NAME VARCHAR(20), -- 姓名
age INT, -- 年齡
sex VARCHAR(5), -- 性別
address VARCHAR(100), -- 地址
math INT, -- 數學
english INT -- 英語
);
-- 填充資料
INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES
(1,'馬雲',55,'男','杭州',66,78),
(2,'馬化騰',45,'女','深圳',98,87),
(3,'馬景濤',55,'男','香港',56,77),
(4,'柳巖',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'劉德華',57,'男','香港',99,99),
(7,'馬德',22,'女','香港',99,99),
(8,'德瑪西亞',18,'男','南京',56,65);
-- 查詢年齡大於20歲
SELECT * FROM student WHERE age > 20;
SELECT * FROM student WHERE age >= 20;
-- 查詢年齡等於20歲
SELECT * FROM student WHERE age = 20;
-- 查詢年齡不等於20歲
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;
-- 查詢年齡大於等於20 小於等於30
SELECT * FROM student WHERE age >= 20 && age <=30;
SELECT * FROM student WHERE age >= 20 AND age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
-- 查詢年齡22歲,18歲,25歲的資訊
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);
-- 查詢英語成績為null
SELECT * FROM student WHERE english = NULL; -- 不對的。null值不能使用 = (!=)
SELECT * FROM student WHERE english IS NULL;
-- 查詢英語成績不為null
SELECT * FROM student WHERE english IS NOT NULL;
SELECT * FROM student WHERE NOT english IS NULL;
3. 模糊查詢
-
使用關鍵字 like
萬用字元: _ 匹配一個字元 % 匹配0-n個字元