1.创建数据库

  • CREATE Database database_name;
  • 习惯Sql语句中,保留的关键字否设置为大写,数据库、表、字段为小写。

2.创建数据表

  • 创建数据表基本语法
  • CREATE TABLE 表名(列名1  类型 [NOT NULL,UNIQUE,DEFAULT value,PRIMARY KEY,CONSTRAINT foregin_name     foregin key(column) references  outer_table_name(column) on Delete RESTRICT|CASCADE|SET NULL]
    );

  • 说明
  • 1.中括号中的内容为可选项目
  • 2.常用的列数据类型有 INT、SMALLINT、FLOAT、DATE、DATETIME、VARCHAR(n)、CHAR(n)等
  • 3.NOT NULL 设置值不能为NULL、UNIQUE设置值不能重复
  • 4.PRIMARY KEY设置为主键 只有外键可以设置为auto_increment
  • 5.CONSTRAINT外建名 references outer_table_name(列值) on Delete|Update RESTRICT|CASCADE|SET NULL] 设置外键 restrict主表中数据不能删除数据、CASCADE主表中被删除那么引用为外键值对的表格也删除、主表中的数据被删除那么引用为外键的表的数据设置为NULL
  • 举例--mysql测试
  • 1.student表
    CREATE TABLE student(SNO CHAR(7) PRIMARY KEY,SNAME VARCHAR(8) NOT NULL,SEX CHAR(2) NOT NULL,BDATE DATE NOT NULL,HEIGHT DEC(5,2) DEFAULT 000.00);
    

  • 2.SCOURSE表
  •  CREATE TABLE SCOURSE(CNO CHAR(6) PRIMARY KEY,LHOUR SMALLINT NOT NULL,CREDIT DEC(1,0) NOT NULL,SEMESTER CHAR(2) NOT NULL); 

  • 3.SC表---添加外键
  • CREATE TABLE sc(SNO CHAR(7) NOT NULL,constraint SNO_foregin_key foreign key(SNO) references student(SNO) ON delete cascade,CNO CHAR(7) not NULL,constraint cno_foreign_key foreign key(CNO) references scource(cno) on delete restrict,          grade dec(4,1) DEFAULT null);

3.修改表的结构

  • a.添加新列------ADD
  • alter table_name add 列名 类型
  • b.修改列字段类型----modify
  • alter table_name modify 列名 类型 
  • c.修改列的名称或者属性-----change
  • alter table_name change name1 name2 类型
  • d.添加主键------add primary key(column);
  • alter table_name add primary key(column); 
  • alter table table_name drop primary key;//删除主键 注意:如果此列被设置为外建 on delete restrict,那么只有删除了外键之后才能删除主键
  • e.添加其他属性-------add unique(column)
  • alter table_name add unique(column)
  • g.重命名表名--------rename
  • alter table_name rename table_name table_name_new
  • h.外键设置------外建引用的列值必须唯一
  • alter table_name add constrints foreign_name foreign key(column) references outer_table(column) on delete set null;
  • alter table_name drop foreign key foreign_name;//删除外键
  • 索引设置—后续
  • alter table_name add index index_name(column)
  • alter table_name drop index index_name;//删除索引

4.MYSQL索引

  • MYSQL索引----加快查询速度
  • MySQL中,所有的数据类型都可以被索引。
  • MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引等。
  • 缺点:
  • 1.创建和维护索引需要消耗时间
  • 2.索引需要占用物理空间
  • 索引的分类
  • 普通索引— 没有任何约束条件的索引
  • 唯一索引— Unique(索引对应的值不能重复)
  • 全文索引—FullText(只能创建在CHAR、VARCHAR、TEXT)
  • 单列索引—索引对应一列值
  • 多列索引—索引对应多列值
  • 创建索引
  • 1.创建表的时候设置索引
  • 格式[UNIQUE | FULLTEXT | SPATIAL ] INDEX index_name (column [length长度] [ASC|DESC]);
      • a.普通索引 index index_name(id)

        • create table score(id int(11) primary Key not null, index id_index(id));//这里其实是多余的,主键上自动会添加索引
      • b.唯一索引
        • unique index index_name (column desc);
      • c.全文索引
        • FullText index index)name(info desc);
      • d.单列索引
        • Index index_name(tel(20));//tel 为varchar类型
      • e.多列索引
        • Index index_name(column1,column2);
        • 多列索引生效的条件是什么?
        • 查询条件包含column1
        • eg:alter table table_name add index index_name(column1,column2);
        • select * from table_name where column2="value";//索引是不会起作用的
  • 2.已经创建的表格添加索引

    • create [Unique|FULLTEXT|SPATIAL] Index index_name on table_name(column  length desc);
    • e.g.:create unique Index id_index on studentInfo(id);//id字段添加了自动索引
  • 3.修改表的结构并添加索引

    • Alter table table_name add [unique|fulltext] index index_name(column desc);
  • 4.删除索引
    • ALTER Table table_name drop Index index_name;
  • 5.查看添加的索引

    • show create table table_name;

