操作数据库
创建
查询
Create database mydb1;
Create database mydb2 character set gbk;
Create database mydb3 character set gbk COLLATE gbk_chinese_ci;
查看当前数据库服务器中的所有数据库
Show databases;
查看前面创建的mydb2数据库的定义信息
Show create database mydb2;
删除前面创建的mydb3数据库
Drop database mydb3;
查看服务器中的数据库,并把mydb2的字符集修改为utf8;
alter database mydb2 character set utf8;
删除
Drop database mydb3;
查看当前使用的数据库
Select database();
切换数据库
Use mydb2;
创建表
create table 表名(
字段1 字段类型,
字段2 字段类型,
...
字段n 字段类型
);
int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为
999.99;
char:固定长度字符串类型;
char(10): 'aaa ' 占10位
varchar:可变长度字符串类型;
varchar(10): 'aaa' 占3为
text:字符串类型;
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
boolean:mysql不支持,oracle支持
查看当前数据库中的所有表
SHOW TABLES;
查看表的字段信息
DESC employee;
alter
在上面员工表的基本上增加一个image列。
ALTER TABLE employee ADD image blob;
修改job列,使其长度为60。
ALTER TABLE employee MODIFY job varchar(60);
删除image列,一次只能删一列。
ALTER TABLE employee DROP image;
表名改为user。
RENAME TABLE employee TO user;
查看表格的创建细节
SHOW CREATE TABLE user;
修改表的字符集为gbk
ALTER TABLE user CHARACTER SET gbk;
列名name修改为username
ALTER TABLE user CHANGE name username varchar(100);
备份表结构和表数据
create table tname2 as select * from tname1;
备份表结构
create table tname2 like tname1;
删除表
DROP TABLE user ;
INSERT INTO emp1 select * from emp 将emp表的所有数据复制到emp1中
update
语法
UPDATE 表名 SET 列名1=列值1,列名2=列值2 。。。 WHERE 列名=值
删除
DELETE FROM 表名 【WHERE 列名=值】
删除表中名称为’zs’的记录。
DELETE FROM emp WHERE name=‘zs’;
删除表中所有记录。
DELETE FROM emp;
使用truncate删除表中记录。T
RUNCATE TABLE emp;
truncate和delete的区别
DELETE 删除表中的数据,表结构还在;删除后的数据可以找回 TRUNCATE 删除是把表直接
DROP掉,然后再创建一个同样的新表。 Truncate删除的数据不能找回。执行速度比DELETE
快。
查询
SELECT 列名 FROM 表名
【WHERE --> GOUP BY -->HAVING--> ORDER BY LIMIT】
in
SELECT * FROM stu WHERE sid IN ('S_1001','S_1002','S_1003');
distinct
SELECT DISTINCT sal FROM emp;
排序
SELECT * FROM stu ORDER BY age DESC;
SELECT * FROM emp ORDER BY sal DESC,empno ASC;
聚合函数
sum avg max min count
SELECT COUNT(*) AS cnt FROM emp;
SELECT SUM(sal), SUM(comm) FROM emp;
分组查询
SELECT deptno, SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal) > 9000;
1.having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
2.having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数。
WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参
加分组;而HAVING是对分组后数据的约束。
LIMIT
SELECT * FROM emp LIMIT 0, 5; 注意,起始行从0开始,即第一行开始!
顺序
查询语句书写顺序
elect – from- where- group by- having- order by-limit
查询语句执行顺序
from - where -group by - having - select - order by-limit
运算符的优先级
最高优先级为: !、BINARY、 COLLATE。