01-SQL语言

1-SQL是与关系型数据库交互的一种语言 DBMS是管理数据库de数据库管理系统
1.DDL: (Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;(创建、删除、修改),create、drop、alter. 
2.DML: (Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);(增、删、改),insert、delete、update. 
3.DQL: (Data Query Language):数据查询语言,用来查询记录(数据);select. 
4.DCL: (Data Control Language):数据控制语言,用来定义访问权限和安全级别;grant、commit、rollback.

使用注释:1. 单行注释  create database txt; --创建txt数据库
         2. 多行注释  /* create database txt
                      create database txt */
2-对数据库、对表操作-DDL
1.create database txt; //创建txt数据库
2.show databases; //查看所有数据库
3.use txt //切入到txt数据库
4.drop database txt; //删除txt数据库

* 常用的数据类型:
            int       整数        age            int
            double    小数        score          double(4,2)
            char      定长字符串 gender         char(10)    "呵呵"
            varchar   变长字符串 name           varchar(20) "张三"
            date      日期类型  birthday date  1999-11-11
            TIMESTAMP 时间戳类型 regist_time    TIMESTAMP    2016-08-29 15:05:33 * 如果给该字段赋值为null,则默认使用当前系统的时间赋值

* 完整性约束:
    * 主键约束:
    * 主键自增长:
    * 非空约束
    * 唯一约束:
        CREATE TABLE student(
            sid INT PRIMARY KEY AUTO_INCREMENT, -- 主键约束(非空且唯一)
            sname VARCHAR(20) UNIQUE,-- 唯一约束
            gender CHAR(1) NOT NULL -- 非空约束
        );

1.创建表:
  CREATE TABLE student(
            字段名  数据类型
            sid INT ,
            sname   VARCHAR(20),
            gender  CHAR(1), 
            score   DOUBLE(4,2),
            birthday TIMESTAMP
            );
2.查看表:
  show tables; //查看所有表
  desc user; //查看user表字段、结构

3.修改表
    1.添加列:给stu表添加classname列:
      ALTER TABLE stu ADD (classname varchar(100));

    2.修改列类型:修改stu表的gender列类型为CHAR(2):
       ALTER TABLE stu MODIFY gender CHAR(2);

    3.修改列名:修改stu表的gender列名为sex:
      ALTER TABLE stu change gender sex CHAR(2);
      alter table user rename column 旧列名 TO 新列名;//改列名

    4.删除列:删除stu表的classname列:
      ALTER TABLE stu DROP classname;

    5.修改表名称:修改stu表名称为student:
      ALTER TABLE stu RENAME TO student;

4.删除表:drop table user00; //删除user00表
3-对表中数据-增删改-DML
1.insert into user(name,age,content) values('ll','19','0000');

2.delete from user where id=3;    //删除id=3的数据.
                         id in(1,3,5);  //删除id=1、3、5的数据.
                         id<=3 and id>=5; //删除id小于等于3,和大于等于5的数据.
                         id between 3 and 5;  //删除id在3~5之间的数据. 
  清空表中所有数据:TRUNCATE TABLE tb_student; -- 先删除表,再创建表

3.update user set name="baby",sex="gil" where id=3; //将id=3的name改成baby,sex改成gil.  
4-对表中数据-查询-DQL
语法:SELECT selection_list /*要查询的列名称*/
      FROM table_list /*要查询的表名称*/
        WHERE condition /*行条件*/
          GROUP BY grouping_columns /*对结果分组*/
             HAVING condition /*分组后的行条件*/
               ORDER BY sorting_columns /*对结果排序*/
                 LIMIT offset_start, row_count /*结果限定*/

模糊查询:like
    通配符:
        _:代表单个任意字符
        %: 代表多个任意字符

排序:order by
            升序:order by 字段名 [asc];
        降序:order by 字段名 desc;


聚合函数
    聚合函数是用来做纵向运算的函数:
        COUNT():统计指定列不为NULL的记录行数;
        MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
        MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
        SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
        AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
        select count(*) from user;  //统计表行数
                       sum(age);//求和
                       avg(age);//平均数
                       max(age)://最大值
                       min(age)://最小值


1.select * from user where id=2;  //查找id为2的所有数据
2.select * from user where id between 3 and 5; //查找id在3和5之间的所有数据
3.select * from user where id in(1,3,5); //查找id为1、3、5的所有数据
4.select * from user where sex like "%o%";  //查询sex中包含o的数据
5.select name,pass from user where id=2;//查询特定列(name,pass)id=2的数据.
6.select distinct name from user;     //查询除去表中name重复值的数据
7.select * from user order by name desc; asc升序 //根据name排序从大到小,即降序
8.使用limit限定输出个数:(各DBMS不同)
  select * from user order by age desc limit 1,3; //第二个位置取3个
  select * from user order by age desc limit 5; //第一个位置取5个即0,5;
5-多表查询
一、多表查询
    简言之,根据特定的连接条件从不同的表中获取所需的数据

二、多表查询语法:
    SELECT table1.column, table2.column
    FROM table1, table2
    WHERE table1.column1 = table2.column2;

    但要注意where 不要省了,省略where 即为笛卡尔集,而且where 条件要有效,
    两张表间有一个相同的字段,才好进行有效的多表查询

    查询时列名前,加表名或表别名前辍(如果字段在两个表中是唯一的可以不加)

    为了简化SQL书写,可为表名定义别名,格式:from 表名别名
    如:from emp e,dept d

    建议使用表的别名及表前缀,使用表别名可以简化查询,而使用表前缀则可以提高查询性能

    例:查询每个员工的工号,姓名,工资,部门名和工作地点
    select empno,ename,sal,dname,loc from emp,dept
    where emp.deptno=dept.deptno;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值