5.SELECT语句

  • 5.1 表格数据

  • 表1.course表
  • 表2.student
  • 表3.sc
  • 5.2 查询语句联系

  • Q1:查询秋季学期有一门以上得分90以上的学生的名字
  • a.SELECT sname from student WHERE sno in (SELECT sno from sc WHERE grade>90 and cno in (SELECT cno from course WHERE semester="秋"));
  • b.SELECT sname  FROM student JOIN sc USING(`SNO`) JOIN course USING(cno) WHERE `SEMESTER`="秋" and grade>90;
  • Q2:查询只有一个人选修的课程号
  • a.SELECT cno from (SELECT cno,count(*) as count from sc GROUP BY `CNO`)a WHERE count=1;//from后的子查询必须添加别名
  • select CNO from sc group by CNO having count(*)=1;
  • b.SELECT `CNO` FROM sc WHERE cno not in (SELECT sc1.cno from sc as sc1,sc as sc2 WHERE sc1.sno!=sc2.`SNO` and sc1.cno=sc2.cno);
  • c.SELCT cno from sc as scx where cno not in (select cno from sc where sno!=scx.sno);//关联字查询
  • Q3:查询选修EE-1的学生的姓名
  • a.SELECT sname FROM student WHERE `SNO` IN (SELECT `SNO` from sc WHERE cno="EE-1");
  • b.select sname FROM student,sc WHERE student.`SNO`=sc.`SNO` and `CNO`="EE-1";//链接
  • c.SELECT `SNAME` FROM student  WHERE EXISTS (SELECT * from sc where sc.sno=student.`SNO`AND cno="EE-1");//使用Exists
  • Q4:查询学生的平均身高
  • SELECT AVG(`HEIGHT`) FROM student;
  • Q5:查询缺成绩的学生名和课程号
  • SELECT sname,cno FROM student JOIN sc USING(`SNO`) WHERE grade IS NULL;
  • 5.3 Group BY 和Order by的使用

  • Q1:查询CS开头的课程的平均成绩,最大成绩,最小成绩,除去成绩有NULL的科目,最终结果按照课程名进行排序
  • SELECT cno,MAX(grade),MIN(grade),avg(grade) FROM sc WHERE `CNO` LIKE "CS%" GROUP BY `CNO` HAVING `CNO` IN (SELECT `CNO` FROM sc WHERE grade is not NULL) ORDER BY `CNO` ASC;
  • 注意HAVING的条件
  • 5.4 Union的使用

  • 合并查询UNION—合并集合查询的结果(一般是同一列)
  • 关键字
    • 1.UNION       ——合并结果并去重
    • 2.UNION ALL——简单的合并结果
  • Q1:查询1983年出生的学生和选修EE专业的学生的学号
  • SELECT sno from student WHERE year(`BDATE`)="1983" UNION SELECT `SNO` FROM sc WHERE cno like "EE%";

6.Insert、update、Delete语句

  • 6.1 Insert语句

  • Insert into table(column1,coliumn2) values(values1,values2);

  • 6.2 Update语句

  • update table_name set column=value where 条件 

  • 6.3 Delete语句

  • delete from table_name where 条件  

转载于:https://www.cnblogs.com/yangyunnb/p/6407044.html

