SQL语言1

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

分四大类:

DDL:数据定义语言(数据库及数据库对象的创建、修改、删除)create  alter  drop

DCL:数据控制语言(权限控制)授权和收回权限 grant   revoke

DML:数据操作语言 (对数据表中的数据进行增删改操作) insert   delete   update

DQL:数据查询语言(对数据表中的数据进行查询操作)select

  1. 创建数据库

语法结构:create database [if not exists] 数据库名;

eg:

-- 创建数据库

CREATE DATABASE IF NOT EXISTS school;

-- 创建表之前一定要选择操作数据库

USE school;

2.创建表

语法结构:

CREATE TABLE 表名

(

字段名  数据类型   约束说明,

字段名  数据类型   约束说明,

......

字段名  数据类型   约束说明

);

mysql中的数据类型 :

数值类型: 整数(tinyint smallint int bigint) 浮点型(float   double )

字符类型:char(10)  varchar(10)  一个汉字占两个字节

char:固定长度类型 char(10)

varchar:可变长度类型varchar(10)

日期类型:date(yyyy-MM-dd) datetime (yyyy-MM-dd hh:mm:ss)

eg:

-- 在school数据库中创建学生表student

CREATE TABLE student

(

sid INT ,

sname VARCHAR(20),

sgender CHAR(2),

semail VARCHAR(40)

);

-- 查看表结构

DESC student;

-- 查看创建表的文本信息(源码)

SHOW CREATE TABLE student;

3.修改表结构

-- alter命令 修改

-- 如何对表结构进行修改

-- 1.向表中添加新字段

ALTER TABLE student ADD sage INT AFTER sname;-- 在表格末尾加新列

ALTER TABLE student ADD saddr VARCHAR(100) AFTER semail;-- 在指定的列后面加新列

ALTER TABLE student ADD id INT FIRST;-- 在第一个字段的前面加新列

-- 2.删除字段

ALTER TABLE student DROP id;

ALTER TABLE student DROP sage;

-- 3.修改字段

-- modify只能修改字段的属性信息,不能改名

ALTER TABLE student MODIFY sgender CHAR(20);

-- change既可以修改字段名,还可以改属性信息

ALTER TABLE student CHANGE sgender ssex CHAR(2);

-- 4.修改表名

ALTER TABLE stu RENAME student;

-- 5.修改表的编码格式

SHOW CREATE TABLE student;

ALTER TABLE student CONVERT TO CHARACTER SET 'utf8';

4.删除命令

-- 删除表

DROP TABLE 表名;

-- 删除数据库

DROP DATABASE 库名;

  • 约束

约束:为了保证表中数据的完整性,给表添加的一些限制。

完整性:准确性  正确性

数据库完整性类型:

实体完整性:行方向记录与记录之间不能出现重复数据,冗余:重复。

域完整性:列方向符合一些规范。数据类型约束、默认约束

引用完整性:限制两个表之间关系,通过外键约束来完成

自定义完整性:存储过程 和 触发器来完成。

约束类型:

  1. 主键约束:primary key (实体完整性)

一个表中最多有一个主键,作为主键的列不允许出现重复数据,同时该列自动非空。

  1. 唯一约束:unique(实体完整性)

一个表中可以有多个,设置唯一约束的列不允许出现重复数据,但是允许为空,空值最多只有一个。

  1. 非空约束:not null(域完整性),创建表的同时添加
  2. 默认值约束:default(域完整性)

设置了默认约束的列,当不给值是就用默认值填充。

  1. 外键约束:foreign key (引用完整性)

给表添加约束有两种方式,一种是在创建表的同时添加约束,另一种是先创建表结构,再通过修改表的方式给表添加约束。

方式一:创建表的同时添加约束

-- 创建班级表

CREATE TABLE grade(

gid INT PRIMARY KEY ,

gname VARCHAR(20) UNIQUE NOT NULL

);

-- 创建带有约束的表

