1.SQL 的概念
1.1什么是sql?
Structured Query Language 结构化查询语言
2.SQL 作用
1) 是一种所有关系型数据库的查询规范,不同的数据库都支持。
2) 通用的数据库操作语言,可以用在不同的数据库中。
3) 不同的数据库 SQL 语句有一些区别
3.SQL 语句分类
1) Data Definition Language (DDL 数据定义语言) 如:建库,建表
2) Data Manipulation Language(DML 数据操纵语言),如:对表中的记录操作增删改
3) Data Query Language(DQL 数据查询语言),如:对表中的查询操作
4) Data Control Language(DCL 数据控制语言),如:对用户权限的设置
4.MySQL 的语法
1) 每条语句以分号结尾,如果在 SQLyog 中不是必须加的。
2) SQL 中不区分大小写,关键字中认为大写和小写是一样的
3) 3 种注释:
注释的语法 | 说明 |
---|---|
–空格 | 单行注释 |
/* */ | 多行注释 |
# | 这是 mysql 特有的注释方式 |
2.DDL 操作数据库
一、创建数据库
1.创建数据库
CREATE DATABASE 数据库名;
CREATE DATABASE test;
2.判断数据库是否已经存在,不存在则创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
CREATE DATABASE IF NOT EXISTS test;
3.创建数据库并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET 字符集;
CREATE DATABASE db2 CHARACTER SET utf8;
二、查看数据库
– 查看所有的数据库
SHOW DATABASES;
-- 查看某个数据库的定义信息
SHOW CREATE DATABASE db1;
三、修改数据库
1.修改数据库默认的字符集
ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
ALTER DATABASE db1 CHARACTER SET gbk;
四、删除数据库
DROP DATABASE 数据库名;
DROP DATABASE db2;
五、使用数据库
1.查看正在使用的数据库;
SELECT DATABASE ();
2.使用/切换数据库
USE test;
3.DDL 操作表结构
3.1创建表的格式;
CREATE TABLE 表名 (
字段名 1 字段类型 1,
字段名 2 字段类型 2
);
CREATE TABLE student (
id INT,
NAME VARCHAR (20),
birth_day date
);
3.2查看库中所有的表
SHOW TABLES;
3.3查看表结构;
DESC student;
3.4.查看建表的sql语句
SHOW CREATE TABLE student;
3.5如何快速创建一个相同表结构的表
CREATE TABLE 新表名 LIKE 旧表名;
CREATE TABLE stu2 LIKE student;
3.6删除表
直接删除表
DROP TABLE 表名;
DROP TABLE stu2;
判断表是否存在,如果存在则删除表
DROP TABLE IF EXISTS stu2;
3.7修改表结构
添加表列 ADD
ALTER TABLE 表名 ADD 列名 类型;
ALTER TABLE student ADD addres VARCHAR (20);
3.8.修改列类型 MODIFY
ALTER TABLE 表名 MODIFY 列名 新的类型;
ALTER TABLE student MODIFY addres VARCHAR (100);
3.9.修改列名 CHANGE
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
ALTER TABLE student CHANGE addres dizhi VARCHAR (100);
4.0删除列 DROP
ALTER TABLE 表名 DROP 列名
ALTER TABLE student DROP dizhi;
4.1修改表名
RENAME TABLE 表名 TO 新表名;
RENAME TABLE student TO stu;
4.2修改字符集 character set
ALTER TABLE 表名 character set 字符集;
ALTER TABLE stu CHARACTER SET utf8;
4.DML操作表中的数据
4.1插入记录;
INSERT [INTO] 表名 [字段名] VALUES (字段值)
INSERT INTO 表名:表示往哪张表中添加数据
(字段名 1, 字段名 2, …):要给哪些字段设置值
VALUES (值 1, 值 2, …):设置具体的值
4.1.1插入全部字段;
INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3…) VALUES (值 1, 值 2, 值 3);
INSERT INTO stu VALUES (1, '柯南', '2021-08-05');
4.1.2插入部分字段
INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (值 1, 值 2, ...);
INSERT INTO stu (id, NAME) VALUES (2, '河南');
4.2蠕虫复制
什么是蠕虫复制:
将一张已经存在的表中的数据复制到另一张表中。
将表名 2 中的所有的列复制到表名 1 中
INSERT INTO 表名 1 SELECT * FROM 表名 2;
只复制部分列
INSERT INTO 表名 1(列 1, 列 2) SELECT 列 1, 列 2 FROM student;
4.3更新表记录
UPDATE 表名 SET 列名=值 [WHERE 条件表达式]
4.4删除表记录
DELETE FROM 表名 [WHERE 条件表达式]
如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
你可以在 WHERE 子句中指定任何条件
4.5使用 truncate 删除表中所有记录
TRUNCATE TABLE 表名;
truncate 和 delete 的区别:
truncate 相当于删除表的结构,再创建一张表。