1.SQL数据定义语言(基础)相关推荐

  1. MySQL基础--(2) [SQL(结构化查询语言), DDL(数据定义语言)]

    目录 Sql(结构化查询语言) sql的概念以及特点 DDL(数据定义语言) 创建,删除,修改数据库. 数据库存储数据的特点 数据库表 数据库表中数据的数据类型 数据库表中数据的约束 创建表 设置修改 ...

  2. MySQL基础篇:数据定义语言DDL

    文章目录 1.介绍 2.操作数据库Database 创建数据库 查看有哪些数据库 删除数据库 选择数据库 查看当前正在使用哪个数据库 3.表结构的操作 查看当前数据库的所有表 创建表结构 查看表结构 ...

  3. 数据库原理与应用(SQL Server)笔记 第一章 数据定义语言和数据操纵语言

    文章目录 前言 一.基本介绍 二.在SQL里执行T-SQL语句 三.数据定义语言(DDL) (一)概述 (二)数据定义语言用于数据库 1.创建数据库 2.修改数据库 3.使用数据库 4.删除数据库 5 ...

  4. sql 两大类 DDL数据定义语言 和DCL数据控制语言

    SQL分为五大类: DDL:数据定义语言   DCL:数据控制语言     DML:数据的操纵语言  DTL:数据事务语言  DQL:数据查询语言. DDL (date definition lang ...

  5. 【SQL学习笔记】之数据定义语言(DDL)

    SQL语言的学习可以简单地分为以下五个部分: 数据查询语言(DQL):select 数据操作语言(DML):insert.update.delete 数据定义语言(DDL):create.alter. ...

  6. 【ClickHouse SQL 极简教程】ClickHouse SQL之数据定义语言 DDL

    1.1. ClickHouse SQL之数据定义语言 DDL  本节介绍 ClickHouse 中进行数据库.表结构的定义和管理. 1.1.1. 概述 在SQL中,数据定义语言( DDL ) 用来创建 ...

  7. 【数据库和SQL学习笔记】1.SQL语言的功能和特点,数据定义语言和应用,主键和外键

    本专栏是我对数据库系统和SQL语言的学习笔记分享~ 数据库系统软件:SQL Server 2019 Express(免费,初学者使用足够,足够部署小型项目) 操作系统:Windows 10 安装过程略 ...

  8. 【数据库基础知识二】数据库DataBase(简称DB),数据库基本概念、DDL:数据定义语言,用来操作数据库对象、DML:数据操作语言,用来操作表中的数据

    14天阅读挑战赛 目录 数据库基本概念 数据库DataBase(简称DB) 数据库管理系统Database management system(简称DBMS) 如何操作DBMS? 连接数据库的方式: ...

  9. Hive数据定义语言-DDL-建表基础语法(含四个实践案例)

    1. 概述 数据定义语言DDL,是SQL语言集中对数据库内部的对象结构进行创建.删除.修改等的操作语言,这些数据库对象包括database.table.view.index等. DDL核心语法由CRE ...

最新文章

  1. Softmax 函数的特点和作用是什么?
  2. Exchange DAG备份恢复(六)---通过Windows Server Backup对单个邮箱进行恢复
  3. [转]javaandroid线程池
  4. 1.SpringMVC 概述
  5. 频率主义(Frequentism)与贝叶斯主义(Bayesianism)的哲学辨异与实践(Python仿真)
  6. [转载] python中append和extend函数区别
  7. MTK modemlog分析
  8. 漏洞扫描器——nmap的使用
  9. 超实用的XRD数据定性分析方法,三分钟上手,科研小白变大神!
  10. web前端工程师工资待遇 各阶段所需要的技术
  11. 微信的Linux版本,ubuntu16.04安装微信,linux原生版
  12. base64编码和解码算法
  13. win10企业版跟win10家庭版有啥区别,win10系统各版本区别
  14. 浅谈程序员接私单那点事及接私单需要注意的问题
  15. 华为机试真题 C++ 实现【最大化控制资源成本】【100%通过率】【2022.11 Q4 新题】
  16. 创建一个xposed模块Demo
  17. 学习英语的方法(转载)
  18. el-table筛选数据
  19. 云平台SLB详细介绍和实战演练
  20. (超详细)Navicat的安装和激活,亲测有效

热门文章

  1. html可以导入MySQL吗_将数据从HTML文件(带有嵌入式JavaScript)导入MySQL数据库
  2. 操作系统开发系列—2.进入32位保护模式
  3. Hibernate openSession() 和 getCurrentSession的区别 .
  4. SDN你必须知道的十大问题——SDN有哪些开源项目
  5. tcp/ip详解--环回接口
  6. 常考数据结构与算法:找到字符串的最长无重复字符子串
  7. @RequestMapping中method的默认值是什么?
  8. 利用反射机制获取未知类型的枚举的信息
  9. Linux性能相关工具
  10. MongoDB trouble shoot sharded clusters