目录
DDL
数据定义语言,用来操作数据库和数据表结构
注释方法
--注释
/*注释*/
# mysql特有注释
sql不区分大小写,关键字最好大写
创建、使用、查看数据库
--创建数据库databasename
create database if not exists databasename;
--使用数据库databasename
use databasename;
--查看所有数据库
show databases;
--删除数据库databasename
drop database if exists databasename;
--重命名数据库
alter database old_database_name modify name = new_database_name;
创建表
create table if not exists stu(#if not exists都是可以不加的
#表头 字段名
#字段类型
id int(4) comment '学生编号',--逗号隔开
gender char(1) comment '性别',--comment可加可不加,就是一个备注
username varchar(20),
hiredate date
);
删除表
drop table stu;
添加字段
alter table student add email varchar(20);
修改字段
alter table student modify id varchar(20);
删除字段
alter table student drop email;
重命名表
rename table student to stu;
重命名字段
alter table student change hiredate `date` date;
--date是关键字会冲突,所以要用``符号区分,这个不是双引号,是esc下面那个按键
常见的mysql数据类型
- 整数:int,bigint int(3)代表最大支持999
- 小数:double double(4,2)代表最大长度4,小数点后最长两位
- 在Oracle中不分小数和整数,都叫number number(3)代表最大支持999,number(4,2)代表最大长度4,小数点后最长两位
- 字符串/字符:char,varchar char(4)代表4个字符存入,少于4个字符会用空格补齐;varchar(4)代表最多存4个字符,存入什么就是什么;字符/字符串用单引号套用
- 时间:date,time,datetime date年月日 time时分秒 datetime年月日时分秒;输入时间用单引号套用,默认格式'yyyy-MM-dd hh:mm:ss'
DML
用来对数据进行增删改操作(大部分可撤销)
插入数据
insert into student values (1001,'男','tom','2022-07-20');--值的顺序必须和定义字段时一致
insert into student values (null,'','davie',null);--null和''是不一样的,''是有内容的
insert into student (name,id) values ('张三',1003);--不要求顺序和数量,没有的字段默认null
修改数据
update student set id = 1000;--这样会把所有的记录都改了
update student set sex = '女' where name = '张三';--where筛选条件
update student set sex = '男',hiredate = '2022-7-25' where name = '张三';--批量操作
删除数据
delete from student;--删除表内所有数据
delete from student where id = 1001;
--delete删除可撤销
truncate table student;--删除整个表,再创建一个字段名和原来相同的空表
--truncate删除效率高,但是不可撤销
DQL
用来查询数据
--全部查询
select * from student;--查询效率低,因为要先把*转换成所有字段
select deptno,dname,loc from dept;--手动查询,效率较高
--条件查询
select * from emp where empno = 7369;> >= < <=都支持
select * from emp where sal<3000;
select * from emp where ename >'JONES';--根据ASCII码比较
select * from emp where hiredate > '1981-12-17';--支持日期的比较
select * from emp where mgr is null ;--null不能直接比较,是无限大或者无限小,null不能直接运算
--拼接查询
select * from emp where empno=7369 or empno=7876 or empno=7788;
select * from emp where emp in(7369,7876,7788);--等同于上面效果
select * from emp where sal >=950 and sal<=1300;
select * from emp where sal between 950 and 1300;--等同于上面效果,两边都包含
--去重查询
select distinct deptno from emp;
--运算查询
select ename,sal*12 as '年薪' from emp;--as '年薪'是可选操作,就是取个别名
select ename,sal*12+ifNull(comm,0) '年薪' from emp; --ifNull(comm,0):comm如果是null,返回0
select ename from emp where ename like '_A%';--like要搭配占位符,_代表一个字符,%代表任意个字符
--排序查询
select ename,sal from emp order by sal desc;--desc降序,asc升序
总结
- 数据库的DDL语言用来创建/修改/删除数据库和表
- DML语言是对记录的增删改
- DQL语言是对数据库的查询