zoukankan      html  css  js  c++  java
  • sql 简单语法

    1、数据库操作

    create database student_info  -- 创建数据库 
    drop database student_info    -- 删除数据库 

    2、表操作

    -- 创建表
    create table student(
        id int not null primary key,
        name varchar(20) not null,
        age int null,
        sex varchar(10) 
    )    
    -- 删除表
    drop table student
    -- 修改表,增加一个列
    Alter table student add column address varchar(50)

    3、sql语句

    简单语句

    插入(增):insert into student(id, name, address) values(1, 'Xiaohong', 16)
    删除(删):delete from student where age<=6
    更新(改):update student set name='Lily' where id=1
    查询(查):select * from student 

    高级语法

    模糊查询:select * from student where name like '%Xiao%'
    排序:select * from student order by field1,field2 desc
    总数:select count(*) as totalcount from student
    函数:select sum(age) as sumAge, avg(age) as avgAge, max(age) as maxAge, min(age) as minAge from student
    前几:   select top 10 * from student order by age desc
    去重:   select distinct name from student
    多个条件: select * from student where name like '%Xiao%' and age=16 or age=20
    between:   select * from student where age between 10 and 20
    in:   select * from student where name in ('Lily', 'Amy')
    分组: select age, count(*) from student group by age
    分组带条件: select age, count(*) from student group by age where age >10 having count(*)<5

    4、表连接

    JOIN: 如果表中有至少一个匹配,则返回行
    LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
    RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
    FULL JOIN: 只要其中一个表中存在匹配,就返回行

    create table course(
        cno int not null primary key,
        cname varchar(20) not null
    )
    create table StudentCourse(
        sno int not null,
        cno int not null,
        score double
    )
    
    -- 表连接, 查找所有学生的选课记录
    select s.name as 学生姓名,sc.cno as 选修课号,sc.score as 成绩 
    from student s, StudentCourse sc
    where s.id=sc.sno
    
    -- 内连接, 查找所有成绩及格的选课记录
    select s.name as 学生姓名,sc.cno as 选修课号,sc.score as 成绩 
    from student s
    inner join StudentCourse sc on s.id=sc.sno
    where sc.score>60
    
    -- 左连接, 查找所有学生的选课记录
    select s.id as 学号,sc.cno as 选修课号,sc.score as 成绩 
    from student s
    left join StudentCourse sc on s.id=sc.sno
    
    -- 嵌套查询, 查找王敏同学的选课记录
    select *
    from StudentCourse
    where sno in (
       select id from student where name='王敏'
    )
    
    --查找每个学生大于自身平均分的科目
    select cno
    from StudentCourse a
    where score> (
      select avg(score) from StudentCourse b where a.sno=b.sno
    )

    5、SQL 约束

    约束用于限制加入表的数据的类型。可以在创建表时或表创建后规定约束。约束主要有以下几类:

    • NOT NULL   强制列不能为 NULL 值
    • UNIQUE      唯一标识数据库表中的每条记录, 每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
    • PRIMARY KEY  唯一标识数据库表中的每条记录,主键必须包含唯一的值,主键列不能包含 NULL 值。
    • FOREIGN KEY  一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY,如StuentCource 的sno指向Student的id
    • CHECK    在特定的列中对值进行限制
    • DEFAULT  设置默认值
    create table student(
        id int not null,
        name varchar(20) not null,
        age int null DEFAULT 1,
        UNIQUE (name),
        PRIMARY KEY (id),
        CONSTRAINT chk_age check (age>0 AND age<200),
        CONSTRAINT uq_name unique(name)
    )

    6、索引

    您可以在表中创建索引,以便更加快速高效地查询数据。

    -- 创建索引
    create index idx_age on student(age asc)
    create unique index idx_name on student(name)
    -- 删除索引
    drop index idx_name 

    7、视图

    视图是基于 SQL 语句的结果集的可视化的表。

    -- 删除视图
    if exists (select * from dbo.sysobjects where id = object_id(N'dbo.young_student') and objectproperty(id, N'isview') = 1)
    drop view young_student
    -- 创建视图
    create view young_student 
    as 
    select * from student where age<10
  • 相关阅读:
    五种I/O模型
    Python socket服务
    Python 协程
    python openpyxl 简单使用
    python 文件夹压缩
    Python 多进程
    MySQL 自定义函数
    python 队列
    python 多线程、线程锁、事件
    python paramiko模块:远程连接服务器
  • 原文地址:https://www.cnblogs.com/anxiao/p/10797339.html
Copyright © 2011-2022 走看看