SQL语句

2022-01-28  本文已影响0人  晓看云

DDL语句

创建数据库

  1. 登录mysql mysql -uroot -p
    -u 后面跟链接数据库的用户
    -p 跟用户对应的密码

  2. 创建数据库 CREATE DATABASE dbname;
    show databases;
    use database;
    create table tablename();

  3. 查询数据库 show databases;
    Information_schema:主要存储了系统中的一些数据库对象信息,比如表信息,列信息,字符集信息,分区信息等。
    mysql:存储了系统的用户权限信息;
    performace_shema:主要用于收集数据库服务器性能参数
    test:系统自建的测试数据库,默认为空库,一般我们

  4. 删除数据库 drop database dbname;
    当数据库删除后,数据库里面的表也全部被删除了。所以,执行删除数据库操作前一定要考虑清楚,做好备份,避免数据丢失。

  5. 创建表
    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));

  1. 查看表的定义
    DESC tablename

DESC命令可以查看表的定义,但其输出信息还是不够全面。为了得到更全面的表定义信息,有时需要查看创建表的SQL语句。可以使用如下命令。
Show create table emp

  1. 删除表 DROP TABLE tablename;
    删除数据库命令

  2. 修改表 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类型、

上一篇 下一篇

猜你喜欢

热点阅读