CREATE TABLE student(

sid INT PRIMARY KEY,-- 主键约束 要求学号唯一且不允许为空

gid INT,-- 关联的班级编号,与grade表中的gid建立外键关系

sname VARCHAR(20) UNIQUE NOT NULL,-- 唯一约束 要求姓名唯一 非空约束,姓名不允许为空

sgender CHAR(2)  DEFAULT '男' NOT NULL,-- 性别的默认值是男 且不允许为空

sage INT DEFAULT 20 NOT NULL,-- 年龄默认20 且不允许为空

saddr VARCHAR(100),

FOREIGN KEY(gid) REFERENCES grade(gid)-- 外键约束 学生表的gid与班级表gid产生关联

);

-- 方式二:先创建表结构再添加约束

DROP TABLE student;

-- 创建表结构

CREATE TABLE student(

sid INT NOT NULL,

gid INT,

sname VARCHAR(40) NOT NULL,

sgender CHAR(2) NOT NULL,

sage INT NOT NULL,

saddr VARCHAR(100)

);

SHOW CREATE TABLE student;

-- 给表添加约束

-- 添加主键约束

ALTER TABLE student ADD PRIMARY KEY(sid);

-- 删除主键约束

ALTER TABLE student DROP PRIMARY KEY;

-- 添加唯一约束

ALTER TABLE student ADD UNIQUE(sname);

-- 删除唯一约束

ALTER TABLE student DROP KEY sname;

-- 添加默认约束

ALTER TABLE student ALTER sgender SET DEFAULT  '男';

-- 删除默认约束

ALTER TABLE student ALTER sgender DROP DEFAULT;

-- 添加外键约束

ALTER TABLE student ADD FOREIGN KEY (gid) REFERENCES grade(gid);

-- 删除外键约束

ALTER TABLE student DROP FOREIGN KEY student_ibfk_1;

ALTER TABLE student DROP KEY gid;

自增列:

  1. 自动增长,默认从1开始
  2. 用户插入数据时可以不给值
  3. 必须是整型才可以设置自增列
  4. 设置自增列的字段必须是主键,自增列的编号不能重复

eg:

-- 将学号sid设置为自增列

ALTER TABLE student MODIFY sid INT AUTO_INCREMENT;

-- 设置自增列的初始值

ALTER TABLE student AUTO_INCREMENT=1000;

  • DML
  1. 添加数据insert

1)insert into 表名(字段名1,字段名2,........)

values(值1,值2,......);

INSERT INTO student

VALUES(1001,1,'张三','男',23,'北京海淀区');

INSERT INTO student(gid,sname,sgender,sage,saddr)

VALUES(2,'李四',DEFAULT,24,'河北唐山');

  1. insert into 表名 set 字段名=值, 字段名=值,........

INSERT INTO student SET gid=1,sname='王五',sage=25;

  1. 多行插入

INSERT INTO student(gid,sname,sgender,sage,saddr)

VALUES

(1,'翠花','女',21,'河北保定'),

(3,'武松',DEFAULT,45,'山东梁山');

  1. 修改数据update

update 表名 set 字段名=新值,字段名=新值..... where 修改条件;

eg:

SELECT * FROM student;

UPDATE student SET saddr='北京朝阳区' WHERE sname='王五';

UPDATE student SET sname='李四四',sgender='女'

WHERE sid=1002

  1. 删除数据delete

delete from student 删除表的全部数据

delete from student where 删除条件;

eg:

DELETE FROM student WHERE gid=1;

DELETE FROM grade WHERE gid=1;

DELETE FROM student;

DELETE FROM grade;

带有主外键关系的表在添加和删除数据时需要注意的问题:

  1. 添加数据时,要先向主表中添加数据,再向子表中添加数据
  2. 删除数据时,要先删除子表的数据,再删除主表的数据

truncate 删除表的全部数据

truncate table 表名;

delete truncate区别:

  1. delete既可以根据条件删除,也可以删除全部数据,而truncate只能全删,truncate后面不能跟where 条件。
  2. delete删除数据后,表中的自增列不会从头开始,truncate删除后自增列会从头开始。
  3. delete在删除带有主外键关系的表数据时,遵循先删除子表再删除主表的原则;truncate不删除带有主外键关系的主表中的数据。
  4. 当删除全部数据时,truncate的效率会比delete高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值