常見的DBMS介紹
? 1.MySQL:Oracle公司的產品,MySQL在08年被Sun公司收購,09年Sun公司被
Oracle公司收購,開源軟體,被收購后MySQL創始人從Oracle離開創建了MariaDB,
MariaDB就是MySQL軟體的一個分支,市占率第一,
? 2.Oracle:Oracle公司產品,性能最高價格最貴,不是開源的,市占率第二,
? 3.SQLServer:微軟公司產品, .net語言使用此資料庫,市占率第三,
? 4.DB2:IBM公司產品
? 5.SQLite:輕量級資料庫軟體,安裝包幾十k,主要用于移動設備和嵌入式設備中
常見的MySQL命令
一丶常見的資料庫命令
1.查詢所有資料庫:
show databases;
2.創建資料庫
*創建資料庫:
create database 資料庫名;
*創建資料庫,判斷不存在時在創建
create database if not exists 資料庫名;
*創建資料庫,判斷不存在是在創建,且指定字符集
create database if not exists 資料庫名 character set 字符集;
3.使用資料庫
use 資料庫名;
4.查詢資料庫詳情
show create database 資料庫名;
5.洗掉資料庫
drop database 資料庫名;
6.修改資料庫字符集
alter database 資料庫名 character set 字符集名稱;
7.查詢當前正在使用的資料庫
select database();
二丶表相關的SQL陳述句
1.創建表
create table 表名(欄位1 型別,欄位2 型別,...);
create table 表名(欄位1 型別,欄位2 型別,...) charset=utf8;
例如:
create table person(name varchar(5),age int);
create table student(name varchar(10),score int) charset=utf8;
create table hero(name varchar(10),money int) charset=default;
2.查詢表
*查詢所有表
show tables;
*查詢表的詳情
show create table 表名;
*查詢表欄位
desc 表名;
3.洗掉表
drop table 表名;
4.修改表
*修改表名
rename table 表名 to 新表名;
例如:
rename table person to t_person;
*添加表欄位
*添加到表欄位的最后面
alter table 表名 add 欄位名 型別;
例如:
alter table student add gender varchar(5);
*添加到表欄位的最前面
alter table 表名 add 欄位名 型別 first;
例如:
alter table student add id int first;
*添加到某個欄位的后面
alter table 表名 add 新欄位名 型別 after 欄位名;
例如:
alter table student add money int after name;
*洗掉表欄位
alter table 表名 drop 欄位名;
例如:
alter table student drop money;
*修改表欄位
alter table 表名 change 原欄位名 新欄位名 新型別;
例如:
alter table student change gender money int;
二丶DML資料操作語言
1.DML資料操作語言:執行操作資料庫的SQL必須保證已經使用了某個資料庫,并且存在資料所對應的表
2.插入資料(增)
*全表插入格式(要求值的數量和順序和表欄位保持一致)
insert into 表名 values(值1,值2,值3,...);
例如:
insert into person values('tom',18);
*指定欄位插入格式(要求值的數量與順序和指定的一值)
insert into 表名(欄位名1,欄位名2) values(值1,值2);
例如:
insert into person(name) values('Jerry');
*批量插入
insert into 表名 values(值1,值2),(值1,值2);
insert into 表名(欄位名) values(值1),(值1);
例如:
insert into person values('Lucy',20),('Lily',21);
insert into person(name) values("Lilei"),('Hanmeimei');
*插入中文
insert into person values('劉德華',50);
如果執行上面SQL陳述句出現錯誤,提示中包含16進制內容,執行以下SQL
set names gbk;
3.查詢資料
select 欄位資訊 from 表名 where 條件;
例如:
select name from person;//查詢所有name資訊
select name,age from person where age>20;//查詢age大于20的所有name
select * from person;//查詢所有表內容資訊
4.修改資料
update 表名 set 欄位名=xxx,欄位名=xxx where 條件;
例如:
update person set age=8 where name ='Tom';
update person set age=10 where age is null;//如果age為null的情況下,把age改為10
5.洗掉資料
delete from 表名 where 條件;//如果不寫where后面條件,則把表的全部內容洗掉
例如:
delete from person where age=10;//洗掉age等于10的
delete from person where name='劉德華';//洗掉表中name為劉德華的資料
delete from person where age<20;//洗掉表中age小于20的資料
delete from person;//洗掉表中全部內容
*如果要洗掉所有記錄:
delete from 表名;//不推薦使用,有多少條記錄就會執行多少次洗掉操作
truncate table 表名;//推薦使用,效率更高,先洗掉表,在創建一張一模一樣的空表
三 資料型別
1.整數型別:
? * int(m)和bigint(m)等效java中的long, m代表顯示長度,位數不夠,前面補0.
create table t1(name varchar(10),age int(10) zerofill);
insert into t1 values('aaa',18);
select * from t1; //name='aaa' age=0000000018
2.浮點數:
? * double(m,d) : m代表總長度,d代表小數長度 53.234 double(5,3),超高精度浮點數 decimal(m,d)精度遠遠高于double,只有涉及超高精度時使用.
3.字串:
? * char(m):固定長度,m=10 存abc 占10,優點:執行效率略高,最大長度255
? * varchar(m):可變長度,m=10,存abc,占3, 優點:更節省空間,最大長度65535,但建議存255以下
? * text(m):可變長度,最大長度65535,建議保存長大于255的,
4.日期:
? * date: 只能保存年 月 日
? * time: 只能保存時 分 秒
? * datetime: 默認值為null,最大值9999-12-31
? * timestamp: (時間戳:距1970年1月1號的毫秒數): 默認值為當前系統時間最大值2038-1-19
? 例如:
create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
insert into t_date values(null,null,'2020-6-12 16:19:20',null);
insert into t_date values('2018-10-12','15:30:20',null,null);
四、SQL練習
匯入emp.sql 命令列界面: source C:\Users\Administrator\Desktop\emp\emp.sql;
1.emp表

