MySql Basic
1.SQL概念
SQL 作⽤:
- 是⼀种所有关系型数据库的查询规范,不同的数据库都⽀持。
- 通⽤的数据库操作语⾔,可以⽤在不同的数据库中。
- 不同的数据库 SQL 语句有⼀些区别 – 称为“⽅⾔”。
SQL 语句分类:
- Data Definition Language (DDL 数据定义语⾔), 如:建库,建表
- Data Manipulation Language(DML 数据操纵语⾔),如:对表中的记录操作增删改
- Data Query Language(DQL 数据查询语⾔),如:对表中的查询操作
- Data Control Language(DCL 数据控制语⾔),如:对⽤户权限的设置
MySQL 的语法:
- 每条语句以分号结尾。
- SQL 中不区分⼤⼩写,关键字中认为⼤写和⼩写是⼀样的
- 三种注释
2.DDL操作数据库
- 创建数据库
CREATE DATABASE 数据库名;
- 判断数据库是否已经存在,不存在则创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
- 创建数据库并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET 字符集;
- 查看数据库
show databases;
- 查看某个数据库的定义信息
show create database db3;
- 修改数据库默认的字符集
ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
- 删除数据库的语法
DROP DATABASE 数据库名;
- 使⽤/切换数据库
USE 数据库名;
- ⾯试题
在 MySQL 数据库软件中,有test1、test2、test3三个数据库,登录数据库之后,输⼊语句:select database test2; 运⾏结果是什么?
这是⼀条错误的语句,如果要选中⼀个数据库,应⽤使⽤:use test2;
3.DDL操作表结构
- 创建表的格式
CREATE TABLE 表名 (
字段名 1 字段类型 1,
字段名 2 字段类型 2
);
- 关键字说明
- 常使⽤的数据类型如下
- 详细的数据类型如下
- 查看某个数据库中的所有表
SHOW TABLES;
- 查看表结构
DESC 表名;
- 查看创建表的SQL语句
SHOW CREATE TABLE 表名;
- 快速创建⼀个表结构相同的表
CREATE TABLE 新表名 LIKE 旧表名;
- 直接删除表
DROP TABLE 表名;
- 判断表是否存在,如果存在则删除表
DROP TABLE IF EXISTS 表名;
- 添加表列 ADD
ALTER TABLE 表名 ADD 列名 类型;
- 修改列类型 MODIFY
ALTER TABLE 表名 MODIFY 列名 新的类型;
- 修改列名 CHANGE
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
- 删除列 DROP
ALTER TABLE 表名 DROP 列名;
- 修改表名
RENAME TABLE 表名 TO 新表名;
- 修改字符集 character set
ALTER TABLE 表名 character set 字符集;
4.DML操作表结构
进行增删改操作
插⼊全部字段
-- 所有的字段名都写出来
INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3...) VALUES (值 1, 值 2, 值 3);
-- 不写字段名
INSERT INTO 表名 VALUES (值 1, 值 2, 值 3...);
- 插⼊部分数据
INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (值 1, 值 2, ...);
- 将表名2中的所有的列复制到表名1中
INSERT INTO 表名 1 SELECT * FROM 表名 2;
- 只复制部分列
INSERT INTO 表名 1(列 1, 列 2) SELECT 列 1, 列 2 FROM student;
- 不带条件修改数据
UPDATE 表名 SET 字段名=值; -- 修改所有的⾏
- 带条件修改数据
UPDATE 表名 SET 字段名=值 WHERE 字段名=值;
- 不带条件删除数据
DELETE FROM 表名;
- 带条件删除数据
DELETE FROM 表名 WHERE 字段名=值;
- 使⽤ truncate 删除表中所有记录
TRUNCATE TABLE 表名;
- truncate 和 delete 的区别
truncate 相当于删除表的结构,再创建⼀张表。
5.DQL操作表结构
- 查询表所有⾏和列的数据
-- 使⽤*表示所有列
SELECT * FROM 表名;
-- 查询所有的学⽣
select * from student;
- 查询指定列
-- 查询指定列的数据, 多个列之间以逗号分隔
SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;
-- 查询 student 表中的 name 和 age 列
select name,age from student;
- 使⽤关键字
使⽤别名的好处:显示的时候使⽤新的名字,并不修改表的结构。
-- 对列指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名;
-- 对列和表同时指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS 表别名;
-- 使⽤别名
select name as 姓名, age as 年龄 from student;
-- 表使⽤别名
select st.name as 姓名, age as 年龄 from student as st;
- 查询指定列并且结果不出现重复数据
SELECT DISTINCT 字段名 FROM 表名;
- 某列数据和固定值运算
SELECT 列名 1 + 固定值 FROM 表名;
SELECT 列名 1 + 列名 2 FROM 表名;
- 为什么要条件查询
如果没有查询条件,则每次查询所有的⾏。实际应⽤中,⼀般要指定查询的条件,对记录进
⾏过滤。
SELECT 字段名 FROM 表名 WHERE 条件;
- 运算符
- 逻辑运算符
6.练习
见我的上传文件