1、查看已有數據庫
show database 數據庫名稱;
2、切換、連接數據庫
use 數據庫名稱;
3、查看當前連接的數據庫
select database();
4、創建數據庫
create database 數據庫名稱;
5、修改,刪除數據庫
alter database 數據庫名稱 character set 字符編碼名稱;
drop database 數據庫名稱;
6、mysql常用數據類型
- int:整型 double:浮點型,例如double(5,2)表示最多5位,其中必須有2位小數,即最大值為999.99;
- char:固定長度字符串類型; varchar:可變長度字符串類型; text:字符串類型;
- blob:字節類型;
- date:日期類型,格式為:yyyy-MM-dd;
- time:時間類型,格式為:hh:mm:ss
- timestamp:時間戳類型 格式為:yyyy-MM-dd hh:mm:ss
7、查看當前庫已有表:
show tables;
查看表定義信息:
show create table 表名;
查看表結構:
desc 表名;
8、創建表
create table 表名( 列名 數據類型(長度), 列名 數據類型(長度), …… );
9、修改表
a.為emp表添加列address varchar(30)
alter table emp add address varchar(30);
b.修改emp表的address 數據長度為40
alter table emp modify address varchar(40);
c. 修改address列名為addr
alter table emp change address addr varchar(40);
d. 刪除emp表的addr列
alter table emp drop addr;
e. 修改emp表的表名為employee
alter table emp rename to employee; alter table emp rename employee;
10、刪除表
drop table 表名;
11、完整性約束
完整性約束:保證數據庫表中數據的正確性,合理性等。
數據庫約束:
- 主鍵約束:用戶保證表中數據的唯一性(沒有重復的數據)
- not null:非空約束。約束列中的數據非空
- unique:唯一約束。保證列數據的唯一性(不能重復)
- 外鍵約束:保證表中數據引用的完整性。
a.創建主鍵約束:主鍵列值必須非空且唯一,並且一個表有且只有一個主鍵。
方式一:
create table stu ( sid varchar(10) primary key, sname varchar(20) );
方式二:
create table stu ( sid varchar(10), sname varchar(20), primary key(sid) );
方式三: 先創建表,然后修改表添加主鍵
create table stu ( sid varchar(10), sname varchar(20) ); alter table stu add primary key(sid);
主鍵自增:auto_increment
create table stu( sid int primary key auto_increment, sname varchar(20) );
b.非空約束:not null
方式一:
create table stu( sid int, sname varchar(20) not null );
方式二:alter table stu modify sname varchar(20) not null;
c.唯一約束:unique
create table stu( sid int, sname varchar(20) unique ); alter table stu add address varchar(30) unique;
d.外鍵約束:foreign key
方式一:
create table dept( deptno int, deptname varchar(20), primary key(deptno) ); create table emp( eid int, ename varchar(20), e_d_no int, primary key(eid), foreign key(e_d_no) references dept(deptno) );
方式二:
先定義表結構,然后修改表添加主鍵和外鍵(比較常用)
create table emp( eid int, ename varchar(20), e_d_no int ); create table dept( deptno int, deptname varchar(20) );
修改主表,添加主鍵
alter table dept add primary key(deptno);
修改從表,添加外鍵引用
alter table emp add foreign key(e_d_no) references dept(deptno);
12、
DML語句:對表數據的增刪改
相關命令:insert update delete
1. 向表中插入數據:
語法:insert into 表名(用逗號分隔的列名列表) values(使用逗號分隔的每列的數據列表);
如:
insert into stu(sid,sname,age,gender) values('M_001','tom',23,'male');
2.修改表數據:
update 表名 set 列名=新值,列名=新值…… [where 子句];
如:
update stu set sname=’jack’;
3. 刪除表中的數據
使用delete刪除表數據
語法: delete from 表名 [where 子句];
如:delete from stu;
使用truncate刪除表數據:
語法:truncate [table] stu;
delete和truncate區別
delete逐條刪除數據(性能較低)
truncate(截斷表):首先執行drop table刪除表結構, 然后再執行create table創建表結構。性能較優。
DQL操作
命令只有select
語法:
SELECT selection_list /*要查詢的列名稱*/ FROM table_list /*要查詢的表名稱*/ [ WHERE condition /*篩選數據行的條件*/ GROUP BY grouping_columns /*對結果分組*/ HAVING condition /*分組后的篩選行的條件*/ ORDER BY sorting_columns /*對結果排序*/ ]
注:[…] 代表可選,而不是語句中有[] 。
0.基本查詢:
select * from stu; /*查詢所有列*/ select sname,age from stu; /*查詢指定列*/
13、
條件查詢
運算符:
- =、!=、<>、<、<=、>、>=;
- BETWEEN…AND;
- IN(set);
- IS NULL;
- AND;
- OR;
- NOT;
a.查詢年齡大於35歲的人的姓名和年齡
select sname,age from stu where age>35;
b.查詢年齡在15和35歲的人的姓名和年齡
select sname,age from stu where age between 15 and 35;
c.查詢年齡等於25、35、45歲的人的信息
select * from stu where age in(25,35,45);
d.查詢沒有填寫性別的人的信息
select * from stu where gender is null;
e.查詢年齡大於35歲的男性的信息
select * from stu where age>35 and gender=’male’;
f.查詢年齡大於35歲的信息
select * from stu where age>35;
g.查詢性別不為空的人的信息
select * from stu where gender is not null;
2.模糊查詢
模糊查詢的通配符:
% 表示任意數量的字符
_ 表示任意一個字符
模糊查詢的關鍵詞:like
a.查詢名字是字母z開頭的人
select * from stu where sname like 'z%';
b.查詢名字包含b字母的人
select * from stu where sname like '%b%';
c.查詢名字包含n字母其n字母前只有兩個字符的人
select * from stu where sname like '__n%';
以下查詢使用emp表
14.列別名
使用as關鍵字為列定義別名,另外,該關鍵字可以省去
select ename as '名字', sal as '月薪' from emp e; select ename '名字', sal '月薪' from emp e;
4.排序
desc降序 asc升序(默認值)
查看雇員的月薪,並進行排序
select ename, sal as 'sal' from emp order by sal desc;
15、聚合函數
聚合函數是用來做縱向運算的函數:
- COUNT():統計指定列不為NULL的記錄行數;
- MAX():計算指定列的最大值,如果指定列是字符串類型,那么使用字符串排序運算;
- MIN():計算指定列的最小值,如果指定列是字符串類型,那么使用字符串排序運算;
- SUM():計算指定列的數值和,如果指定列類型不是數值類型,那么計算結果為0;
-
AVG():計算指定列的平均值,如果指定列類型不是數值類型,那么計算結果為0;
注意:聚合函數只返回一個結果
a.查詢emp表中月薪大於2500的人數:
select count(*) from emp where sal>2500;
b.統計所有員工平均工資:
select avg(sal) from emp;
16、多表查詢
笛卡爾積查詢:
select * from emp,dept;
消除笛卡爾積:
內連接(等值連接)
select * from emp e,dept d where e.deptno=d.detpno;