DDL语句
创建数据库
-
登录mysql mysql -uroot -p
-u 后面跟链接数据库的用户
-p 跟用户对应的密码 -
创建数据库 CREATE DATABASE dbname;
show databases;
use database;
create table tablename(); -
查询数据库 show databases;
Information_schema:主要存储了系统中的一些数据库对象信息,比如表信息,列信息,字符集信息,分区信息等。
mysql:存储了系统的用户权限信息;
performace_shema:主要用于收集数据库服务器性能参数
test:系统自建的测试数据库,默认为空库,一般我们 -
删除数据库 drop database dbname;
当数据库删除后,数据库里面的表也全部被删除了。所以,执行删除数据库操作前一定要考虑清楚,做好备份,避免数据丢失。 -
创建表
CREATE TABLE tablename(
Column_name_1 column_type_1 constraints,
Column_name_2 column_type_2 constraints,
…
column_name_n column_type_n constrants),
column_name 列的名字
column_type 列的数据类型
constraints 列的约束条件
create table emp(ename varchar(10),
hiredate date,
sal decimal(10,2),
deptno int(2));
- 查看表的定义
DESC tablename
DESC命令可以查看表的定义,但其输出信息还是不够全面。为了得到更全面的表定义信息,有时需要查看创建表的SQL语句。可以使用如下命令。
Show create table emp
-
删除表 DROP TABLE tablename;
删除数据库命令 -
修改表 alter table
ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST|AFTER column_name]
alter table emp modify ename varchar(20);
增加表的字段
ALTER TABLE tablename ADD[COLUMN] column_deifnition [FIRST|AFTER column_name]
alter table emp ADD column age int(3);
删除表的字段
ALTER TABLE tablename DROP [COLUMN] column_name;
alter table emp drop column age;
修改表的字段名
ALTER TABLE tablename CHANGE [COLUMN]old_column_name column_definition [FIRST|AFTER column_name]
ALTER TABLE emp CHANGE age agel int(4);
Change和modify 都可以修改表的定义,不同的是change后面需要写两次表明,但是change的优点是可以修改字段名,modify不行。
DML语句
DML操作是指对数据库中表记录的操作,主要包括表记录的插入(insert)\更新
(update)\删除(delete)和查询(select),是开发人员日常使用最频繁的操作。
插入记录
INSERT INTO tablename(column_1,column_2,…,column_n)
VALUES(value1,value2,…,valuen);
更新记录
UPDATE tablename SET column_1=value1,column_2=value2,…column_n=valuen
[where condition]
删除记录
DELETE FROM tablename [WHERE condition];
Delete语句一般后面要跟where条件,负责会清除表中所有数据。另外,执行前最好做好备份。或者,按照删除条件查询下,做到心里有底。
查询记录
1.查询语句
select * from tablename where condition
*的好处是当需要查询所有字段信息时,查询语句简单。但是,只查询部分字段时,必须将字段一个个列出来。
2.查询不重复记录
select * from emp;
select distinct(deptno) from emp;
将表中的记录去掉重复后显示出来
排序和限制
order by
select * from emp order by sal;
ASC升序,DESC降序,默认不指定为ASC升序。
如果只取前两个,则使用LIMIT关键字来实现。
LIMIT关键字可以使用(LIMIT n,m),n代表偏移量,m代表数量。LIMIT常和
Oder by 一起使用实现分页功能
聚合
Select count(1) from emp;
在此基础上,统计各个部门的人数
Select deptno,count(1) from emp group by deptno;
Select deptno,count(1) from emp group by deptno having(1)>1;
Select sum(sal),max(sal),min(sal) from emp;
表连接
需要同时显示多个表中的字段时,就可以用表连接来实现这一功能。表连接分为内连接和外连接,内连接仅选出两张表中相互匹配的记录。
左连接:包含所有左边表中的记录甚至右边表中没有和它匹配的记录。
右连接:包含所有右边表中的记录设置左边表中没有和它匹配的记录。
子查询
某些情况下,当进行查询时,一条SQL语句查询条件依赖于另一条SQL的查询结果,这就需要使用子查询了。用于子查询的关键字包括IN,NOT IN,=,!=,EXIST,NOT EXIST等。
select * from emp where deptno in (select deptno from dept);
因为子查询存在锁的问题,一般将子查询更改为连接查询。
select emp.* from emp,dept where emp.deptno=dept.deptno;
记录联合
union 和union all 关键字来实现,区别在于union 会对结果集进行去重。
MySQL数据类型
MySQL数据类型显示为整数、小数、日期时间类型、字符串类型、ENUM类型和SET类型、
网友评论