2.dept表

1.去重distinct
select distinct 欄位名 from 表名;
(1).查詢員工表中有哪些作業(去重)
select distinct job from emp;
(2).查詢員工表中的部門編號deptno有哪些
select distinct deptno from emp;
2.is null和is not null
(1).查詢沒有上級領導的員工資訊
select * from emp where mgr is null;
(2).查詢有上級領導的員工姓名,工資和作業
select ename,sal,job from emp where mgr is not null;
3.比較運算子 > < >= <= = != 和<>(相當于不等于)
(1) 查詢工資小于等于3000的員工姓名和工資
select ename,sal from emp where sal<=3000;
(2)查詢不是程式員的員工姓名和作業(兩種寫法)
select ename,job from emp where job!='程式員';
select ename,job from emp where job<>'程式員';
4.and和or
(1)and類似于java中的&& ,當需要同時滿足多個條件的時候使用
(2)or類似于java總的|| ,當多個條件滿足一個就行的時候使用
? *查詢1號部門工資大于2000的員工資訊
select * from emp where deptno=1 and sal>2000;
? *查詢作業是人事或者工資大于3000的員工姓名,作業,工資
select ename,job,sal from emp where job='人事' or sal>3000;
5.in
(1)當查詢某個欄位的值為多個值的時候使用
? *查詢工資為3000/1500/5000的員工資訊
select * from emp where sal in(3000,1500,5000);
6.between x and y (包含x和y)
(1) 當查詢某個欄位的值在某兩個值之間的時候使用
? * 查詢工資在1000-2000之間的員工姓名和工資
select ename,sal from emp where sal between 1000 and 2000;
7.綜合練習
*查詢有上級領導并且是3號部門的員工資訊
select * from emp where mgr is not null and deptno=3;
*查詢2號部門工資在1000到2000之間的員工姓名,工資和部門編號
select ename,sal,deptno from emp where deptno=2 and sal between 1000 and 2000;
*查詢1號部門工資為800和1600的員工資訊
select * from emp where deptno=1 and sal in(800,1600);
*查詢1號和2號部門工資高于2000的員工資訊
select * from emp where deptno in(1,2) and sal>2000;
*查詢員工表中出現的部門編號有哪幾個
select distinct deptno from emp;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/4578.html
標籤:MySQL
上一篇:資料庫的設計
下一篇:MySQL多表查詢
